public static String getRangeEscapedString(int codePointStart, int codePointEnd) { return codePointStart != codePointEnd ? getANTLRCharLiteralForChar(codePointStart) + ".." + getANTLRCharLiteralForChar(codePointEnd) : getANTLRCharLiteralForChar(codePointStart); } }
/** Given a literal like (the 3 char sequence with single quotes) 'a', * return the int value of 'a'. Convert escape sequences here also. * Return -1 if not single char. */ public static int getCharValueFromGrammarCharLiteral(String literal) { if ( literal==null || literal.length()<3 ) return -1; return getCharValueFromCharInGrammarLiteral(literal.substring(1,literal.length()-1)); }
public String getOptionString(String key) { GrammarAST value = getOptionAST(key); if ( value == null ) return null; if ( value instanceof ActionAST ) { return value.getText(); } else { String v = value.getText(); if ( v.startsWith("'") || v.startsWith("\"") ) { v = CharSupport.getStringFromGrammarStringLiteral(v); } return v; } }
@Override public Handle range(GrammarAST a, GrammarAST b) { ATNState left = newState(a); ATNState right = newState(b); int t1 = CharSupport.getCharValueFromGrammarCharLiteral(a.getText()); int t2 = CharSupport.getCharValueFromGrammarCharLiteral(b.getText()); left.addTransition(new RangeTransition(right, t1, t2)); a.atnState = left; b.atnState = left; return new Handle(left, right); }
@Override public Handle lexerCommand(GrammarAST ID) { LexerAction lexerAction = createLexerAction(ID, null); if (lexerAction != null) { return action(ID, lexerAction); } // fall back to standard action generation for the command ST cmdST = codegenTemplates.getInstanceOf("Lexer" + CharSupport.capitalize(ID.getText()) + "Command"); if (cmdST == null) { g.tool.errMgr.grammarError(ErrorType.INVALID_LEXER_COMMAND, g.fileName, ID.token, ID.getText()); return epsilon(ID); } if (cmdST.impl.formalArguments != null && cmdST.impl.formalArguments.containsKey("arg")) { g.tool.errMgr.grammarError(ErrorType.MISSING_LEXER_COMMAND_ARGUMENT, g.fileName, ID.token, ID.getText()); return epsilon(ID); } return action(cmdST.render()); }
CharSupport.getANTLRCharLiteralForChar(v), CharSupport.getIntervalSetEscapedString(matchSet)); break;
public static String getIntervalSetEscapedString(IntervalSet intervalSet) { StringBuilder buf = new StringBuilder(); Iterator<Interval> iter = intervalSet.getIntervals().iterator(); while (iter.hasNext()) { Interval interval = iter.next(); buf.append(getRangeEscapedString(interval.a, interval.b)); if (iter.hasNext()) { buf.append(" | "); } } return buf.toString(); }
endOff = cstr.length(); return parseHexValue(cstr, startOff, endOff); default: if ( cstr.startsWith("\\u{") ) { return parseHexValue(cstr, 3, cstr.indexOf('}'));
@Override public Handle range(GrammarAST a, GrammarAST b) { ATNState left = newState(a); ATNState right = newState(b); int t1 = CharSupport.getCharValueFromGrammarCharLiteral(a.getText()); int t2 = CharSupport.getCharValueFromGrammarCharLiteral(b.getText()); left.addTransition(new RangeTransition(right, t1, t2)); a.atnState = left; b.atnState = left; return new Handle(left, right); }
@Override public Handle lexerCommand(GrammarAST ID) { LexerAction lexerAction = createLexerAction(ID, null); if (lexerAction != null) { return action(ID, lexerAction); } // fall back to standard action generation for the command ST cmdST = codegenTemplates.getInstanceOf("Lexer" + CharSupport.capitalize(ID.getText()) + "Command"); if (cmdST == null) { g.tool.errMgr.grammarError(ErrorType.INVALID_LEXER_COMMAND, g.fileName, ID.token, ID.getText()); return epsilon(ID); } if (cmdST.impl.formalArguments != null && cmdST.impl.formalArguments.containsKey("arg")) { g.tool.errMgr.grammarError(ErrorType.MISSING_LEXER_COMMAND_ARGUMENT, g.fileName, ID.token, ID.getText()); return epsilon(ID); } return action(cmdST.render()); }
CharSupport.getANTLRCharLiteralForChar(v), CharSupport.getIntervalSetEscapedString(matchSet)); break;
public static String getIntervalSetEscapedString(IntervalSet intervalSet) { StringBuilder buf = new StringBuilder(); Iterator<Interval> iter = intervalSet.getIntervals().iterator(); while (iter.hasNext()) { Interval interval = iter.next(); buf.append(getRangeEscapedString(interval.a, interval.b)); if (iter.hasNext()) { buf.append(" | "); } } return buf.toString(); }
endOff = cstr.length(); return parseHexValue(cstr, startOff, endOff); default: if ( cstr.startsWith("\\u{") ) { return parseHexValue(cstr, 3, cstr.indexOf('}'));
protected int getTokenType(GrammarAST atom) { int ttype; if ( g.isLexer() ) { ttype = CharSupport.getCharValueFromGrammarCharLiteral(atom.getText()); } else { ttype = g.getTokenType(atom.getText()); } return ttype; }
public static String getRangeEscapedString(int codePointStart, int codePointEnd) { return codePointStart != codePointEnd ? getANTLRCharLiteralForChar(codePointStart) + ".." + getANTLRCharLiteralForChar(codePointEnd) : getANTLRCharLiteralForChar(codePointStart); } }
/** Given a literal like (the 3 char sequence with single quotes) 'a', * return the int value of 'a'. Convert escape sequences here also. * Return -1 if not single char. */ public static int getCharValueFromGrammarCharLiteral(String literal) { if ( literal==null || literal.length()<3 ) return -1; return getCharValueFromCharInGrammarLiteral(literal.substring(1,literal.length()-1)); }
public String getOptionString(String key) { GrammarAST value = getOptionAST(key); if ( value == null ) return null; if ( value instanceof ActionAST ) { return value.getText(); } else { String v = value.getText(); if ( v.startsWith("'") || v.startsWith("\"") ) { v = CharSupport.getStringFromGrammarStringLiteral(v); } return v; } }
@Override public Handle lexerCommand(GrammarAST ID) { LexerAction lexerAction = createLexerAction(ID, null); if (lexerAction != null) { return action(ID, lexerAction); } // fall back to standard action generation for the command ST cmdST = codegenTemplates.getInstanceOf("Lexer" + CharSupport.capitalize(ID.getText()) + "Command"); if (cmdST == null) { g.tool.errMgr.grammarError(ErrorType.INVALID_LEXER_COMMAND, g.fileName, ID.token, ID.getText()); return epsilon(ID); } if (cmdST.impl.formalArguments != null && cmdST.impl.formalArguments.containsKey("arg")) { g.tool.errMgr.grammarError(ErrorType.MISSING_LEXER_COMMAND_ARGUMENT, g.fileName, ID.token, ID.getText()); return epsilon(ID); } return action(cmdST.render()); }
CharSupport.getANTLRCharLiteralForChar(v), CharSupport.getIntervalSetEscapedString(matchSet)); break;
public static String getIntervalSetEscapedString(IntervalSet intervalSet) { StringBuilder buf = new StringBuilder(); Iterator<Interval> iter = intervalSet.getIntervals().iterator(); while (iter.hasNext()) { Interval interval = iter.next(); buf.append(getRangeEscapedString(interval.a, interval.b)); if (iter.hasNext()) { buf.append(" | "); } } return buf.toString(); }