Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java')
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java
index 850dfec4..1ff4c0e8 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java
@@ -2,11 +2,11 @@ package org.eclipse.xpand3.parser;
import java.util.Set;
-import org.antlr.runtime.BitSet;
import org.antlr.runtime.CommonToken;
-import org.antlr.runtime.IntStream;
import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.Token;
import org.antlr.runtime.TokenStream;
+import org.antlr.runtime.tree.CommonTreeAdaptor;
import org.eclipse.xpand3.node.CompositeNode;
import org.eclipse.xpand3.node.LeafNode;
import org.eclipse.xpand3.node.LexedToken;
@@ -20,6 +20,14 @@ public abstract class AbstractXpand3NodeParser extends Xpand3Parser {
public AbstractXpand3NodeParser(TokenStream input) {
super(input);
+ setTreeAdaptor(new CommonTreeAdaptor() {
+ @Override
+ public Object create(Token arg0) {
+ if (arg0 != null)
+ createLexedToken((CommonToken) arg0);
+ return super.create(arg0);
+ }
+ });
}
protected abstract Set<String> normalizableRules();
@@ -53,19 +61,15 @@ public abstract class AbstractXpand3NodeParser extends Xpand3Parser {
throw new RuntimeException(getErrorMessage(arg0, getTokenNames()), arg0);
}
- @Override
- public void match(IntStream arg0, int arg1, BitSet arg2)
- throws RecognitionException {
+ public void createLexedToken(CommonToken ct) {
LeafNode n = NodeFactory.eINSTANCE.createLeafNode();
current.getChildren().add(n);
LexedToken myToken = NodeFactory.eINSTANCE.createLexedToken();
n.setToken(myToken);
- CommonToken ct = (CommonToken) input.LT(1);
myToken.setText(ct.getText());
myToken.setStart(ct.getStartIndex());
myToken.setEnd(ct.getStopIndex());
myToken.setLine(ct.getLine());
- super.match(arg0, arg1, arg2);
}
public Node getRootNode() {

Back to the top