From b324cf25981a7d2112e34378912d96a496e0d103 Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Wed, 20 Apr 2022 11:24:36 +0200 Subject: [PATCH] Reimplement clone methods using copy constructors This ensures that superclass fields are copied correctly, most importantly node position info, which was previously lost when cloning. --- .../stups/sablecc/patch/PositionedNode.java | 13 ++++ .../java/org/sablecc/sablecc/GenAlts.java | 6 +- .../java/org/sablecc/sablecc/node/AAlt.java | 13 ++-- .../sablecc/sablecc/node/AAltTransform.java | 13 ++-- .../java/org/sablecc/sablecc/node/AAst.java | 9 ++- .../org/sablecc/sablecc/node/AAstAlt.java | 11 +++- .../org/sablecc/sablecc/node/AAstProd.java | 11 +++- .../org/sablecc/sablecc/node/ACharBasic.java | 9 ++- .../org/sablecc/sablecc/node/ACharChar.java | 9 ++- .../org/sablecc/sablecc/node/AConcat.java | 9 ++- .../org/sablecc/sablecc/node/ADecChar.java | 9 ++- .../java/org/sablecc/sablecc/node/AElem.java | 15 +++-- .../org/sablecc/sablecc/node/AGrammar.java | 21 ++++--- .../org/sablecc/sablecc/node/AHelperDef.java | 11 +++- .../org/sablecc/sablecc/node/AHelpers.java | 9 ++- .../org/sablecc/sablecc/node/AHexChar.java | 9 ++- .../org/sablecc/sablecc/node/AIdBasic.java | 9 ++- .../org/sablecc/sablecc/node/AIgnTokens.java | 9 ++- .../sablecc/sablecc/node/AIntervalSet.java | 11 +++- .../org/sablecc/sablecc/node/AListTerm.java | 11 +++- .../org/sablecc/sablecc/node/AMinusBinOp.java | 7 ++- .../sablecc/sablecc/node/ANewListTerm.java | 13 ++-- .../org/sablecc/sablecc/node/ANewTerm.java | 13 ++-- .../org/sablecc/sablecc/node/ANullTerm.java | 7 ++- .../sablecc/sablecc/node/AOperationSet.java | 13 ++-- .../org/sablecc/sablecc/node/APlusBinOp.java | 7 ++- .../org/sablecc/sablecc/node/APlusUnOp.java | 9 ++- .../java/org/sablecc/sablecc/node/AProd.java | 15 +++-- .../org/sablecc/sablecc/node/AProdName.java | 11 +++- .../sablecc/node/AProductionSpecifier.java | 7 ++- .../sablecc/sablecc/node/AProductions.java | 9 ++- .../org/sablecc/sablecc/node/AQMarkUnOp.java | 9 ++- .../org/sablecc/sablecc/node/ARegExp.java | 9 ++- .../sablecc/sablecc/node/ARegExpBasic.java | 9 ++- .../org/sablecc/sablecc/node/ASetBasic.java | 9 ++- .../sablecc/sablecc/node/ASimpleListTerm.java | 13 ++-- .../org/sablecc/sablecc/node/ASimpleTerm.java | 13 ++-- .../org/sablecc/sablecc/node/AStarUnOp.java | 9 ++- .../org/sablecc/sablecc/node/AStateList.java | 13 ++-- .../sablecc/sablecc/node/AStateListTail.java | 11 +++- .../org/sablecc/sablecc/node/AStates.java | 9 ++- .../sablecc/sablecc/node/AStringBasic.java | 9 ++- .../org/sablecc/sablecc/node/ATokenDef.java | 17 ++++-- .../sablecc/sablecc/node/ATokenSpecifier.java | 7 ++- .../org/sablecc/sablecc/node/ATokens.java | 9 ++- .../org/sablecc/sablecc/node/ATransition.java | 9 ++- .../java/org/sablecc/sablecc/node/AUnExp.java | 11 +++- .../java/org/sablecc/sablecc/node/EOF.java | 13 ++-- .../java/org/sablecc/sablecc/node/Node.java | 11 ++++ .../java/org/sablecc/sablecc/node/PAlt.java | 8 +++ .../sablecc/sablecc/node/PAltTransform.java | 8 +++ .../java/org/sablecc/sablecc/node/PAst.java | 8 +++ .../org/sablecc/sablecc/node/PAstAlt.java | 8 +++ .../org/sablecc/sablecc/node/PAstProd.java | 8 +++ .../java/org/sablecc/sablecc/node/PBasic.java | 8 +++ .../java/org/sablecc/sablecc/node/PBinOp.java | 8 +++ .../java/org/sablecc/sablecc/node/PChar.java | 8 +++ .../org/sablecc/sablecc/node/PConcat.java | 8 +++ .../java/org/sablecc/sablecc/node/PElem.java | 8 +++ .../org/sablecc/sablecc/node/PGrammar.java | 8 +++ .../org/sablecc/sablecc/node/PHelperDef.java | 8 +++ .../org/sablecc/sablecc/node/PHelpers.java | 8 +++ .../org/sablecc/sablecc/node/PIgnTokens.java | 8 +++ .../org/sablecc/sablecc/node/PListTerm.java | 8 +++ .../java/org/sablecc/sablecc/node/PProd.java | 8 +++ .../org/sablecc/sablecc/node/PProdName.java | 8 +++ .../sablecc/sablecc/node/PProductions.java | 8 +++ .../org/sablecc/sablecc/node/PRegExp.java | 8 +++ .../java/org/sablecc/sablecc/node/PSet.java | 8 +++ .../org/sablecc/sablecc/node/PSpecifier.java | 8 +++ .../org/sablecc/sablecc/node/PStateList.java | 8 +++ .../sablecc/sablecc/node/PStateListTail.java | 8 +++ .../org/sablecc/sablecc/node/PStates.java | 8 +++ .../java/org/sablecc/sablecc/node/PTerm.java | 8 +++ .../org/sablecc/sablecc/node/PTokenDef.java | 8 +++ .../org/sablecc/sablecc/node/PTokens.java | 8 +++ .../org/sablecc/sablecc/node/PTransition.java | 8 +++ .../java/org/sablecc/sablecc/node/PUnExp.java | 8 +++ .../java/org/sablecc/sablecc/node/PUnOp.java | 8 +++ .../java/org/sablecc/sablecc/node/Start.java | 11 +++- .../org/sablecc/sablecc/node/TAbstract.java | 13 ++-- .../java/org/sablecc/sablecc/node/TArrow.java | 13 ++-- .../java/org/sablecc/sablecc/node/TBar.java | 13 ++-- .../java/org/sablecc/sablecc/node/TBlank.java | 13 ++-- .../java/org/sablecc/sablecc/node/TChar.java | 13 ++-- .../java/org/sablecc/sablecc/node/TColon.java | 13 ++-- .../java/org/sablecc/sablecc/node/TComma.java | 13 ++-- .../org/sablecc/sablecc/node/TComment.java | 13 ++-- .../java/org/sablecc/sablecc/node/TDDot.java | 13 ++-- .../org/sablecc/sablecc/node/TDecChar.java | 13 ++-- .../java/org/sablecc/sablecc/node/TDot.java | 13 ++-- .../java/org/sablecc/sablecc/node/TEqual.java | 13 ++-- .../org/sablecc/sablecc/node/THelpers.java | 13 ++-- .../org/sablecc/sablecc/node/THexChar.java | 13 ++-- .../java/org/sablecc/sablecc/node/TId.java | 13 ++-- .../org/sablecc/sablecc/node/TIgnored.java | 13 ++-- .../java/org/sablecc/sablecc/node/TLBkt.java | 13 ++-- .../org/sablecc/sablecc/node/TLBrace.java | 13 ++-- .../java/org/sablecc/sablecc/node/TLPar.java | 13 ++-- .../java/org/sablecc/sablecc/node/TMinus.java | 13 ++-- .../java/org/sablecc/sablecc/node/TNew.java | 13 ++-- .../java/org/sablecc/sablecc/node/TNull.java | 13 ++-- .../org/sablecc/sablecc/node/TPackage.java | 13 ++-- .../java/org/sablecc/sablecc/node/TPkgId.java | 13 ++-- .../java/org/sablecc/sablecc/node/TPlus.java | 13 ++-- .../sablecc/node/TProductionSpecifier.java | 13 ++-- .../sablecc/sablecc/node/TProductions.java | 13 ++-- .../java/org/sablecc/sablecc/node/TQMark.java | 13 ++-- .../java/org/sablecc/sablecc/node/TRBkt.java | 13 ++-- .../org/sablecc/sablecc/node/TRBrace.java | 13 ++-- .../java/org/sablecc/sablecc/node/TRPar.java | 13 ++-- .../org/sablecc/sablecc/node/TSemicolon.java | 13 ++-- .../java/org/sablecc/sablecc/node/TSlash.java | 13 ++-- .../java/org/sablecc/sablecc/node/TStar.java | 13 ++-- .../org/sablecc/sablecc/node/TStates.java | 13 ++-- .../org/sablecc/sablecc/node/TString.java | 13 ++-- .../org/sablecc/sablecc/node/TSyntax.java | 13 ++-- .../sablecc/sablecc/node/TTokenSpecifier.java | 13 ++-- .../org/sablecc/sablecc/node/TTokens.java | 13 ++-- .../java/org/sablecc/sablecc/node/TTree.java | 13 ++-- .../java/org/sablecc/sablecc/node/Token.java | 25 ++++++++ .../org/sablecc/sablecc/alternatives.txt | 17 ++++-- .../org/sablecc/sablecc/productions.txt | 8 +++ .../resources/org/sablecc/sablecc/tokens.txt | 26 ++++---- .../resources/org/sablecc/sablecc/utils.txt | 60 ++++++++++++++++--- 125 files changed, 1065 insertions(+), 360 deletions(-) diff --git a/sablecc-runtime/src/main/java/de/hhu/stups/sablecc/patch/PositionedNode.java b/sablecc-runtime/src/main/java/de/hhu/stups/sablecc/patch/PositionedNode.java index d26abd4..574d0e9 100644 --- a/sablecc-runtime/src/main/java/de/hhu/stups/sablecc/patch/PositionedNode.java +++ b/sablecc-runtime/src/main/java/de/hhu/stups/sablecc/patch/PositionedNode.java @@ -10,6 +10,19 @@ public class PositionedNode { private SourcePosition startPos; private SourcePosition endPos; + public PositionedNode(final SourcePosition startPos, final SourcePosition endPos) { + this.startPos = startPos; + this.endPos = endPos; + } + + public PositionedNode() { + this(null, null); + } + + public PositionedNode(final PositionedNode node) { + this(node.startPos, node.endPos); + } + public SourcePosition getStartPos() { /* * Special treatment for tokens because they don't get a position in the diff --git a/src/main/java/org/sablecc/sablecc/GenAlts.java b/src/main/java/org/sablecc/sablecc/GenAlts.java index 3edc043..8d92b5f 100644 --- a/src/main/java/org/sablecc/sablecc/GenAlts.java +++ b/src/main/java/org/sablecc/sablecc/GenAlts.java @@ -247,20 +247,20 @@ public class GenAlts extends DepthFirstAdapter case ElemInfo.NONE: { macros.apply(file, "CloneBodyNode", - new String[] {info.type, nodeName(info.name), i.hasNext() ? "," : ""}); + new String[] {info.name, nodeName(info.name)}); } break; case ElemInfo.STAR: case ElemInfo.PLUS: { macros.apply(file, "CloneBodyList", - new String[] {nodeName(info.name), i.hasNext() ? "," : ""}); + new String[] {info.name, nodeName(info.name)}); } break; } } - macros.apply(file, "CloneTail", null); + macros.apply(file, "CloneTail", new String[] {name}); macros.apply(file, "Apply", new String[] {name}); diff --git a/src/main/java/org/sablecc/sablecc/node/AAlt.java b/src/main/java/org/sablecc/sablecc/node/AAlt.java index 2d7f69f..144ab37 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAlt.java +++ b/src/main/java/org/sablecc/sablecc/node/AAlt.java @@ -31,13 +31,18 @@ public final class AAlt extends PAlt } + public AAlt(AAlt node) + { + super(node); + setAltName(cloneNode(node._altName_)); + setElems(cloneList(node._elems_)); + setAltTransform(cloneNode(node._altTransform_)); + } + @Override public AAlt clone() { - return new AAlt( - cloneNode(this._altName_), - cloneList(this._elems_), - cloneNode(this._altTransform_)); + return new AAlt(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AAltTransform.java b/src/main/java/org/sablecc/sablecc/node/AAltTransform.java index 1693eda..16c9d4d 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAltTransform.java +++ b/src/main/java/org/sablecc/sablecc/node/AAltTransform.java @@ -31,13 +31,18 @@ public final class AAltTransform extends PAltTransform } + public AAltTransform(AAltTransform node) + { + super(node); + setLBrace(cloneNode(node._lBrace_)); + setTerms(cloneList(node._terms_)); + setRBrace(cloneNode(node._rBrace_)); + } + @Override public AAltTransform clone() { - return new AAltTransform( - cloneNode(this._lBrace_), - cloneList(this._terms_), - cloneNode(this._rBrace_)); + return new AAltTransform(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AAst.java b/src/main/java/org/sablecc/sablecc/node/AAst.java index ae6e7e3..c5002df 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAst.java +++ b/src/main/java/org/sablecc/sablecc/node/AAst.java @@ -23,11 +23,16 @@ public final class AAst extends PAst } + public AAst(AAst node) + { + super(node); + setProds(cloneList(node._prods_)); + } + @Override public AAst clone() { - return new AAst( - cloneList(this._prods_)); + return new AAst(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AAstAlt.java b/src/main/java/org/sablecc/sablecc/node/AAstAlt.java index e847561..ade7c7e 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAstAlt.java +++ b/src/main/java/org/sablecc/sablecc/node/AAstAlt.java @@ -27,12 +27,17 @@ public final class AAstAlt extends PAstAlt } + public AAstAlt(AAstAlt node) + { + super(node); + setAltName(cloneNode(node._altName_)); + setElems(cloneList(node._elems_)); + } + @Override public AAstAlt clone() { - return new AAstAlt( - cloneNode(this._altName_), - cloneList(this._elems_)); + return new AAstAlt(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AAstProd.java b/src/main/java/org/sablecc/sablecc/node/AAstProd.java index a261769f..bf451c6 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAstProd.java +++ b/src/main/java/org/sablecc/sablecc/node/AAstProd.java @@ -27,12 +27,17 @@ public final class AAstProd extends PAstProd } + public AAstProd(AAstProd node) + { + super(node); + setId(cloneNode(node._id_)); + setAlts(cloneList(node._alts_)); + } + @Override public AAstProd clone() { - return new AAstProd( - cloneNode(this._id_), - cloneList(this._alts_)); + return new AAstProd(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ACharBasic.java b/src/main/java/org/sablecc/sablecc/node/ACharBasic.java index c4d4d2a..e2c2c29 100644 --- a/src/main/java/org/sablecc/sablecc/node/ACharBasic.java +++ b/src/main/java/org/sablecc/sablecc/node/ACharBasic.java @@ -22,11 +22,16 @@ public final class ACharBasic extends PBasic } + public ACharBasic(ACharBasic node) + { + super(node); + setChar(cloneNode(node._char_)); + } + @Override public ACharBasic clone() { - return new ACharBasic( - cloneNode(this._char_)); + return new ACharBasic(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ACharChar.java b/src/main/java/org/sablecc/sablecc/node/ACharChar.java index 37a29b8..c843556 100644 --- a/src/main/java/org/sablecc/sablecc/node/ACharChar.java +++ b/src/main/java/org/sablecc/sablecc/node/ACharChar.java @@ -22,11 +22,16 @@ public final class ACharChar extends PChar } + public ACharChar(ACharChar node) + { + super(node); + setChar(cloneNode(node._char_)); + } + @Override public ACharChar clone() { - return new ACharChar( - cloneNode(this._char_)); + return new ACharChar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AConcat.java b/src/main/java/org/sablecc/sablecc/node/AConcat.java index 9b5977a..a3c666d 100644 --- a/src/main/java/org/sablecc/sablecc/node/AConcat.java +++ b/src/main/java/org/sablecc/sablecc/node/AConcat.java @@ -23,11 +23,16 @@ public final class AConcat extends PConcat } + public AConcat(AConcat node) + { + super(node); + setUnExps(cloneList(node._unExps_)); + } + @Override public AConcat clone() { - return new AConcat( - cloneList(this._unExps_)); + return new AConcat(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ADecChar.java b/src/main/java/org/sablecc/sablecc/node/ADecChar.java index 92025a2..31c5033 100644 --- a/src/main/java/org/sablecc/sablecc/node/ADecChar.java +++ b/src/main/java/org/sablecc/sablecc/node/ADecChar.java @@ -22,11 +22,16 @@ public final class ADecChar extends PChar } + public ADecChar(ADecChar node) + { + super(node); + setDecChar(cloneNode(node._decChar_)); + } + @Override public ADecChar clone() { - return new ADecChar( - cloneNode(this._decChar_)); + return new ADecChar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AElem.java b/src/main/java/org/sablecc/sablecc/node/AElem.java index 9b1daba..70985fa 100644 --- a/src/main/java/org/sablecc/sablecc/node/AElem.java +++ b/src/main/java/org/sablecc/sablecc/node/AElem.java @@ -34,14 +34,19 @@ public final class AElem extends PElem } + public AElem(AElem node) + { + super(node); + setElemName(cloneNode(node._elemName_)); + setSpecifier(cloneNode(node._specifier_)); + setId(cloneNode(node._id_)); + setUnOp(cloneNode(node._unOp_)); + } + @Override public AElem clone() { - return new AElem( - cloneNode(this._elemName_), - cloneNode(this._specifier_), - cloneNode(this._id_), - cloneNode(this._unOp_)); + return new AElem(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AGrammar.java b/src/main/java/org/sablecc/sablecc/node/AGrammar.java index 9a3c3b4..1408be1 100644 --- a/src/main/java/org/sablecc/sablecc/node/AGrammar.java +++ b/src/main/java/org/sablecc/sablecc/node/AGrammar.java @@ -47,17 +47,22 @@ public final class AGrammar extends PGrammar } + public AGrammar(AGrammar node) + { + super(node); + setPackage(cloneList(node._package_)); + setHelpers(cloneNode(node._helpers_)); + setStates(cloneNode(node._states_)); + setTokens(cloneNode(node._tokens_)); + setIgnTokens(cloneNode(node._ignTokens_)); + setProductions(cloneNode(node._productions_)); + setAst(cloneNode(node._ast_)); + } + @Override public AGrammar clone() { - return new AGrammar( - cloneList(this._package_), - cloneNode(this._helpers_), - cloneNode(this._states_), - cloneNode(this._tokens_), - cloneNode(this._ignTokens_), - cloneNode(this._productions_), - cloneNode(this._ast_)); + return new AGrammar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AHelperDef.java b/src/main/java/org/sablecc/sablecc/node/AHelperDef.java index 9b9a773..872f966 100644 --- a/src/main/java/org/sablecc/sablecc/node/AHelperDef.java +++ b/src/main/java/org/sablecc/sablecc/node/AHelperDef.java @@ -26,12 +26,17 @@ public final class AHelperDef extends PHelperDef } + public AHelperDef(AHelperDef node) + { + super(node); + setId(cloneNode(node._id_)); + setRegExp(cloneNode(node._regExp_)); + } + @Override public AHelperDef clone() { - return new AHelperDef( - cloneNode(this._id_), - cloneNode(this._regExp_)); + return new AHelperDef(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AHelpers.java b/src/main/java/org/sablecc/sablecc/node/AHelpers.java index 2205d2b..5b5f96a 100644 --- a/src/main/java/org/sablecc/sablecc/node/AHelpers.java +++ b/src/main/java/org/sablecc/sablecc/node/AHelpers.java @@ -23,11 +23,16 @@ public final class AHelpers extends PHelpers } + public AHelpers(AHelpers node) + { + super(node); + setHelperDefs(cloneList(node._helperDefs_)); + } + @Override public AHelpers clone() { - return new AHelpers( - cloneList(this._helperDefs_)); + return new AHelpers(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AHexChar.java b/src/main/java/org/sablecc/sablecc/node/AHexChar.java index d20a390..0391372 100644 --- a/src/main/java/org/sablecc/sablecc/node/AHexChar.java +++ b/src/main/java/org/sablecc/sablecc/node/AHexChar.java @@ -22,11 +22,16 @@ public final class AHexChar extends PChar } + public AHexChar(AHexChar node) + { + super(node); + setHexChar(cloneNode(node._hexChar_)); + } + @Override public AHexChar clone() { - return new AHexChar( - cloneNode(this._hexChar_)); + return new AHexChar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AIdBasic.java b/src/main/java/org/sablecc/sablecc/node/AIdBasic.java index 8b90894..8ce3a09 100644 --- a/src/main/java/org/sablecc/sablecc/node/AIdBasic.java +++ b/src/main/java/org/sablecc/sablecc/node/AIdBasic.java @@ -22,11 +22,16 @@ public final class AIdBasic extends PBasic } + public AIdBasic(AIdBasic node) + { + super(node); + setId(cloneNode(node._id_)); + } + @Override public AIdBasic clone() { - return new AIdBasic( - cloneNode(this._id_)); + return new AIdBasic(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java b/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java index 5fad1bc..4e89102 100644 --- a/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java +++ b/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java @@ -23,11 +23,16 @@ public final class AIgnTokens extends PIgnTokens } + public AIgnTokens(AIgnTokens node) + { + super(node); + setListId(cloneList(node._listId_)); + } + @Override public AIgnTokens clone() { - return new AIgnTokens( - cloneList(this._listId_)); + return new AIgnTokens(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AIntervalSet.java b/src/main/java/org/sablecc/sablecc/node/AIntervalSet.java index 4d18203..dbd1b00 100644 --- a/src/main/java/org/sablecc/sablecc/node/AIntervalSet.java +++ b/src/main/java/org/sablecc/sablecc/node/AIntervalSet.java @@ -26,12 +26,17 @@ public final class AIntervalSet extends PSet } + public AIntervalSet(AIntervalSet node) + { + super(node); + setLeft(cloneNode(node._left_)); + setRight(cloneNode(node._right_)); + } + @Override public AIntervalSet clone() { - return new AIntervalSet( - cloneNode(this._left_), - cloneNode(this._right_)); + return new AIntervalSet(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AListTerm.java b/src/main/java/org/sablecc/sablecc/node/AListTerm.java index d8ac882..33ef29c 100644 --- a/src/main/java/org/sablecc/sablecc/node/AListTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/AListTerm.java @@ -27,12 +27,17 @@ public final class AListTerm extends PTerm } + public AListTerm(AListTerm node) + { + super(node); + setLBkt(cloneNode(node._lBkt_)); + setListTerms(cloneList(node._listTerms_)); + } + @Override public AListTerm clone() { - return new AListTerm( - cloneNode(this._lBkt_), - cloneList(this._listTerms_)); + return new AListTerm(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AMinusBinOp.java b/src/main/java/org/sablecc/sablecc/node/AMinusBinOp.java index 835b9ff..f83b25f 100644 --- a/src/main/java/org/sablecc/sablecc/node/AMinusBinOp.java +++ b/src/main/java/org/sablecc/sablecc/node/AMinusBinOp.java @@ -13,10 +13,15 @@ public final class AMinusBinOp extends PBinOp // Constructor } + public AMinusBinOp(AMinusBinOp node) + { + super(node); + } + @Override public AMinusBinOp clone() { - return new AMinusBinOp(); + return new AMinusBinOp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java b/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java index 43dd3b2..d90bcba 100644 --- a/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java @@ -31,13 +31,18 @@ public final class ANewListTerm extends PListTerm } + public ANewListTerm(ANewListTerm node) + { + super(node); + setProdName(cloneNode(node._prodName_)); + setLPar(cloneNode(node._lPar_)); + setParams(cloneList(node._params_)); + } + @Override public ANewListTerm clone() { - return new ANewListTerm( - cloneNode(this._prodName_), - cloneNode(this._lPar_), - cloneList(this._params_)); + return new ANewListTerm(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ANewTerm.java b/src/main/java/org/sablecc/sablecc/node/ANewTerm.java index be1dc74..5b15adb 100644 --- a/src/main/java/org/sablecc/sablecc/node/ANewTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ANewTerm.java @@ -31,13 +31,18 @@ public final class ANewTerm extends PTerm } + public ANewTerm(ANewTerm node) + { + super(node); + setProdName(cloneNode(node._prodName_)); + setLPar(cloneNode(node._lPar_)); + setParams(cloneList(node._params_)); + } + @Override public ANewTerm clone() { - return new ANewTerm( - cloneNode(this._prodName_), - cloneNode(this._lPar_), - cloneList(this._params_)); + return new ANewTerm(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ANullTerm.java b/src/main/java/org/sablecc/sablecc/node/ANullTerm.java index 8a02cd2..7054505 100644 --- a/src/main/java/org/sablecc/sablecc/node/ANullTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ANullTerm.java @@ -13,10 +13,15 @@ public final class ANullTerm extends PTerm // Constructor } + public ANullTerm(ANullTerm node) + { + super(node); + } + @Override public ANullTerm clone() { - return new ANullTerm(); + return new ANullTerm(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AOperationSet.java b/src/main/java/org/sablecc/sablecc/node/AOperationSet.java index 3e89f90..d34ea90 100644 --- a/src/main/java/org/sablecc/sablecc/node/AOperationSet.java +++ b/src/main/java/org/sablecc/sablecc/node/AOperationSet.java @@ -30,13 +30,18 @@ public final class AOperationSet extends PSet } + public AOperationSet(AOperationSet node) + { + super(node); + setLeft(cloneNode(node._left_)); + setBinOp(cloneNode(node._binOp_)); + setRight(cloneNode(node._right_)); + } + @Override public AOperationSet clone() { - return new AOperationSet( - cloneNode(this._left_), - cloneNode(this._binOp_), - cloneNode(this._right_)); + return new AOperationSet(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/APlusBinOp.java b/src/main/java/org/sablecc/sablecc/node/APlusBinOp.java index 30b4a0c..37600cb 100644 --- a/src/main/java/org/sablecc/sablecc/node/APlusBinOp.java +++ b/src/main/java/org/sablecc/sablecc/node/APlusBinOp.java @@ -13,10 +13,15 @@ public final class APlusBinOp extends PBinOp // Constructor } + public APlusBinOp(APlusBinOp node) + { + super(node); + } + @Override public APlusBinOp clone() { - return new APlusBinOp(); + return new APlusBinOp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/APlusUnOp.java b/src/main/java/org/sablecc/sablecc/node/APlusUnOp.java index 9ecf271..d31ac09 100644 --- a/src/main/java/org/sablecc/sablecc/node/APlusUnOp.java +++ b/src/main/java/org/sablecc/sablecc/node/APlusUnOp.java @@ -22,11 +22,16 @@ public final class APlusUnOp extends PUnOp } + public APlusUnOp(APlusUnOp node) + { + super(node); + setPlus(cloneNode(node._plus_)); + } + @Override public APlusUnOp clone() { - return new APlusUnOp( - cloneNode(this._plus_)); + return new APlusUnOp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AProd.java b/src/main/java/org/sablecc/sablecc/node/AProd.java index 829b66b..d058034 100644 --- a/src/main/java/org/sablecc/sablecc/node/AProd.java +++ b/src/main/java/org/sablecc/sablecc/node/AProd.java @@ -35,14 +35,19 @@ public final class AProd extends PProd } + public AProd(AProd node) + { + super(node); + setId(cloneNode(node._id_)); + setArrow(cloneNode(node._arrow_)); + setProdTransform(cloneList(node._prodTransform_)); + setAlts(cloneList(node._alts_)); + } + @Override public AProd clone() { - return new AProd( - cloneNode(this._id_), - cloneNode(this._arrow_), - cloneList(this._prodTransform_), - cloneList(this._alts_)); + return new AProd(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AProdName.java b/src/main/java/org/sablecc/sablecc/node/AProdName.java index 272d4a2..48d5ed2 100644 --- a/src/main/java/org/sablecc/sablecc/node/AProdName.java +++ b/src/main/java/org/sablecc/sablecc/node/AProdName.java @@ -26,12 +26,17 @@ public final class AProdName extends PProdName } + public AProdName(AProdName node) + { + super(node); + setId(cloneNode(node._id_)); + setProdNameTail(cloneNode(node._prodNameTail_)); + } + @Override public AProdName clone() { - return new AProdName( - cloneNode(this._id_), - cloneNode(this._prodNameTail_)); + return new AProdName(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AProductionSpecifier.java b/src/main/java/org/sablecc/sablecc/node/AProductionSpecifier.java index 3e958ec..df84feb 100644 --- a/src/main/java/org/sablecc/sablecc/node/AProductionSpecifier.java +++ b/src/main/java/org/sablecc/sablecc/node/AProductionSpecifier.java @@ -13,10 +13,15 @@ public final class AProductionSpecifier extends PSpecifier // Constructor } + public AProductionSpecifier(AProductionSpecifier node) + { + super(node); + } + @Override public AProductionSpecifier clone() { - return new AProductionSpecifier(); + return new AProductionSpecifier(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AProductions.java b/src/main/java/org/sablecc/sablecc/node/AProductions.java index 3feac8c..d5078d5 100644 --- a/src/main/java/org/sablecc/sablecc/node/AProductions.java +++ b/src/main/java/org/sablecc/sablecc/node/AProductions.java @@ -23,11 +23,16 @@ public final class AProductions extends PProductions } + public AProductions(AProductions node) + { + super(node); + setProds(cloneList(node._prods_)); + } + @Override public AProductions clone() { - return new AProductions( - cloneList(this._prods_)); + return new AProductions(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AQMarkUnOp.java b/src/main/java/org/sablecc/sablecc/node/AQMarkUnOp.java index aa2b81f..da78e87 100644 --- a/src/main/java/org/sablecc/sablecc/node/AQMarkUnOp.java +++ b/src/main/java/org/sablecc/sablecc/node/AQMarkUnOp.java @@ -22,11 +22,16 @@ public final class AQMarkUnOp extends PUnOp } + public AQMarkUnOp(AQMarkUnOp node) + { + super(node); + setQMark(cloneNode(node._qMark_)); + } + @Override public AQMarkUnOp clone() { - return new AQMarkUnOp( - cloneNode(this._qMark_)); + return new AQMarkUnOp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ARegExp.java b/src/main/java/org/sablecc/sablecc/node/ARegExp.java index 18ca2e4..e9a9eed 100644 --- a/src/main/java/org/sablecc/sablecc/node/ARegExp.java +++ b/src/main/java/org/sablecc/sablecc/node/ARegExp.java @@ -23,11 +23,16 @@ public final class ARegExp extends PRegExp } + public ARegExp(ARegExp node) + { + super(node); + setConcats(cloneList(node._concats_)); + } + @Override public ARegExp clone() { - return new ARegExp( - cloneList(this._concats_)); + return new ARegExp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ARegExpBasic.java b/src/main/java/org/sablecc/sablecc/node/ARegExpBasic.java index 50cec72..1c29eec 100644 --- a/src/main/java/org/sablecc/sablecc/node/ARegExpBasic.java +++ b/src/main/java/org/sablecc/sablecc/node/ARegExpBasic.java @@ -22,11 +22,16 @@ public final class ARegExpBasic extends PBasic } + public ARegExpBasic(ARegExpBasic node) + { + super(node); + setRegExp(cloneNode(node._regExp_)); + } + @Override public ARegExpBasic clone() { - return new ARegExpBasic( - cloneNode(this._regExp_)); + return new ARegExpBasic(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ASetBasic.java b/src/main/java/org/sablecc/sablecc/node/ASetBasic.java index 1c747e4..9c26ab0 100644 --- a/src/main/java/org/sablecc/sablecc/node/ASetBasic.java +++ b/src/main/java/org/sablecc/sablecc/node/ASetBasic.java @@ -22,11 +22,16 @@ public final class ASetBasic extends PBasic } + public ASetBasic(ASetBasic node) + { + super(node); + setSet(cloneNode(node._set_)); + } + @Override public ASetBasic clone() { - return new ASetBasic( - cloneNode(this._set_)); + return new ASetBasic(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ASimpleListTerm.java b/src/main/java/org/sablecc/sablecc/node/ASimpleListTerm.java index 4187c1e..7821735 100644 --- a/src/main/java/org/sablecc/sablecc/node/ASimpleListTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ASimpleListTerm.java @@ -30,13 +30,18 @@ public final class ASimpleListTerm extends PListTerm } + public ASimpleListTerm(ASimpleListTerm node) + { + super(node); + setSpecifier(cloneNode(node._specifier_)); + setId(cloneNode(node._id_)); + setSimpleTermTail(cloneNode(node._simpleTermTail_)); + } + @Override public ASimpleListTerm clone() { - return new ASimpleListTerm( - cloneNode(this._specifier_), - cloneNode(this._id_), - cloneNode(this._simpleTermTail_)); + return new ASimpleListTerm(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ASimpleTerm.java b/src/main/java/org/sablecc/sablecc/node/ASimpleTerm.java index 7f7cd41..693bea1 100644 --- a/src/main/java/org/sablecc/sablecc/node/ASimpleTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ASimpleTerm.java @@ -30,13 +30,18 @@ public final class ASimpleTerm extends PTerm } + public ASimpleTerm(ASimpleTerm node) + { + super(node); + setSpecifier(cloneNode(node._specifier_)); + setId(cloneNode(node._id_)); + setSimpleTermTail(cloneNode(node._simpleTermTail_)); + } + @Override public ASimpleTerm clone() { - return new ASimpleTerm( - cloneNode(this._specifier_), - cloneNode(this._id_), - cloneNode(this._simpleTermTail_)); + return new ASimpleTerm(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AStarUnOp.java b/src/main/java/org/sablecc/sablecc/node/AStarUnOp.java index 3d6abe6..65146a4 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStarUnOp.java +++ b/src/main/java/org/sablecc/sablecc/node/AStarUnOp.java @@ -22,11 +22,16 @@ public final class AStarUnOp extends PUnOp } + public AStarUnOp(AStarUnOp node) + { + super(node); + setStar(cloneNode(node._star_)); + } + @Override public AStarUnOp clone() { - return new AStarUnOp( - cloneNode(this._star_)); + return new AStarUnOp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AStateList.java b/src/main/java/org/sablecc/sablecc/node/AStateList.java index 0f76852..f24a890 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStateList.java +++ b/src/main/java/org/sablecc/sablecc/node/AStateList.java @@ -31,13 +31,18 @@ public final class AStateList extends PStateList } + public AStateList(AStateList node) + { + super(node); + setId(cloneNode(node._id_)); + setTransition(cloneNode(node._transition_)); + setStateLists(cloneList(node._stateLists_)); + } + @Override public AStateList clone() { - return new AStateList( - cloneNode(this._id_), - cloneNode(this._transition_), - cloneList(this._stateLists_)); + return new AStateList(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AStateListTail.java b/src/main/java/org/sablecc/sablecc/node/AStateListTail.java index 5451020..b07fbfc 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStateListTail.java +++ b/src/main/java/org/sablecc/sablecc/node/AStateListTail.java @@ -26,12 +26,17 @@ public final class AStateListTail extends PStateListTail } + public AStateListTail(AStateListTail node) + { + super(node); + setId(cloneNode(node._id_)); + setTransition(cloneNode(node._transition_)); + } + @Override public AStateListTail clone() { - return new AStateListTail( - cloneNode(this._id_), - cloneNode(this._transition_)); + return new AStateListTail(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AStates.java b/src/main/java/org/sablecc/sablecc/node/AStates.java index 271b30f..1c8e4ee 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStates.java +++ b/src/main/java/org/sablecc/sablecc/node/AStates.java @@ -23,11 +23,16 @@ public final class AStates extends PStates } + public AStates(AStates node) + { + super(node); + setListId(cloneList(node._listId_)); + } + @Override public AStates clone() { - return new AStates( - cloneList(this._listId_)); + return new AStates(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AStringBasic.java b/src/main/java/org/sablecc/sablecc/node/AStringBasic.java index 5b96778..79963c2 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStringBasic.java +++ b/src/main/java/org/sablecc/sablecc/node/AStringBasic.java @@ -22,11 +22,16 @@ public final class AStringBasic extends PBasic } + public AStringBasic(AStringBasic node) + { + super(node); + setString(cloneNode(node._string_)); + } + @Override public AStringBasic clone() { - return new AStringBasic( - cloneNode(this._string_)); + return new AStringBasic(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ATokenDef.java b/src/main/java/org/sablecc/sablecc/node/ATokenDef.java index be7cb58..b2e423d 100644 --- a/src/main/java/org/sablecc/sablecc/node/ATokenDef.java +++ b/src/main/java/org/sablecc/sablecc/node/ATokenDef.java @@ -38,15 +38,20 @@ public final class ATokenDef extends PTokenDef } + public ATokenDef(ATokenDef node) + { + super(node); + setStateList(cloneNode(node._stateList_)); + setId(cloneNode(node._id_)); + setRegExp(cloneNode(node._regExp_)); + setSlash(cloneNode(node._slash_)); + setLookAhead(cloneNode(node._lookAhead_)); + } + @Override public ATokenDef clone() { - return new ATokenDef( - cloneNode(this._stateList_), - cloneNode(this._id_), - cloneNode(this._regExp_), - cloneNode(this._slash_), - cloneNode(this._lookAhead_)); + return new ATokenDef(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ATokenSpecifier.java b/src/main/java/org/sablecc/sablecc/node/ATokenSpecifier.java index 716ff3b..596e939 100644 --- a/src/main/java/org/sablecc/sablecc/node/ATokenSpecifier.java +++ b/src/main/java/org/sablecc/sablecc/node/ATokenSpecifier.java @@ -13,10 +13,15 @@ public final class ATokenSpecifier extends PSpecifier // Constructor } + public ATokenSpecifier(ATokenSpecifier node) + { + super(node); + } + @Override public ATokenSpecifier clone() { - return new ATokenSpecifier(); + return new ATokenSpecifier(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ATokens.java b/src/main/java/org/sablecc/sablecc/node/ATokens.java index f770883..2ad3db7 100644 --- a/src/main/java/org/sablecc/sablecc/node/ATokens.java +++ b/src/main/java/org/sablecc/sablecc/node/ATokens.java @@ -23,11 +23,16 @@ public final class ATokens extends PTokens } + public ATokens(ATokens node) + { + super(node); + setTokenDefs(cloneList(node._tokenDefs_)); + } + @Override public ATokens clone() { - return new ATokens( - cloneList(this._tokenDefs_)); + return new ATokens(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/ATransition.java b/src/main/java/org/sablecc/sablecc/node/ATransition.java index f5ea0f3..e0c6328 100644 --- a/src/main/java/org/sablecc/sablecc/node/ATransition.java +++ b/src/main/java/org/sablecc/sablecc/node/ATransition.java @@ -22,11 +22,16 @@ public final class ATransition extends PTransition } + public ATransition(ATransition node) + { + super(node); + setId(cloneNode(node._id_)); + } + @Override public ATransition clone() { - return new ATransition( - cloneNode(this._id_)); + return new ATransition(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/AUnExp.java b/src/main/java/org/sablecc/sablecc/node/AUnExp.java index bcd27d9..ea2d1e3 100644 --- a/src/main/java/org/sablecc/sablecc/node/AUnExp.java +++ b/src/main/java/org/sablecc/sablecc/node/AUnExp.java @@ -26,12 +26,17 @@ public final class AUnExp extends PUnExp } + public AUnExp(AUnExp node) + { + super(node); + setBasic(cloneNode(node._basic_)); + setUnOp(cloneNode(node._unOp_)); + } + @Override public AUnExp clone() { - return new AUnExp( - cloneNode(this._basic_), - cloneNode(this._unOp_)); + return new AUnExp(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/EOF.java b/src/main/java/org/sablecc/sablecc/node/EOF.java index 20a719f..5097f39 100644 --- a/src/main/java/org/sablecc/sablecc/node/EOF.java +++ b/src/main/java/org/sablecc/sablecc/node/EOF.java @@ -9,20 +9,23 @@ public final class EOF extends Token { public EOF() { - setText(""); + super(""); } public EOF(int line, int pos) { - setText(""); - setLine(line); - setPos(pos); + super("", line, pos); + } + + public EOF(EOF token) + { + super(token); } @Override public EOF clone() { - return new EOF(getLine(), getPos()); + return new EOF(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/Node.java b/src/main/java/org/sablecc/sablecc/node/Node.java index b4c0c33..c04d51d 100644 --- a/src/main/java/org/sablecc/sablecc/node/Node.java +++ b/src/main/java/org/sablecc/sablecc/node/Node.java @@ -10,6 +10,17 @@ public abstract class Node extends PositionedNode implements Switchable, Cloneab { private Node parent; + public Node() + {} + + public Node(Node node) + { + super(node); + // Copy constructor intentionally does not keep parent! + // The new copied node is not a child of the original parent anymore. + this.parent = null; + } + @Override public abstract Node clone(); diff --git a/src/main/java/org/sablecc/sablecc/node/PAlt.java b/src/main/java/org/sablecc/sablecc/node/PAlt.java index 0b5516f..805ab23 100644 --- a/src/main/java/org/sablecc/sablecc/node/PAlt.java +++ b/src/main/java/org/sablecc/sablecc/node/PAlt.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PAlt extends Node { + public PAlt() + {} + + public PAlt(PAlt node) + { + super(node); + } + @Override public abstract PAlt clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PAltTransform.java b/src/main/java/org/sablecc/sablecc/node/PAltTransform.java index 35b5362..f0eafa2 100644 --- a/src/main/java/org/sablecc/sablecc/node/PAltTransform.java +++ b/src/main/java/org/sablecc/sablecc/node/PAltTransform.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PAltTransform extends Node { + public PAltTransform() + {} + + public PAltTransform(PAltTransform node) + { + super(node); + } + @Override public abstract PAltTransform clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PAst.java b/src/main/java/org/sablecc/sablecc/node/PAst.java index ef1f009..04d7430 100644 --- a/src/main/java/org/sablecc/sablecc/node/PAst.java +++ b/src/main/java/org/sablecc/sablecc/node/PAst.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PAst extends Node { + public PAst() + {} + + public PAst(PAst node) + { + super(node); + } + @Override public abstract PAst clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PAstAlt.java b/src/main/java/org/sablecc/sablecc/node/PAstAlt.java index 4dc2c2b..7fa3763 100644 --- a/src/main/java/org/sablecc/sablecc/node/PAstAlt.java +++ b/src/main/java/org/sablecc/sablecc/node/PAstAlt.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PAstAlt extends Node { + public PAstAlt() + {} + + public PAstAlt(PAstAlt node) + { + super(node); + } + @Override public abstract PAstAlt clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PAstProd.java b/src/main/java/org/sablecc/sablecc/node/PAstProd.java index 6b85532..de12a50 100644 --- a/src/main/java/org/sablecc/sablecc/node/PAstProd.java +++ b/src/main/java/org/sablecc/sablecc/node/PAstProd.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PAstProd extends Node { + public PAstProd() + {} + + public PAstProd(PAstProd node) + { + super(node); + } + @Override public abstract PAstProd clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PBasic.java b/src/main/java/org/sablecc/sablecc/node/PBasic.java index 70bcd90..2a3b4b9 100644 --- a/src/main/java/org/sablecc/sablecc/node/PBasic.java +++ b/src/main/java/org/sablecc/sablecc/node/PBasic.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PBasic extends Node { + public PBasic() + {} + + public PBasic(PBasic node) + { + super(node); + } + @Override public abstract PBasic clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PBinOp.java b/src/main/java/org/sablecc/sablecc/node/PBinOp.java index 2b2e9ef..1d35acb 100644 --- a/src/main/java/org/sablecc/sablecc/node/PBinOp.java +++ b/src/main/java/org/sablecc/sablecc/node/PBinOp.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PBinOp extends Node { + public PBinOp() + {} + + public PBinOp(PBinOp node) + { + super(node); + } + @Override public abstract PBinOp clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PChar.java b/src/main/java/org/sablecc/sablecc/node/PChar.java index bf0fc3c..1e1975c 100644 --- a/src/main/java/org/sablecc/sablecc/node/PChar.java +++ b/src/main/java/org/sablecc/sablecc/node/PChar.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PChar extends Node { + public PChar() + {} + + public PChar(PChar node) + { + super(node); + } + @Override public abstract PChar clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PConcat.java b/src/main/java/org/sablecc/sablecc/node/PConcat.java index c5c9870..7c9ef83 100644 --- a/src/main/java/org/sablecc/sablecc/node/PConcat.java +++ b/src/main/java/org/sablecc/sablecc/node/PConcat.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PConcat extends Node { + public PConcat() + {} + + public PConcat(PConcat node) + { + super(node); + } + @Override public abstract PConcat clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PElem.java b/src/main/java/org/sablecc/sablecc/node/PElem.java index 9ead049..748f1bc 100644 --- a/src/main/java/org/sablecc/sablecc/node/PElem.java +++ b/src/main/java/org/sablecc/sablecc/node/PElem.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PElem extends Node { + public PElem() + {} + + public PElem(PElem node) + { + super(node); + } + @Override public abstract PElem clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PGrammar.java b/src/main/java/org/sablecc/sablecc/node/PGrammar.java index 3609b3d..8501e4c 100644 --- a/src/main/java/org/sablecc/sablecc/node/PGrammar.java +++ b/src/main/java/org/sablecc/sablecc/node/PGrammar.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PGrammar extends Node { + public PGrammar() + {} + + public PGrammar(PGrammar node) + { + super(node); + } + @Override public abstract PGrammar clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PHelperDef.java b/src/main/java/org/sablecc/sablecc/node/PHelperDef.java index 3c73a8c..b9e501d 100644 --- a/src/main/java/org/sablecc/sablecc/node/PHelperDef.java +++ b/src/main/java/org/sablecc/sablecc/node/PHelperDef.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PHelperDef extends Node { + public PHelperDef() + {} + + public PHelperDef(PHelperDef node) + { + super(node); + } + @Override public abstract PHelperDef clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PHelpers.java b/src/main/java/org/sablecc/sablecc/node/PHelpers.java index 66e7c21..a1ddbf2 100644 --- a/src/main/java/org/sablecc/sablecc/node/PHelpers.java +++ b/src/main/java/org/sablecc/sablecc/node/PHelpers.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PHelpers extends Node { + public PHelpers() + {} + + public PHelpers(PHelpers node) + { + super(node); + } + @Override public abstract PHelpers clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java b/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java index 5af5223..fb53108 100644 --- a/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java +++ b/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PIgnTokens extends Node { + public PIgnTokens() + {} + + public PIgnTokens(PIgnTokens node) + { + super(node); + } + @Override public abstract PIgnTokens clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PListTerm.java b/src/main/java/org/sablecc/sablecc/node/PListTerm.java index da5bde5..d8e7a48 100644 --- a/src/main/java/org/sablecc/sablecc/node/PListTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/PListTerm.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PListTerm extends Node { + public PListTerm() + {} + + public PListTerm(PListTerm node) + { + super(node); + } + @Override public abstract PListTerm clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PProd.java b/src/main/java/org/sablecc/sablecc/node/PProd.java index 5eae94a..2d9db40 100644 --- a/src/main/java/org/sablecc/sablecc/node/PProd.java +++ b/src/main/java/org/sablecc/sablecc/node/PProd.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PProd extends Node { + public PProd() + {} + + public PProd(PProd node) + { + super(node); + } + @Override public abstract PProd clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PProdName.java b/src/main/java/org/sablecc/sablecc/node/PProdName.java index eff659c..380e8da 100644 --- a/src/main/java/org/sablecc/sablecc/node/PProdName.java +++ b/src/main/java/org/sablecc/sablecc/node/PProdName.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PProdName extends Node { + public PProdName() + {} + + public PProdName(PProdName node) + { + super(node); + } + @Override public abstract PProdName clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PProductions.java b/src/main/java/org/sablecc/sablecc/node/PProductions.java index f12d223..98da826 100644 --- a/src/main/java/org/sablecc/sablecc/node/PProductions.java +++ b/src/main/java/org/sablecc/sablecc/node/PProductions.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PProductions extends Node { + public PProductions() + {} + + public PProductions(PProductions node) + { + super(node); + } + @Override public abstract PProductions clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PRegExp.java b/src/main/java/org/sablecc/sablecc/node/PRegExp.java index c9ae467..3ebc5a2 100644 --- a/src/main/java/org/sablecc/sablecc/node/PRegExp.java +++ b/src/main/java/org/sablecc/sablecc/node/PRegExp.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PRegExp extends Node { + public PRegExp() + {} + + public PRegExp(PRegExp node) + { + super(node); + } + @Override public abstract PRegExp clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PSet.java b/src/main/java/org/sablecc/sablecc/node/PSet.java index 5d2b31e..e9d6593 100644 --- a/src/main/java/org/sablecc/sablecc/node/PSet.java +++ b/src/main/java/org/sablecc/sablecc/node/PSet.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PSet extends Node { + public PSet() + {} + + public PSet(PSet node) + { + super(node); + } + @Override public abstract PSet clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PSpecifier.java b/src/main/java/org/sablecc/sablecc/node/PSpecifier.java index 787ba31..39fc626 100644 --- a/src/main/java/org/sablecc/sablecc/node/PSpecifier.java +++ b/src/main/java/org/sablecc/sablecc/node/PSpecifier.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PSpecifier extends Node { + public PSpecifier() + {} + + public PSpecifier(PSpecifier node) + { + super(node); + } + @Override public abstract PSpecifier clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PStateList.java b/src/main/java/org/sablecc/sablecc/node/PStateList.java index 24b52b2..b8509d1 100644 --- a/src/main/java/org/sablecc/sablecc/node/PStateList.java +++ b/src/main/java/org/sablecc/sablecc/node/PStateList.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PStateList extends Node { + public PStateList() + {} + + public PStateList(PStateList node) + { + super(node); + } + @Override public abstract PStateList clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PStateListTail.java b/src/main/java/org/sablecc/sablecc/node/PStateListTail.java index b50809e..3968b10 100644 --- a/src/main/java/org/sablecc/sablecc/node/PStateListTail.java +++ b/src/main/java/org/sablecc/sablecc/node/PStateListTail.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PStateListTail extends Node { + public PStateListTail() + {} + + public PStateListTail(PStateListTail node) + { + super(node); + } + @Override public abstract PStateListTail clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PStates.java b/src/main/java/org/sablecc/sablecc/node/PStates.java index df92627..c0f22d4 100644 --- a/src/main/java/org/sablecc/sablecc/node/PStates.java +++ b/src/main/java/org/sablecc/sablecc/node/PStates.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PStates extends Node { + public PStates() + {} + + public PStates(PStates node) + { + super(node); + } + @Override public abstract PStates clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PTerm.java b/src/main/java/org/sablecc/sablecc/node/PTerm.java index cea2601..e3e9373 100644 --- a/src/main/java/org/sablecc/sablecc/node/PTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/PTerm.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PTerm extends Node { + public PTerm() + {} + + public PTerm(PTerm node) + { + super(node); + } + @Override public abstract PTerm clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PTokenDef.java b/src/main/java/org/sablecc/sablecc/node/PTokenDef.java index 96e71a7..783f742 100644 --- a/src/main/java/org/sablecc/sablecc/node/PTokenDef.java +++ b/src/main/java/org/sablecc/sablecc/node/PTokenDef.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PTokenDef extends Node { + public PTokenDef() + {} + + public PTokenDef(PTokenDef node) + { + super(node); + } + @Override public abstract PTokenDef clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PTokens.java b/src/main/java/org/sablecc/sablecc/node/PTokens.java index daa2a57..d0b4af8 100644 --- a/src/main/java/org/sablecc/sablecc/node/PTokens.java +++ b/src/main/java/org/sablecc/sablecc/node/PTokens.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PTokens extends Node { + public PTokens() + {} + + public PTokens(PTokens node) + { + super(node); + } + @Override public abstract PTokens clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PTransition.java b/src/main/java/org/sablecc/sablecc/node/PTransition.java index e91c82d..d8b166d 100644 --- a/src/main/java/org/sablecc/sablecc/node/PTransition.java +++ b/src/main/java/org/sablecc/sablecc/node/PTransition.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PTransition extends Node { + public PTransition() + {} + + public PTransition(PTransition node) + { + super(node); + } + @Override public abstract PTransition clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PUnExp.java b/src/main/java/org/sablecc/sablecc/node/PUnExp.java index 1561ea6..28f0cba 100644 --- a/src/main/java/org/sablecc/sablecc/node/PUnExp.java +++ b/src/main/java/org/sablecc/sablecc/node/PUnExp.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PUnExp extends Node { + public PUnExp() + {} + + public PUnExp(PUnExp node) + { + super(node); + } + @Override public abstract PUnExp clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/PUnOp.java b/src/main/java/org/sablecc/sablecc/node/PUnOp.java index 45a73f9..fc09a33 100644 --- a/src/main/java/org/sablecc/sablecc/node/PUnOp.java +++ b/src/main/java/org/sablecc/sablecc/node/PUnOp.java @@ -4,6 +4,14 @@ package org.sablecc.sablecc.node; public abstract class PUnOp extends Node { + public PUnOp() + {} + + public PUnOp(PUnOp node) + { + super(node); + } + @Override public abstract PUnOp clone(); } diff --git a/src/main/java/org/sablecc/sablecc/node/Start.java b/src/main/java/org/sablecc/sablecc/node/Start.java index 2626e78..0988c84 100644 --- a/src/main/java/org/sablecc/sablecc/node/Start.java +++ b/src/main/java/org/sablecc/sablecc/node/Start.java @@ -22,12 +22,17 @@ public final class Start extends Node setEOF(_eof_); } + public Start(Start node) + { + super(node); + setPGrammar(cloneNode(node._pGrammar_)); + setEOF(cloneNode(node._eof_)); + } + @Override public Start clone() { - return new Start( - cloneNode(this._pGrammar_), - cloneNode(this._eof_)); + return new Start(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TAbstract.java b/src/main/java/org/sablecc/sablecc/node/TAbstract.java index a942340..dbccebb 100644 --- a/src/main/java/org/sablecc/sablecc/node/TAbstract.java +++ b/src/main/java/org/sablecc/sablecc/node/TAbstract.java @@ -9,20 +9,23 @@ public final class TAbstract extends Token { public TAbstract() { - super.setText("Abstract"); + super("Abstract"); } public TAbstract(int line, int pos) { - super.setText("Abstract"); - setLine(line); - setPos(pos); + super("Abstract", line, pos); + } + + public TAbstract(TAbstract token) + { + super(token); } @Override public TAbstract clone() { - return new TAbstract(getLine(), getPos()); + return new TAbstract(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TArrow.java b/src/main/java/org/sablecc/sablecc/node/TArrow.java index 4817c02..1ad0fb6 100644 --- a/src/main/java/org/sablecc/sablecc/node/TArrow.java +++ b/src/main/java/org/sablecc/sablecc/node/TArrow.java @@ -9,20 +9,23 @@ public final class TArrow extends Token { public TArrow() { - super.setText("->"); + super("->"); } public TArrow(int line, int pos) { - super.setText("->"); - setLine(line); - setPos(pos); + super("->", line, pos); + } + + public TArrow(TArrow token) + { + super(token); } @Override public TArrow clone() { - return new TArrow(getLine(), getPos()); + return new TArrow(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TBar.java b/src/main/java/org/sablecc/sablecc/node/TBar.java index ea2cccb..d6119ef 100644 --- a/src/main/java/org/sablecc/sablecc/node/TBar.java +++ b/src/main/java/org/sablecc/sablecc/node/TBar.java @@ -9,20 +9,23 @@ public final class TBar extends Token { public TBar() { - super.setText("|"); + super("|"); } public TBar(int line, int pos) { - super.setText("|"); - setLine(line); - setPos(pos); + super("|", line, pos); + } + + public TBar(TBar token) + { + super(token); } @Override public TBar clone() { - return new TBar(getLine(), getPos()); + return new TBar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TBlank.java b/src/main/java/org/sablecc/sablecc/node/TBlank.java index bc36650..70b8ecf 100644 --- a/src/main/java/org/sablecc/sablecc/node/TBlank.java +++ b/src/main/java/org/sablecc/sablecc/node/TBlank.java @@ -9,20 +9,23 @@ public final class TBlank extends Token { public TBlank(String text) { - setText(text); + super(text); } public TBlank(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TBlank(TBlank token) + { + super(token); } @Override public TBlank clone() { - return new TBlank(getText(), getLine(), getPos()); + return new TBlank(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TChar.java b/src/main/java/org/sablecc/sablecc/node/TChar.java index 98b21a2..6f70e04 100644 --- a/src/main/java/org/sablecc/sablecc/node/TChar.java +++ b/src/main/java/org/sablecc/sablecc/node/TChar.java @@ -9,20 +9,23 @@ public final class TChar extends Token { public TChar(String text) { - setText(text); + super(text); } public TChar(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TChar(TChar token) + { + super(token); } @Override public TChar clone() { - return new TChar(getText(), getLine(), getPos()); + return new TChar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TColon.java b/src/main/java/org/sablecc/sablecc/node/TColon.java index 65692a4..cab5d5a 100644 --- a/src/main/java/org/sablecc/sablecc/node/TColon.java +++ b/src/main/java/org/sablecc/sablecc/node/TColon.java @@ -9,20 +9,23 @@ public final class TColon extends Token { public TColon() { - super.setText(":"); + super(":"); } public TColon(int line, int pos) { - super.setText(":"); - setLine(line); - setPos(pos); + super(":", line, pos); + } + + public TColon(TColon token) + { + super(token); } @Override public TColon clone() { - return new TColon(getLine(), getPos()); + return new TColon(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TComma.java b/src/main/java/org/sablecc/sablecc/node/TComma.java index 8b421b5..5b906b3 100644 --- a/src/main/java/org/sablecc/sablecc/node/TComma.java +++ b/src/main/java/org/sablecc/sablecc/node/TComma.java @@ -9,20 +9,23 @@ public final class TComma extends Token { public TComma() { - super.setText(","); + super(","); } public TComma(int line, int pos) { - super.setText(","); - setLine(line); - setPos(pos); + super(",", line, pos); + } + + public TComma(TComma token) + { + super(token); } @Override public TComma clone() { - return new TComma(getLine(), getPos()); + return new TComma(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TComment.java b/src/main/java/org/sablecc/sablecc/node/TComment.java index 2834865..6727575 100644 --- a/src/main/java/org/sablecc/sablecc/node/TComment.java +++ b/src/main/java/org/sablecc/sablecc/node/TComment.java @@ -9,20 +9,23 @@ public final class TComment extends Token { public TComment(String text) { - setText(text); + super(text); } public TComment(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TComment(TComment token) + { + super(token); } @Override public TComment clone() { - return new TComment(getText(), getLine(), getPos()); + return new TComment(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TDDot.java b/src/main/java/org/sablecc/sablecc/node/TDDot.java index fd34621..68a47c7 100644 --- a/src/main/java/org/sablecc/sablecc/node/TDDot.java +++ b/src/main/java/org/sablecc/sablecc/node/TDDot.java @@ -9,20 +9,23 @@ public final class TDDot extends Token { public TDDot() { - super.setText(".."); + super(".."); } public TDDot(int line, int pos) { - super.setText(".."); - setLine(line); - setPos(pos); + super("..", line, pos); + } + + public TDDot(TDDot token) + { + super(token); } @Override public TDDot clone() { - return new TDDot(getLine(), getPos()); + return new TDDot(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TDecChar.java b/src/main/java/org/sablecc/sablecc/node/TDecChar.java index 9511c49..11fef1e 100644 --- a/src/main/java/org/sablecc/sablecc/node/TDecChar.java +++ b/src/main/java/org/sablecc/sablecc/node/TDecChar.java @@ -9,20 +9,23 @@ public final class TDecChar extends Token { public TDecChar(String text) { - setText(text); + super(text); } public TDecChar(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TDecChar(TDecChar token) + { + super(token); } @Override public TDecChar clone() { - return new TDecChar(getText(), getLine(), getPos()); + return new TDecChar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TDot.java b/src/main/java/org/sablecc/sablecc/node/TDot.java index ff56837..7915cfc 100644 --- a/src/main/java/org/sablecc/sablecc/node/TDot.java +++ b/src/main/java/org/sablecc/sablecc/node/TDot.java @@ -9,20 +9,23 @@ public final class TDot extends Token { public TDot() { - super.setText("."); + super("."); } public TDot(int line, int pos) { - super.setText("."); - setLine(line); - setPos(pos); + super(".", line, pos); + } + + public TDot(TDot token) + { + super(token); } @Override public TDot clone() { - return new TDot(getLine(), getPos()); + return new TDot(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TEqual.java b/src/main/java/org/sablecc/sablecc/node/TEqual.java index 015aba3..990a8fb 100644 --- a/src/main/java/org/sablecc/sablecc/node/TEqual.java +++ b/src/main/java/org/sablecc/sablecc/node/TEqual.java @@ -9,20 +9,23 @@ public final class TEqual extends Token { public TEqual() { - super.setText("="); + super("="); } public TEqual(int line, int pos) { - super.setText("="); - setLine(line); - setPos(pos); + super("=", line, pos); + } + + public TEqual(TEqual token) + { + super(token); } @Override public TEqual clone() { - return new TEqual(getLine(), getPos()); + return new TEqual(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/THelpers.java b/src/main/java/org/sablecc/sablecc/node/THelpers.java index 4c843ba..454b298 100644 --- a/src/main/java/org/sablecc/sablecc/node/THelpers.java +++ b/src/main/java/org/sablecc/sablecc/node/THelpers.java @@ -9,20 +9,23 @@ public final class THelpers extends Token { public THelpers() { - super.setText("Helpers"); + super("Helpers"); } public THelpers(int line, int pos) { - super.setText("Helpers"); - setLine(line); - setPos(pos); + super("Helpers", line, pos); + } + + public THelpers(THelpers token) + { + super(token); } @Override public THelpers clone() { - return new THelpers(getLine(), getPos()); + return new THelpers(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/THexChar.java b/src/main/java/org/sablecc/sablecc/node/THexChar.java index 852b578..be72cbc 100644 --- a/src/main/java/org/sablecc/sablecc/node/THexChar.java +++ b/src/main/java/org/sablecc/sablecc/node/THexChar.java @@ -9,20 +9,23 @@ public final class THexChar extends Token { public THexChar(String text) { - setText(text); + super(text); } public THexChar(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public THexChar(THexChar token) + { + super(token); } @Override public THexChar clone() { - return new THexChar(getText(), getLine(), getPos()); + return new THexChar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TId.java b/src/main/java/org/sablecc/sablecc/node/TId.java index fc64875..6ecb2e6 100644 --- a/src/main/java/org/sablecc/sablecc/node/TId.java +++ b/src/main/java/org/sablecc/sablecc/node/TId.java @@ -9,20 +9,23 @@ public final class TId extends Token { public TId(String text) { - setText(text); + super(text); } public TId(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TId(TId token) + { + super(token); } @Override public TId clone() { - return new TId(getText(), getLine(), getPos()); + return new TId(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TIgnored.java b/src/main/java/org/sablecc/sablecc/node/TIgnored.java index 55a4e7c..d250772 100644 --- a/src/main/java/org/sablecc/sablecc/node/TIgnored.java +++ b/src/main/java/org/sablecc/sablecc/node/TIgnored.java @@ -9,20 +9,23 @@ public final class TIgnored extends Token { public TIgnored() { - super.setText("Ignored"); + super("Ignored"); } public TIgnored(int line, int pos) { - super.setText("Ignored"); - setLine(line); - setPos(pos); + super("Ignored", line, pos); + } + + public TIgnored(TIgnored token) + { + super(token); } @Override public TIgnored clone() { - return new TIgnored(getLine(), getPos()); + return new TIgnored(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TLBkt.java b/src/main/java/org/sablecc/sablecc/node/TLBkt.java index 6060037..3cfb5e3 100644 --- a/src/main/java/org/sablecc/sablecc/node/TLBkt.java +++ b/src/main/java/org/sablecc/sablecc/node/TLBkt.java @@ -9,20 +9,23 @@ public final class TLBkt extends Token { public TLBkt() { - super.setText("["); + super("["); } public TLBkt(int line, int pos) { - super.setText("["); - setLine(line); - setPos(pos); + super("[", line, pos); + } + + public TLBkt(TLBkt token) + { + super(token); } @Override public TLBkt clone() { - return new TLBkt(getLine(), getPos()); + return new TLBkt(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TLBrace.java b/src/main/java/org/sablecc/sablecc/node/TLBrace.java index c7c8c11..2717770 100644 --- a/src/main/java/org/sablecc/sablecc/node/TLBrace.java +++ b/src/main/java/org/sablecc/sablecc/node/TLBrace.java @@ -9,20 +9,23 @@ public final class TLBrace extends Token { public TLBrace() { - super.setText("{"); + super("{"); } public TLBrace(int line, int pos) { - super.setText("{"); - setLine(line); - setPos(pos); + super("{", line, pos); + } + + public TLBrace(TLBrace token) + { + super(token); } @Override public TLBrace clone() { - return new TLBrace(getLine(), getPos()); + return new TLBrace(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TLPar.java b/src/main/java/org/sablecc/sablecc/node/TLPar.java index 06b5aa9..0ce2f69 100644 --- a/src/main/java/org/sablecc/sablecc/node/TLPar.java +++ b/src/main/java/org/sablecc/sablecc/node/TLPar.java @@ -9,20 +9,23 @@ public final class TLPar extends Token { public TLPar() { - super.setText("("); + super("("); } public TLPar(int line, int pos) { - super.setText("("); - setLine(line); - setPos(pos); + super("(", line, pos); + } + + public TLPar(TLPar token) + { + super(token); } @Override public TLPar clone() { - return new TLPar(getLine(), getPos()); + return new TLPar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TMinus.java b/src/main/java/org/sablecc/sablecc/node/TMinus.java index 1d59154..9eaaffa 100644 --- a/src/main/java/org/sablecc/sablecc/node/TMinus.java +++ b/src/main/java/org/sablecc/sablecc/node/TMinus.java @@ -9,20 +9,23 @@ public final class TMinus extends Token { public TMinus() { - super.setText("-"); + super("-"); } public TMinus(int line, int pos) { - super.setText("-"); - setLine(line); - setPos(pos); + super("-", line, pos); + } + + public TMinus(TMinus token) + { + super(token); } @Override public TMinus clone() { - return new TMinus(getLine(), getPos()); + return new TMinus(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TNew.java b/src/main/java/org/sablecc/sablecc/node/TNew.java index 39bcc55..5bb658b 100644 --- a/src/main/java/org/sablecc/sablecc/node/TNew.java +++ b/src/main/java/org/sablecc/sablecc/node/TNew.java @@ -9,20 +9,23 @@ public final class TNew extends Token { public TNew() { - super.setText("New"); + super("New"); } public TNew(int line, int pos) { - super.setText("New"); - setLine(line); - setPos(pos); + super("New", line, pos); + } + + public TNew(TNew token) + { + super(token); } @Override public TNew clone() { - return new TNew(getLine(), getPos()); + return new TNew(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TNull.java b/src/main/java/org/sablecc/sablecc/node/TNull.java index 0e718da..80cb56a 100644 --- a/src/main/java/org/sablecc/sablecc/node/TNull.java +++ b/src/main/java/org/sablecc/sablecc/node/TNull.java @@ -9,20 +9,23 @@ public final class TNull extends Token { public TNull() { - super.setText("Null"); + super("Null"); } public TNull(int line, int pos) { - super.setText("Null"); - setLine(line); - setPos(pos); + super("Null", line, pos); + } + + public TNull(TNull token) + { + super(token); } @Override public TNull clone() { - return new TNull(getLine(), getPos()); + return new TNull(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TPackage.java b/src/main/java/org/sablecc/sablecc/node/TPackage.java index 2e6ff4f..dd8c3af 100644 --- a/src/main/java/org/sablecc/sablecc/node/TPackage.java +++ b/src/main/java/org/sablecc/sablecc/node/TPackage.java @@ -9,20 +9,23 @@ public final class TPackage extends Token { public TPackage() { - super.setText("Package"); + super("Package"); } public TPackage(int line, int pos) { - super.setText("Package"); - setLine(line); - setPos(pos); + super("Package", line, pos); + } + + public TPackage(TPackage token) + { + super(token); } @Override public TPackage clone() { - return new TPackage(getLine(), getPos()); + return new TPackage(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TPkgId.java b/src/main/java/org/sablecc/sablecc/node/TPkgId.java index 3913ccd..4a35d8f 100644 --- a/src/main/java/org/sablecc/sablecc/node/TPkgId.java +++ b/src/main/java/org/sablecc/sablecc/node/TPkgId.java @@ -9,20 +9,23 @@ public final class TPkgId extends Token { public TPkgId(String text) { - setText(text); + super(text); } public TPkgId(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TPkgId(TPkgId token) + { + super(token); } @Override public TPkgId clone() { - return new TPkgId(getText(), getLine(), getPos()); + return new TPkgId(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TPlus.java b/src/main/java/org/sablecc/sablecc/node/TPlus.java index d3fd88d..45fe180 100644 --- a/src/main/java/org/sablecc/sablecc/node/TPlus.java +++ b/src/main/java/org/sablecc/sablecc/node/TPlus.java @@ -9,20 +9,23 @@ public final class TPlus extends Token { public TPlus() { - super.setText("+"); + super("+"); } public TPlus(int line, int pos) { - super.setText("+"); - setLine(line); - setPos(pos); + super("+", line, pos); + } + + public TPlus(TPlus token) + { + super(token); } @Override public TPlus clone() { - return new TPlus(getLine(), getPos()); + return new TPlus(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TProductionSpecifier.java b/src/main/java/org/sablecc/sablecc/node/TProductionSpecifier.java index b73250d..df07e58 100644 --- a/src/main/java/org/sablecc/sablecc/node/TProductionSpecifier.java +++ b/src/main/java/org/sablecc/sablecc/node/TProductionSpecifier.java @@ -9,20 +9,23 @@ public final class TProductionSpecifier extends Token { public TProductionSpecifier() { - super.setText("P"); + super("P"); } public TProductionSpecifier(int line, int pos) { - super.setText("P"); - setLine(line); - setPos(pos); + super("P", line, pos); + } + + public TProductionSpecifier(TProductionSpecifier token) + { + super(token); } @Override public TProductionSpecifier clone() { - return new TProductionSpecifier(getLine(), getPos()); + return new TProductionSpecifier(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TProductions.java b/src/main/java/org/sablecc/sablecc/node/TProductions.java index bbcf9d4..707edf7 100644 --- a/src/main/java/org/sablecc/sablecc/node/TProductions.java +++ b/src/main/java/org/sablecc/sablecc/node/TProductions.java @@ -9,20 +9,23 @@ public final class TProductions extends Token { public TProductions() { - super.setText("Productions"); + super("Productions"); } public TProductions(int line, int pos) { - super.setText("Productions"); - setLine(line); - setPos(pos); + super("Productions", line, pos); + } + + public TProductions(TProductions token) + { + super(token); } @Override public TProductions clone() { - return new TProductions(getLine(), getPos()); + return new TProductions(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TQMark.java b/src/main/java/org/sablecc/sablecc/node/TQMark.java index 5b77234..6899c00 100644 --- a/src/main/java/org/sablecc/sablecc/node/TQMark.java +++ b/src/main/java/org/sablecc/sablecc/node/TQMark.java @@ -9,20 +9,23 @@ public final class TQMark extends Token { public TQMark() { - super.setText("?"); + super("?"); } public TQMark(int line, int pos) { - super.setText("?"); - setLine(line); - setPos(pos); + super("?", line, pos); + } + + public TQMark(TQMark token) + { + super(token); } @Override public TQMark clone() { - return new TQMark(getLine(), getPos()); + return new TQMark(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TRBkt.java b/src/main/java/org/sablecc/sablecc/node/TRBkt.java index a64429b..058d8e5 100644 --- a/src/main/java/org/sablecc/sablecc/node/TRBkt.java +++ b/src/main/java/org/sablecc/sablecc/node/TRBkt.java @@ -9,20 +9,23 @@ public final class TRBkt extends Token { public TRBkt() { - super.setText("]"); + super("]"); } public TRBkt(int line, int pos) { - super.setText("]"); - setLine(line); - setPos(pos); + super("]", line, pos); + } + + public TRBkt(TRBkt token) + { + super(token); } @Override public TRBkt clone() { - return new TRBkt(getLine(), getPos()); + return new TRBkt(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TRBrace.java b/src/main/java/org/sablecc/sablecc/node/TRBrace.java index 7a8a97b..6af214d 100644 --- a/src/main/java/org/sablecc/sablecc/node/TRBrace.java +++ b/src/main/java/org/sablecc/sablecc/node/TRBrace.java @@ -9,20 +9,23 @@ public final class TRBrace extends Token { public TRBrace() { - super.setText("}"); + super("}"); } public TRBrace(int line, int pos) { - super.setText("}"); - setLine(line); - setPos(pos); + super("}", line, pos); + } + + public TRBrace(TRBrace token) + { + super(token); } @Override public TRBrace clone() { - return new TRBrace(getLine(), getPos()); + return new TRBrace(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TRPar.java b/src/main/java/org/sablecc/sablecc/node/TRPar.java index b186f71..692be1b 100644 --- a/src/main/java/org/sablecc/sablecc/node/TRPar.java +++ b/src/main/java/org/sablecc/sablecc/node/TRPar.java @@ -9,20 +9,23 @@ public final class TRPar extends Token { public TRPar() { - super.setText(")"); + super(")"); } public TRPar(int line, int pos) { - super.setText(")"); - setLine(line); - setPos(pos); + super(")", line, pos); + } + + public TRPar(TRPar token) + { + super(token); } @Override public TRPar clone() { - return new TRPar(getLine(), getPos()); + return new TRPar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TSemicolon.java b/src/main/java/org/sablecc/sablecc/node/TSemicolon.java index 65561a5..bf681ed 100644 --- a/src/main/java/org/sablecc/sablecc/node/TSemicolon.java +++ b/src/main/java/org/sablecc/sablecc/node/TSemicolon.java @@ -9,20 +9,23 @@ public final class TSemicolon extends Token { public TSemicolon() { - super.setText(";"); + super(";"); } public TSemicolon(int line, int pos) { - super.setText(";"); - setLine(line); - setPos(pos); + super(";", line, pos); + } + + public TSemicolon(TSemicolon token) + { + super(token); } @Override public TSemicolon clone() { - return new TSemicolon(getLine(), getPos()); + return new TSemicolon(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TSlash.java b/src/main/java/org/sablecc/sablecc/node/TSlash.java index 68eae04..0602691 100644 --- a/src/main/java/org/sablecc/sablecc/node/TSlash.java +++ b/src/main/java/org/sablecc/sablecc/node/TSlash.java @@ -9,20 +9,23 @@ public final class TSlash extends Token { public TSlash() { - super.setText("/"); + super("/"); } public TSlash(int line, int pos) { - super.setText("/"); - setLine(line); - setPos(pos); + super("/", line, pos); + } + + public TSlash(TSlash token) + { + super(token); } @Override public TSlash clone() { - return new TSlash(getLine(), getPos()); + return new TSlash(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TStar.java b/src/main/java/org/sablecc/sablecc/node/TStar.java index 37ff65d..eb5f04e 100644 --- a/src/main/java/org/sablecc/sablecc/node/TStar.java +++ b/src/main/java/org/sablecc/sablecc/node/TStar.java @@ -9,20 +9,23 @@ public final class TStar extends Token { public TStar() { - super.setText("*"); + super("*"); } public TStar(int line, int pos) { - super.setText("*"); - setLine(line); - setPos(pos); + super("*", line, pos); + } + + public TStar(TStar token) + { + super(token); } @Override public TStar clone() { - return new TStar(getLine(), getPos()); + return new TStar(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TStates.java b/src/main/java/org/sablecc/sablecc/node/TStates.java index 6f4dd26..ac0705d 100644 --- a/src/main/java/org/sablecc/sablecc/node/TStates.java +++ b/src/main/java/org/sablecc/sablecc/node/TStates.java @@ -9,20 +9,23 @@ public final class TStates extends Token { public TStates() { - super.setText("States"); + super("States"); } public TStates(int line, int pos) { - super.setText("States"); - setLine(line); - setPos(pos); + super("States", line, pos); + } + + public TStates(TStates token) + { + super(token); } @Override public TStates clone() { - return new TStates(getLine(), getPos()); + return new TStates(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TString.java b/src/main/java/org/sablecc/sablecc/node/TString.java index f04e798..74779c4 100644 --- a/src/main/java/org/sablecc/sablecc/node/TString.java +++ b/src/main/java/org/sablecc/sablecc/node/TString.java @@ -9,20 +9,23 @@ public final class TString extends Token { public TString(String text) { - setText(text); + super(text); } public TString(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public TString(TString token) + { + super(token); } @Override public TString clone() { - return new TString(getText(), getLine(), getPos()); + return new TString(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TSyntax.java b/src/main/java/org/sablecc/sablecc/node/TSyntax.java index 699ec81..292cdcb 100644 --- a/src/main/java/org/sablecc/sablecc/node/TSyntax.java +++ b/src/main/java/org/sablecc/sablecc/node/TSyntax.java @@ -9,20 +9,23 @@ public final class TSyntax extends Token { public TSyntax() { - super.setText("Syntax"); + super("Syntax"); } public TSyntax(int line, int pos) { - super.setText("Syntax"); - setLine(line); - setPos(pos); + super("Syntax", line, pos); + } + + public TSyntax(TSyntax token) + { + super(token); } @Override public TSyntax clone() { - return new TSyntax(getLine(), getPos()); + return new TSyntax(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TTokenSpecifier.java b/src/main/java/org/sablecc/sablecc/node/TTokenSpecifier.java index 98bc334..07c2414 100644 --- a/src/main/java/org/sablecc/sablecc/node/TTokenSpecifier.java +++ b/src/main/java/org/sablecc/sablecc/node/TTokenSpecifier.java @@ -9,20 +9,23 @@ public final class TTokenSpecifier extends Token { public TTokenSpecifier() { - super.setText("T"); + super("T"); } public TTokenSpecifier(int line, int pos) { - super.setText("T"); - setLine(line); - setPos(pos); + super("T", line, pos); + } + + public TTokenSpecifier(TTokenSpecifier token) + { + super(token); } @Override public TTokenSpecifier clone() { - return new TTokenSpecifier(getLine(), getPos()); + return new TTokenSpecifier(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TTokens.java b/src/main/java/org/sablecc/sablecc/node/TTokens.java index 0274048..04ef9e3 100644 --- a/src/main/java/org/sablecc/sablecc/node/TTokens.java +++ b/src/main/java/org/sablecc/sablecc/node/TTokens.java @@ -9,20 +9,23 @@ public final class TTokens extends Token { public TTokens() { - super.setText("Tokens"); + super("Tokens"); } public TTokens(int line, int pos) { - super.setText("Tokens"); - setLine(line); - setPos(pos); + super("Tokens", line, pos); + } + + public TTokens(TTokens token) + { + super(token); } @Override public TTokens clone() { - return new TTokens(getLine(), getPos()); + return new TTokens(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/TTree.java b/src/main/java/org/sablecc/sablecc/node/TTree.java index 4fb7688..4701d53 100644 --- a/src/main/java/org/sablecc/sablecc/node/TTree.java +++ b/src/main/java/org/sablecc/sablecc/node/TTree.java @@ -9,20 +9,23 @@ public final class TTree extends Token { public TTree() { - super.setText("Tree"); + super("Tree"); } public TTree(int line, int pos) { - super.setText("Tree"); - setLine(line); - setPos(pos); + super("Tree", line, pos); + } + + public TTree(TTree token) + { + super(token); } @Override public TTree clone() { - return new TTree(getLine(), getPos()); + return new TTree(this); } @Override diff --git a/src/main/java/org/sablecc/sablecc/node/Token.java b/src/main/java/org/sablecc/sablecc/node/Token.java index cd88b31..861f498 100644 --- a/src/main/java/org/sablecc/sablecc/node/Token.java +++ b/src/main/java/org/sablecc/sablecc/node/Token.java @@ -12,6 +12,31 @@ public abstract class Token extends Node implements IToken private int line; private int pos; + public Token(String text, int line, int pos) + { + this.text = text; + this.line = line; + this.pos = pos; + } + + public Token(String text) + { + this(text, 0, 0); + } + + public Token() + { + this((String)null); + } + + public Token(Token token) + { + super(token); + this.text = token.text; + this.line = token.line; + this.pos = token.pos; + } + @Override public String getText() { diff --git a/src/main/resources/org/sablecc/sablecc/alternatives.txt b/src/main/resources/org/sablecc/sablecc/alternatives.txt index ef3c2d4..eb1569c 100644 --- a/src/main/resources/org/sablecc/sablecc/alternatives.txt +++ b/src/main/resources/org/sablecc/sablecc/alternatives.txt @@ -78,24 +78,29 @@ $ Macro:CloneHeader - @Override - public $0$ clone() + public $0$($0$ node) { - return new $0$( + super(node); + $ Macro:CloneBodyNode + set$0$(cloneNode(node._$1$_)); - cloneNode(this._$1$_)$2$ $ Macro:CloneBodyList + set$0$(cloneList(node._$1$_)); - cloneList(this._$0$_)$1$ $ Macro:CloneTail -); + } + + @Override + public $0$ clone() + { + return new $0$(this); } $ diff --git a/src/main/resources/org/sablecc/sablecc/productions.txt b/src/main/resources/org/sablecc/sablecc/productions.txt index 061f218..90b681f 100644 --- a/src/main/resources/org/sablecc/sablecc/productions.txt +++ b/src/main/resources/org/sablecc/sablecc/productions.txt @@ -12,6 +12,14 @@ package $0$; public abstract class $1$ extends Node { + public $1$() + {} + + public $1$($1$ node) + { + super(node); + } + @Override public abstract $1$ clone(); } diff --git a/src/main/resources/org/sablecc/sablecc/tokens.txt b/src/main/resources/org/sablecc/sablecc/tokens.txt index f93224c..c26f643 100644 --- a/src/main/resources/org/sablecc/sablecc/tokens.txt +++ b/src/main/resources/org/sablecc/sablecc/tokens.txt @@ -20,20 +20,23 @@ public final class $2$ extends Token { public $2$(String text) { - setText(text); + super(text); } public $2$(String text, int line, int pos) { - setText(text); - setLine(line); - setPos(pos); + super(text, line, pos); + } + + public $2$($2$ token) + { + super(token); } @Override public $2$ clone() { - return new $2$(getText(), getLine(), getPos()); + return new $2$(this); } @Override @@ -61,20 +64,23 @@ public final class $2$ extends Token { public $2$() { - super.setText("$3$"); + super("$3$"); } public $2$(int line, int pos) { - super.setText("$3$"); - setLine(line); - setPos(pos); + super("$3$", line, pos); + } + + public $2$($2$ token) + { + super(token); } @Override public $2$ clone() { - return new $2$(getLine(), getPos()); + return new $2$(this); } @Override diff --git a/src/main/resources/org/sablecc/sablecc/utils.txt b/src/main/resources/org/sablecc/sablecc/utils.txt index 983fc3e..05a3036 100644 --- a/src/main/resources/org/sablecc/sablecc/utils.txt +++ b/src/main/resources/org/sablecc/sablecc/utils.txt @@ -30,12 +30,17 @@ public final class Start extends Node setEOF(_eof_); } + public Start(Start node) + { + super(node); + set$2$(cloneNode(node._$3$_)); + setEOF(cloneNode(node._eof_)); + } + @Override public Start clone() { - return new Start( - cloneNode(this._$3$_), - cloneNode(this._eof_)); + return new Start(this); } @Override @@ -153,20 +158,23 @@ public final class EOF extends Token { public EOF() { - setText(""); + super(""); } public EOF(int line, int pos) { - setText(""); - setLine(line); - setPos(pos); + super("", line, pos); + } + + public EOF(EOF token) + { + super(token); } @Override public EOF clone() { - return new EOF(getLine(), getPos()); + return new EOF(this); } @Override @@ -193,6 +201,31 @@ public abstract class Token extends Node implements IToken private int line; private int pos; + public Token(String text, int line, int pos) + { + this.text = text; + this.line = line; + this.pos = pos; + } + + public Token(String text) + { + this(text, 0, 0); + } + + public Token() + { + this((String)null); + } + + public Token(Token token) + { + super(token); + this.text = token.text; + this.line = token.line; + this.pos = token.pos; + } + @Override public String getText() { @@ -263,6 +296,17 @@ public abstract class Node extends PositionedNode implements Switchable, Cloneab { private Node parent; + public Node() + {} + + public Node(Node node) + { + super(node); + // Copy constructor intentionally does not keep parent! + // The new copied node is not a child of the original parent anymore. + this.parent = null; + } + @Override public abstract Node clone(); -- GitLab