/******************************************************************************* * Copyright (c) 2009-2015 CWI * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * Jurgen J. Vinju - Jurgen.Vinju@cwi.nl - CWI * * Tijs van der Storm - Tijs.van.der.Storm@cwi.nl * * Paul Klint - Paul.Klint@cwi.nl - CWI * * Mark Hills - Mark.Hills@cwi.nl (CWI) * * Arnold Lankamp - Arnold.Lankamp@cwi.nl * * Michael Steindorfer - Michael.Steindorfer@cwi.nl - CWI *******************************************************************************/ package org.rascalmpl.ast; import org.rascalmpl.value.IConstructor; import org.rascalmpl.value.ISourceLocation; public abstract class Sym extends AbstractAST { public Sym(ISourceLocation src, IConstructor node) { super(src /* we forget node on purpose */); } public boolean hasAlternatives() { return false; } public java.util.List<org.rascalmpl.ast.Sym> getAlternatives() { throw new UnsupportedOperationException(); } public boolean hasParameters() { return false; } public java.util.List<org.rascalmpl.ast.Sym> getParameters() { throw new UnsupportedOperationException(); } public boolean hasSequence() { return false; } public java.util.List<org.rascalmpl.ast.Sym> getSequence() { throw new UnsupportedOperationException(); } public boolean hasCistring() { return false; } public org.rascalmpl.ast.CaseInsensitiveStringConstant getCistring() { throw new UnsupportedOperationException(); } public boolean hasCharClass() { return false; } public org.rascalmpl.ast.Class getCharClass() { throw new UnsupportedOperationException(); } public boolean hasColumn() { return false; } public org.rascalmpl.ast.IntegerLiteral getColumn() { throw new UnsupportedOperationException(); } public boolean hasNonterminal() { return false; } public org.rascalmpl.ast.Nonterminal getNonterminal() { throw new UnsupportedOperationException(); } public boolean hasLabel() { return false; } public org.rascalmpl.ast.NonterminalLabel getLabel() { throw new UnsupportedOperationException(); } public boolean hasString() { return false; } public org.rascalmpl.ast.StringConstant getString() { throw new UnsupportedOperationException(); } public boolean hasFirst() { return false; } public org.rascalmpl.ast.Sym getFirst() { throw new UnsupportedOperationException(); } public boolean hasMatch() { return false; } public org.rascalmpl.ast.Sym getMatch() { throw new UnsupportedOperationException(); } public boolean hasSep() { return false; } public org.rascalmpl.ast.Sym getSep() { throw new UnsupportedOperationException(); } public boolean hasSymbol() { return false; } public org.rascalmpl.ast.Sym getSymbol() { throw new UnsupportedOperationException(); } public boolean isAlternative() { return false; } static public class Alternative extends Sym { // Production: sig("Alternative",[arg("org.rascalmpl.ast.Sym","first"),arg("java.util.List\<org.rascalmpl.ast.Sym\>","alternatives")],breakable=false) private final org.rascalmpl.ast.Sym first; private final java.util.List<org.rascalmpl.ast.Sym> alternatives; public Alternative(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym first, java.util.List<org.rascalmpl.ast.Sym> alternatives) { super(src, node); this.first = first; this.alternatives = alternatives; } @Override public boolean isAlternative() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymAlternative(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = first.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { first.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : alternatives) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Alternative)) { return false; } Alternative tmp = (Alternative) o; return true && tmp.first.equals(this.first) && tmp.alternatives.equals(this.alternatives) ; } @Override public int hashCode() { return 379 + 811 * first.hashCode() + 373 * alternatives.hashCode() ; } @Override public org.rascalmpl.ast.Sym getFirst() { return this.first; } @Override public boolean hasFirst() { return true; } @Override public java.util.List<org.rascalmpl.ast.Sym> getAlternatives() { return this.alternatives; } @Override public boolean hasAlternatives() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(first), clone(alternatives)); } } public boolean isCaseInsensitiveLiteral() { return false; } static public class CaseInsensitiveLiteral extends Sym { // Production: sig("CaseInsensitiveLiteral",[arg("org.rascalmpl.ast.CaseInsensitiveStringConstant","cistring")],breakable=false) private final org.rascalmpl.ast.CaseInsensitiveStringConstant cistring; public CaseInsensitiveLiteral(ISourceLocation src, IConstructor node , org.rascalmpl.ast.CaseInsensitiveStringConstant cistring) { super(src, node); this.cistring = cistring; } @Override public boolean isCaseInsensitiveLiteral() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymCaseInsensitiveLiteral(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = cistring.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { cistring.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof CaseInsensitiveLiteral)) { return false; } CaseInsensitiveLiteral tmp = (CaseInsensitiveLiteral) o; return true && tmp.cistring.equals(this.cistring) ; } @Override public int hashCode() { return 83 + 71 * cistring.hashCode() ; } @Override public org.rascalmpl.ast.CaseInsensitiveStringConstant getCistring() { return this.cistring; } @Override public boolean hasCistring() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(cistring)); } } public boolean isCharacterClass() { return false; } static public class CharacterClass extends Sym { // Production: sig("CharacterClass",[arg("org.rascalmpl.ast.Class","charClass")],breakable=false) private final org.rascalmpl.ast.Class charClass; public CharacterClass(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Class charClass) { super(src, node); this.charClass = charClass; } @Override public boolean isCharacterClass() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymCharacterClass(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = charClass.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { charClass.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof CharacterClass)) { return false; } CharacterClass tmp = (CharacterClass) o; return true && tmp.charClass.equals(this.charClass) ; } @Override public int hashCode() { return 683 + 839 * charClass.hashCode() ; } @Override public org.rascalmpl.ast.Class getCharClass() { return this.charClass; } @Override public boolean hasCharClass() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(charClass)); } } public boolean isColumn() { return false; } static public class Column extends Sym { // Production: sig("Column",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.IntegerLiteral","column")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.IntegerLiteral column; public Column(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.IntegerLiteral column) { super(src, node); this.symbol = symbol; this.column = column; } @Override public boolean isColumn() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymColumn(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = column.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { column.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Column)) { return false; } Column tmp = (Column) o; return true && tmp.symbol.equals(this.symbol) && tmp.column.equals(this.column) ; } @Override public int hashCode() { return 577 + 41 * symbol.hashCode() + 809 * column.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.IntegerLiteral getColumn() { return this.column; } @Override public boolean hasColumn() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(column)); } } public boolean isEmpty() { return false; } static public class Empty extends Sym { // Production: sig("Empty",[],breakable=false) public Empty(ISourceLocation src, IConstructor node ) { super(src, node); } @Override public boolean isEmpty() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymEmpty(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; } @Override public boolean equals(Object o) { if (!(o instanceof Empty)) { return false; } Empty tmp = (Empty) o; return true ; } @Override public int hashCode() { return 821 ; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null ); } } public boolean isEndOfLine() { return false; } static public class EndOfLine extends Sym { // Production: sig("EndOfLine",[arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym symbol; public EndOfLine(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol) { super(src, node); this.symbol = symbol; } @Override public boolean isEndOfLine() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymEndOfLine(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof EndOfLine)) { return false; } EndOfLine tmp = (EndOfLine) o; return true && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 821 + 59 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol)); } } public boolean isExcept() { return false; } static public class Except extends Sym { // Production: sig("Except",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.NonterminalLabel","label")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.NonterminalLabel label; public Except(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.NonterminalLabel label) { super(src, node); this.symbol = symbol; this.label = label; } @Override public boolean isExcept() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymExcept(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = label.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { label.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Except)) { return false; } Except tmp = (Except) o; return true && tmp.symbol.equals(this.symbol) && tmp.label.equals(this.label) ; } @Override public int hashCode() { return 139 + 233 * symbol.hashCode() + 331 * label.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.NonterminalLabel getLabel() { return this.label; } @Override public boolean hasLabel() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(label)); } } public boolean isFollow() { return false; } static public class Follow extends Sym { // Production: sig("Follow",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.Sym","match")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.Sym match; public Follow(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.Sym match) { super(src, node); this.symbol = symbol; this.match = match; } @Override public boolean isFollow() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymFollow(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = match.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { match.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Follow)) { return false; } Follow tmp = (Follow) o; return true && tmp.symbol.equals(this.symbol) && tmp.match.equals(this.match) ; } @Override public int hashCode() { return 359 + 151 * symbol.hashCode() + 311 * match.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.Sym getMatch() { return this.match; } @Override public boolean hasMatch() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(match)); } } public boolean isIter() { return false; } static public class Iter extends Sym { // Production: sig("Iter",[arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym symbol; public Iter(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol) { super(src, node); this.symbol = symbol; } @Override public boolean isIter() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymIter(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Iter)) { return false; } Iter tmp = (Iter) o; return true && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 73 + 619 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol)); } } public boolean isIterSep() { return false; } static public class IterSep extends Sym { // Production: sig("IterSep",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.Sym","sep")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.Sym sep; public IterSep(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.Sym sep) { super(src, node); this.symbol = symbol; this.sep = sep; } @Override public boolean isIterSep() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymIterSep(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = sep.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { sep.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof IterSep)) { return false; } IterSep tmp = (IterSep) o; return true && tmp.symbol.equals(this.symbol) && tmp.sep.equals(this.sep) ; } @Override public int hashCode() { return 5 + 191 * symbol.hashCode() + 467 * sep.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.Sym getSep() { return this.sep; } @Override public boolean hasSep() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(sep)); } } public boolean isIterStar() { return false; } static public class IterStar extends Sym { // Production: sig("IterStar",[arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym symbol; public IterStar(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol) { super(src, node); this.symbol = symbol; } @Override public boolean isIterStar() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymIterStar(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof IterStar)) { return false; } IterStar tmp = (IterStar) o; return true && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 149 + 19 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol)); } } public boolean isIterStarSep() { return false; } static public class IterStarSep extends Sym { // Production: sig("IterStarSep",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.Sym","sep")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.Sym sep; public IterStarSep(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.Sym sep) { super(src, node); this.symbol = symbol; this.sep = sep; } @Override public boolean isIterStarSep() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymIterStarSep(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = sep.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { sep.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof IterStarSep)) { return false; } IterStarSep tmp = (IterStarSep) o; return true && tmp.symbol.equals(this.symbol) && tmp.sep.equals(this.sep) ; } @Override public int hashCode() { return 761 + 89 * symbol.hashCode() + 587 * sep.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.Sym getSep() { return this.sep; } @Override public boolean hasSep() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(sep)); } } public boolean isLabeled() { return false; } static public class Labeled extends Sym { // Production: sig("Labeled",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.NonterminalLabel","label")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.NonterminalLabel label; public Labeled(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.NonterminalLabel label) { super(src, node); this.symbol = symbol; this.label = label; } @Override public boolean isLabeled() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymLabeled(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = label.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { label.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Labeled)) { return false; } Labeled tmp = (Labeled) o; return true && tmp.symbol.equals(this.symbol) && tmp.label.equals(this.label) ; } @Override public int hashCode() { return 67 + 191 * symbol.hashCode() + 577 * label.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.NonterminalLabel getLabel() { return this.label; } @Override public boolean hasLabel() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(label)); } } public boolean isLiteral() { return false; } static public class Literal extends Sym { // Production: sig("Literal",[arg("org.rascalmpl.ast.StringConstant","string")],breakable=false) private final org.rascalmpl.ast.StringConstant string; public Literal(ISourceLocation src, IConstructor node , org.rascalmpl.ast.StringConstant string) { super(src, node); this.string = string; } @Override public boolean isLiteral() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymLiteral(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = string.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { string.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Literal)) { return false; } Literal tmp = (Literal) o; return true && tmp.string.equals(this.string) ; } @Override public int hashCode() { return 263 + 647 * string.hashCode() ; } @Override public org.rascalmpl.ast.StringConstant getString() { return this.string; } @Override public boolean hasString() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(string)); } } public boolean isNonterminal() { return false; } static public class Nonterminal extends Sym { // Production: sig("Nonterminal",[arg("org.rascalmpl.ast.Nonterminal","nonterminal")],breakable=false) private final org.rascalmpl.ast.Nonterminal nonterminal; public Nonterminal(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Nonterminal nonterminal) { super(src, node); this.nonterminal = nonterminal; } @Override public boolean isNonterminal() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymNonterminal(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = nonterminal.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { nonterminal.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Nonterminal)) { return false; } Nonterminal tmp = (Nonterminal) o; return true && tmp.nonterminal.equals(this.nonterminal) ; } @Override public int hashCode() { return 991 + 409 * nonterminal.hashCode() ; } @Override public org.rascalmpl.ast.Nonterminal getNonterminal() { return this.nonterminal; } @Override public boolean hasNonterminal() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(nonterminal)); } } public boolean isNotFollow() { return false; } static public class NotFollow extends Sym { // Production: sig("NotFollow",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.Sym","match")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.Sym match; public NotFollow(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.Sym match) { super(src, node); this.symbol = symbol; this.match = match; } @Override public boolean isNotFollow() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymNotFollow(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = match.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { match.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof NotFollow)) { return false; } NotFollow tmp = (NotFollow) o; return true && tmp.symbol.equals(this.symbol) && tmp.match.equals(this.match) ; } @Override public int hashCode() { return 907 + 89 * symbol.hashCode() + 347 * match.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.Sym getMatch() { return this.match; } @Override public boolean hasMatch() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(match)); } } public boolean isNotPrecede() { return false; } static public class NotPrecede extends Sym { // Production: sig("NotPrecede",[arg("org.rascalmpl.ast.Sym","match"),arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym match; private final org.rascalmpl.ast.Sym symbol; public NotPrecede(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym match, org.rascalmpl.ast.Sym symbol) { super(src, node); this.match = match; this.symbol = symbol; } @Override public boolean isNotPrecede() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymNotPrecede(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = match.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { match.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof NotPrecede)) { return false; } NotPrecede tmp = (NotPrecede) o; return true && tmp.match.equals(this.match) && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 509 + 151 * match.hashCode() + 599 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getMatch() { return this.match; } @Override public boolean hasMatch() { return true; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(match), clone(symbol)); } } public boolean isOptional() { return false; } static public class Optional extends Sym { // Production: sig("Optional",[arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym symbol; public Optional(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol) { super(src, node); this.symbol = symbol; } @Override public boolean isOptional() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymOptional(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Optional)) { return false; } Optional tmp = (Optional) o; return true && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 29 + 941 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol)); } } public boolean isParameter() { return false; } static public class Parameter extends Sym { // Production: sig("Parameter",[arg("org.rascalmpl.ast.Nonterminal","nonterminal")],breakable=false) private final org.rascalmpl.ast.Nonterminal nonterminal; public Parameter(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Nonterminal nonterminal) { super(src, node); this.nonterminal = nonterminal; } @Override public boolean isParameter() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymParameter(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = nonterminal.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { nonterminal.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Parameter)) { return false; } Parameter tmp = (Parameter) o; return true && tmp.nonterminal.equals(this.nonterminal) ; } @Override public int hashCode() { return 103 + 67 * nonterminal.hashCode() ; } @Override public org.rascalmpl.ast.Nonterminal getNonterminal() { return this.nonterminal; } @Override public boolean hasNonterminal() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(nonterminal)); } } public boolean isParametrized() { return false; } static public class Parametrized extends Sym { // Production: sig("Parametrized",[arg("org.rascalmpl.ast.Nonterminal","nonterminal"),arg("java.util.List\<org.rascalmpl.ast.Sym\>","parameters")],breakable=false) private final org.rascalmpl.ast.Nonterminal nonterminal; private final java.util.List<org.rascalmpl.ast.Sym> parameters; public Parametrized(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Nonterminal nonterminal, java.util.List<org.rascalmpl.ast.Sym> parameters) { super(src, node); this.nonterminal = nonterminal; this.parameters = parameters; } @Override public boolean isParametrized() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymParametrized(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = nonterminal.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { nonterminal.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : parameters) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Parametrized)) { return false; } Parametrized tmp = (Parametrized) o; return true && tmp.nonterminal.equals(this.nonterminal) && tmp.parameters.equals(this.parameters) ; } @Override public int hashCode() { return 769 + 149 * nonterminal.hashCode() + 541 * parameters.hashCode() ; } @Override public org.rascalmpl.ast.Nonterminal getNonterminal() { return this.nonterminal; } @Override public boolean hasNonterminal() { return true; } @Override public java.util.List<org.rascalmpl.ast.Sym> getParameters() { return this.parameters; } @Override public boolean hasParameters() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(nonterminal), clone(parameters)); } } public boolean isPrecede() { return false; } static public class Precede extends Sym { // Production: sig("Precede",[arg("org.rascalmpl.ast.Sym","match"),arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym match; private final org.rascalmpl.ast.Sym symbol; public Precede(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym match, org.rascalmpl.ast.Sym symbol) { super(src, node); this.match = match; this.symbol = symbol; } @Override public boolean isPrecede() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymPrecede(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = match.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { match.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Precede)) { return false; } Precede tmp = (Precede) o; return true && tmp.match.equals(this.match) && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 353 + 23 * match.hashCode() + 787 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getMatch() { return this.match; } @Override public boolean hasMatch() { return true; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(match), clone(symbol)); } } public boolean isSequence() { return false; } static public class Sequence extends Sym { // Production: sig("Sequence",[arg("org.rascalmpl.ast.Sym","first"),arg("java.util.List\<org.rascalmpl.ast.Sym\>","sequence")],breakable=false) private final org.rascalmpl.ast.Sym first; private final java.util.List<org.rascalmpl.ast.Sym> sequence; public Sequence(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym first, java.util.List<org.rascalmpl.ast.Sym> sequence) { super(src, node); this.first = first; this.sequence = sequence; } @Override public boolean isSequence() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymSequence(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = first.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { first.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : sequence) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Sequence)) { return false; } Sequence tmp = (Sequence) o; return true && tmp.first.equals(this.first) && tmp.sequence.equals(this.sequence) ; } @Override public int hashCode() { return 863 + 557 * first.hashCode() + 61 * sequence.hashCode() ; } @Override public org.rascalmpl.ast.Sym getFirst() { return this.first; } @Override public boolean hasFirst() { return true; } @Override public java.util.List<org.rascalmpl.ast.Sym> getSequence() { return this.sequence; } @Override public boolean hasSequence() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(first), clone(sequence)); } } public boolean isStart() { return false; } static public class Start extends Sym { // Production: sig("Start",[arg("org.rascalmpl.ast.Nonterminal","nonterminal")],breakable=false) private final org.rascalmpl.ast.Nonterminal nonterminal; public Start(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Nonterminal nonterminal) { super(src, node); this.nonterminal = nonterminal; } @Override public boolean isStart() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymStart(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = nonterminal.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { nonterminal.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Start)) { return false; } Start tmp = (Start) o; return true && tmp.nonterminal.equals(this.nonterminal) ; } @Override public int hashCode() { return 281 + 263 * nonterminal.hashCode() ; } @Override public org.rascalmpl.ast.Nonterminal getNonterminal() { return this.nonterminal; } @Override public boolean hasNonterminal() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(nonterminal)); } } public boolean isStartOfLine() { return false; } static public class StartOfLine extends Sym { // Production: sig("StartOfLine",[arg("org.rascalmpl.ast.Sym","symbol")],breakable=false) private final org.rascalmpl.ast.Sym symbol; public StartOfLine(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol) { super(src, node); this.symbol = symbol; } @Override public boolean isStartOfLine() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymStartOfLine(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof StartOfLine)) { return false; } StartOfLine tmp = (StartOfLine) o; return true && tmp.symbol.equals(this.symbol) ; } @Override public int hashCode() { return 19 + 61 * symbol.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol)); } } public boolean isUnequal() { return false; } static public class Unequal extends Sym { // Production: sig("Unequal",[arg("org.rascalmpl.ast.Sym","symbol"),arg("org.rascalmpl.ast.Sym","match")],breakable=false) private final org.rascalmpl.ast.Sym symbol; private final org.rascalmpl.ast.Sym match; public Unequal(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Sym symbol, org.rascalmpl.ast.Sym match) { super(src, node); this.symbol = symbol; this.match = match; } @Override public boolean isUnequal() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitSymUnequal(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = match.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { match.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Unequal)) { return false; } Unequal tmp = (Unequal) o; return true && tmp.symbol.equals(this.symbol) && tmp.match.equals(this.match) ; } @Override public int hashCode() { return 241 + 409 * symbol.hashCode() + 443 * match.hashCode() ; } @Override public org.rascalmpl.ast.Sym getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.Sym getMatch() { return this.match; } @Override public boolean hasMatch() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(match)); } } }