public static void augmentTokensWithOriginalPosition(final Grammar g, GrammarAST tree) { if ( tree==null ) return; List<GrammarAST> optionsSubTrees = tree.getNodesWithType(ANTLRParser.ELEMENT_OPTIONS); for (int i = 0; i < optionsSubTrees.size(); i++) { GrammarAST t = optionsSubTrees.get(i); CommonTree elWithOpt = t.parent; if ( elWithOpt instanceof GrammarASTWithOptions ) { Map<String, GrammarAST> options = ((GrammarASTWithOptions) elWithOpt).getOptions(); if ( options.containsKey(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME) ) { GrammarToken newTok = new GrammarToken(g, elWithOpt.getToken()); newTok.originalTokenIndex = Integer.valueOf(options.get(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME).getText()); elWithOpt.token = newTok; GrammarAST originalNode = g.ast.getNodeWithTokenIndex(newTok.getTokenIndex()); if (originalNode != null) { // update the AST node start/stop index to match the values // of the corresponding node in the original parse tree. elWithOpt.setTokenStartIndex(originalNode.getTokenStartIndex()); elWithOpt.setTokenStopIndex(originalNode.getTokenStopIndex()); } else { // the original AST node could not be located by index; // make sure to assign valid values for the start/stop // index so toTokenString will not throw exceptions. elWithOpt.setTokenStartIndex(newTok.getTokenIndex()); elWithOpt.setTokenStopIndex(newTok.getTokenIndex()); } } } } }
public static void augmentTokensWithOriginalPosition(final Grammar g, GrammarAST tree) { if ( tree==null ) return; List<GrammarAST> optionsSubTrees = tree.getNodesWithType(ANTLRParser.ELEMENT_OPTIONS); for (int i = 0; i < optionsSubTrees.size(); i++) { GrammarAST t = optionsSubTrees.get(i); CommonTree elWithOpt = t.parent; if ( elWithOpt instanceof GrammarASTWithOptions ) { Map<String, GrammarAST> options = ((GrammarASTWithOptions) elWithOpt).getOptions(); if ( options.containsKey(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME) ) { GrammarToken newTok = new GrammarToken(g, elWithOpt.getToken()); newTok.originalTokenIndex = Integer.valueOf(options.get(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME).getText()); elWithOpt.token = newTok; GrammarAST originalNode = g.ast.getNodeWithTokenIndex(newTok.getTokenIndex()); if (originalNode != null) { // update the AST node start/stop index to match the values // of the corresponding node in the original parse tree. elWithOpt.setTokenStartIndex(originalNode.getTokenStartIndex()); elWithOpt.setTokenStopIndex(originalNode.getTokenStopIndex()); } else { // the original AST node could not be located by index; // make sure to assign valid values for the start/stop // index so toTokenString will not throw exceptions. elWithOpt.setTokenStartIndex(newTok.getTokenIndex()); elWithOpt.setTokenStopIndex(newTok.getTokenIndex()); } } } } }
public static void augmentTokensWithOriginalPosition(final Grammar g, GrammarAST tree) { if ( tree==null ) return; List<GrammarAST> optionsSubTrees = tree.getNodesWithType(ANTLRParser.ELEMENT_OPTIONS); for (int i = 0; i < optionsSubTrees.size(); i++) { GrammarAST t = optionsSubTrees.get(i); CommonTree elWithOpt = t.parent; if ( elWithOpt instanceof GrammarASTWithOptions ) { Map<String, GrammarAST> options = ((GrammarASTWithOptions) elWithOpt).getOptions(); if ( options.containsKey(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME) ) { GrammarToken newTok = new GrammarToken(g, elWithOpt.getToken()); newTok.originalTokenIndex = Integer.valueOf(options.get(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME).getText()); elWithOpt.token = newTok; GrammarAST originalNode = g.ast.getNodeWithTokenIndex(newTok.getTokenIndex()); if (originalNode != null) { // update the AST node start/stop index to match the values // of the corresponding node in the original parse tree. elWithOpt.setTokenStartIndex(originalNode.getTokenStartIndex()); elWithOpt.setTokenStopIndex(originalNode.getTokenStopIndex()); } else { // the original AST node could not be located by index; // make sure to assign valid values for the start/stop // index so toTokenString will not throw exceptions. elWithOpt.setTokenStartIndex(newTok.getTokenIndex()); elWithOpt.setTokenStopIndex(newTok.getTokenIndex()); } } } } }
public static void augmentTokensWithOriginalPosition(final Grammar g, GrammarAST tree) { if ( tree==null ) return; List<GrammarAST> optionsSubTrees = tree.getNodesWithType(ANTLRParser.ELEMENT_OPTIONS); for (int i = 0; i < optionsSubTrees.size(); i++) { GrammarAST t = optionsSubTrees.get(i); CommonTree elWithOpt = t.parent; if ( elWithOpt instanceof GrammarASTWithOptions ) { Map<String, GrammarAST> options = ((GrammarASTWithOptions) elWithOpt).getOptions(); if ( options.containsKey(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME) ) { GrammarToken newTok = new GrammarToken(g, elWithOpt.getToken()); newTok.originalTokenIndex = Integer.valueOf(options.get(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME).getText()); elWithOpt.token = newTok; GrammarAST originalNode = g.ast.getNodeWithTokenIndex(newTok.getTokenIndex()); if (originalNode != null) { // update the AST node start/stop index to match the values // of the corresponding node in the original parse tree. elWithOpt.setTokenStartIndex(originalNode.getTokenStartIndex()); elWithOpt.setTokenStopIndex(originalNode.getTokenStopIndex()); } else { // the original AST node could not be located by index; // make sure to assign valid values for the start/stop // index so toTokenString will not throw exceptions. elWithOpt.setTokenStartIndex(newTok.getTokenIndex()); elWithOpt.setTokenStopIndex(newTok.getTokenIndex()); } } } } }
public static void augmentTokensWithOriginalPosition(final Grammar g, GrammarAST tree) { if ( tree==null ) return; List<GrammarAST> optionsSubTrees = tree.getNodesWithType(ANTLRParser.ELEMENT_OPTIONS); for (int i = 0; i < optionsSubTrees.size(); i++) { GrammarAST t = optionsSubTrees.get(i); CommonTree elWithOpt = t.parent; if ( elWithOpt instanceof GrammarASTWithOptions ) { Map<String, GrammarAST> options = ((GrammarASTWithOptions) elWithOpt).getOptions(); if ( options.containsKey(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME) ) { GrammarToken newTok = new GrammarToken(g, elWithOpt.getToken()); newTok.originalTokenIndex = Integer.valueOf(options.get(LeftRecursiveRuleTransformer.TOKENINDEX_OPTION_NAME).getText()); elWithOpt.token = newTok; GrammarAST originalNode = g.ast.getNodeWithTokenIndex(newTok.getTokenIndex()); if (originalNode != null) { // update the AST node start/stop index to match the values // of the corresponding node in the original parse tree. elWithOpt.setTokenStartIndex(originalNode.getTokenStartIndex()); elWithOpt.setTokenStopIndex(originalNode.getTokenStopIndex()); } else { // the original AST node could not be located by index; // make sure to assign valid values for the start/stop // index so toTokenString will not throw exceptions. elWithOpt.setTokenStartIndex(newTok.getTokenIndex()); elWithOpt.setTokenStopIndex(newTok.getTokenIndex()); } } } } }