private static Object keyword(String value, LexerlessGrammarBuilder b) { return b.sequence(value, b.nextNot(letterOrDigit), spacing); }
private static Object word(LexerlessGrammarBuilder b, String word) { return b.sequence(SPACING, word, b.nextNot(IDENTIFIER_PART)); }
private static Object semiKeyword(String value, LexerlessGrammarBuilder b) { return b.sequence(value, b.nextNot(letterOrDigit), spacing); }
private static Object word(LexerlessGrammarBuilder b, String value) { return b.sequence(SPACING, b.token(GenericTokenType.IDENTIFIER, value), b.nextNot(LETTER_OR_DIGIT)); }
private static void keywords(LexerlessGrammarBuilder b) { for (FlexKeyword k : FlexKeyword.values()) { b.rule(k).is(SPACING, k.getValue(), b.nextNot(IDENTIFIER_PART)); } List<FlexKeyword> keywords = FlexKeyword.keywords(); Object[] rest = new Object[keywords.size() - 2]; for (int i = 2; i < keywords.size(); i++) { rest[i - 2] = keywords.get(i); } b.rule(KEYWORDS).is(b.firstOf(keywords.get(0), keywords.get(1), rest)); }
private static Object word(LexerlessGrammarBuilder b, String word) { return b.sequence(SPACING, b.regexp("(?i)" + word), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART))); }
private static Object word(LexerlessGrammarBuilder b, String word) { return b.sequence(SPACING, b.regexp("(?i)" + word), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART))); }
private static void keywords(LexerlessGrammarBuilder b) { b.rule(LETTER_OR_DIGIT).is(javaIdentifierPart(b)); for (JavaKeyword tokenType : JavaKeyword.values()) { b.rule(tokenType).is(tokenType.getValue(), b.nextNot(LETTER_OR_DIGIT), SPACING); } String[] keywords = JavaKeyword.keywordValues(); Arrays.sort(keywords); ArrayUtils.reverse(keywords); b.rule(KEYWORD).is( b.firstOf( keywords[0], keywords[1], ArrayUtils.subarray(keywords, 2, keywords.length)), b.nextNot(LETTER_OR_DIGIT)); }
private static void keywords(LexerlessGrammarBuilder b) { b.rule(LETTER_OR_DIGIT).is(javaIdentifierPart(b)); for (JavaKeyword tokenType : JavaKeyword.values()) { b.rule(tokenType).is(tokenType.getValue(), b.nextNot(LETTER_OR_DIGIT), SPACING); } String[] keywords = JavaKeyword.keywordValues(); Arrays.sort(keywords); ArrayUtils.reverse(keywords); b.rule(KEYWORD).is( b.firstOf( keywords[0], keywords[1], ArrayUtils.subarray(keywords, 2, keywords.length)), b.nextNot(LETTER_OR_DIGIT)); }
private static void keywords(LexerlessGrammarBuilder b) { b.rule(LETTER_OR_DIGIT).is(b.regexp("\\p{javaJavaIdentifierPart}")); Object[] rest = new Object[EcmaScriptKeyword.values().length - 2]; for (int i = 0; i < EcmaScriptKeyword.values().length; i++) { EcmaScriptKeyword tokenType = EcmaScriptKeyword.values()[i]; b.rule(tokenType).is(SPACING, tokenType.getValue(), b.nextNot(LETTER_OR_DIGIT)); if (i > 1) { rest[i - 2] = tokenType.getValue(); } } b.rule(KEYWORD).is(b.firstOf( EcmaScriptKeyword.keywordValues()[0], EcmaScriptKeyword.keywordValues()[1], rest), b.nextNot(LETTER_OR_DIGIT)); }
private static void keywords(LexerlessGrammarBuilder b) { Object[] rest = new Object[PHPKeyword.values().length - 2]; for (int i = 0; i < PHPKeyword.values().length; i++) { PHPKeyword tokenType = PHPKeyword.values()[i]; // PHP keywords are case insensitive b.rule(tokenType).is(SPACING, b.regexp("(?i)" + tokenType.getValue()), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART))).skip(); if (i > 1) { rest[i - 2] = b.regexp("(?i)" + tokenType.getValue()); } } b.rule(KEYWORDS).is(SPACING, b.firstOf( PHPKeyword.getKeywordValues()[0], PHPKeyword.getKeywordValues()[1], rest), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART)) ); }
private static void keywords(LexerlessGrammarBuilder b) { Object[] rest = new Object[PHPKeyword.values().length - 2]; for (int i = 0; i < PHPKeyword.values().length; i++) { PHPKeyword tokenType = PHPKeyword.values()[i]; // PHP keywords are case insensitive b.rule(tokenType).is(SPACING, b.regexp("(?i)" + tokenType.getValue()), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART))).skip(); if (i > 1) { rest[i - 2] = b.regexp("(?i)" + tokenType.getValue()); } } b.rule(KEYWORDS).is(SPACING, b.firstOf( PHPKeyword.getKeywordValues()[0], PHPKeyword.getKeywordValues()[1], rest), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART)) ); }
public static Grammar createGrammar() { LexerlessGrammarBuilder b = LexerlessGrammarBuilder.create(); b.rule(S).is(b.next(A, "c"), b.oneOrMore("a"), B, b.nextNot("a", "b", "c")); b.rule(A).is("a", b.optional(A), "b"); b.rule(B).is("b", b.optional(B), "c"); return b.build(); }
/** * 3.10. Literals */ private static void literals(LexerlessGrammarBuilder b) { b.rule(SPACING).is( b.skippedTrivia(whitespace(b)), b.zeroOrMore( b.commentTrivia(b.firstOf(inlineComment(b), multilineComment(b))), b.skippedTrivia(whitespace(b)))); b.rule(EOF).is(b.token(GenericTokenType.EOF, b.endOfInput())); b.rule(CHARACTER_LITERAL).is(characterLiteral(b), SPACING); b.rule(JavaTokenType.LITERAL).is(stringLiteral(b), SPACING); b.rule(FLOAT_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[fF]|[0-9][0-9_]*+[fF]"), SPACING); b.rule(DOUBLE_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[dD]?+|[0-9][0-9_]*+[dD]"), SPACING); b.rule(LONG_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP + "[lL]"), SPACING); b.rule(INTEGER_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP), SPACING); b.rule(JavaTokenType.IDENTIFIER).is( b.firstOf( b.next(ENUM), b.nextNot(KEYWORD)), javaIdentifier(b), SPACING); }
/** * 3.10. Literals */ private static void literals(LexerlessGrammarBuilder b) { b.rule(SPACING).is( b.skippedTrivia(whitespace(b)), b.zeroOrMore( b.commentTrivia(b.firstOf(inlineComment(b), multilineComment(b))), b.skippedTrivia(whitespace(b)))); b.rule(EOF).is(b.token(GenericTokenType.EOF, b.endOfInput())); b.rule(CHARACTER_LITERAL).is(characterLiteral(b), SPACING); b.rule(JavaTokenType.STRING_LITERAL).is(stringLiteral(b), SPACING); b.rule(FLOAT_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[fF]|[0-9][0-9_]*+[fF]"), SPACING); b.rule(DOUBLE_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[dD]?+|[0-9][0-9_]*+[dD]"), SPACING); b.rule(LONG_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP + "[lL]"), SPACING); b.rule(INTEGER_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP), SPACING); b.rule(JavaTokenType.IDENTIFIER).is( b.firstOf( b.next(ENUM), b.nextNot(KEYWORD)), javaIdentifier(b), SPACING); }
/** * 3.10. Literals */ private static void literals(LexerlessGrammarBuilder b) { b.rule(SPACING).is( b.skippedTrivia(whitespace(b)), b.zeroOrMore( b.commentTrivia(b.firstOf(inlineComment(b), multilineComment(b))), b.skippedTrivia(whitespace(b)))); b.rule(EOF).is(b.token(GenericTokenType.EOF, b.endOfInput())); b.rule(CHARACTER_LITERAL).is(characterLiteral(b), SPACING); b.rule(JavaTokenType.LITERAL).is(stringLiteral(b), SPACING); b.rule(FLOAT_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[fF]|[0-9][0-9_]*+[fF]"), SPACING); b.rule(DOUBLE_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[dD]?+|[0-9][0-9_]*+[dD]"), SPACING); b.rule(LONG_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP + "[lL]"), SPACING); b.rule(INTEGER_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP), SPACING); b.rule(JavaTokenType.IDENTIFIER).is( b.firstOf( b.next(ENUM), b.nextNot(KEYWORD)), javaIdentifier(b), SPACING); }
/** * 3.10. Literals */ private static void literals(LexerlessGrammarBuilder b) { b.rule(SPACING).is( b.skippedTrivia(whitespace(b)), b.zeroOrMore( b.commentTrivia(b.firstOf(inlineComment(b), multilineComment(b))), b.skippedTrivia(whitespace(b)))); b.rule(EOF).is(b.token(GenericTokenType.EOF, b.endOfInput())); b.rule(CHARACTER_LITERAL).is(characterLiteral(b), SPACING); b.rule(JavaTokenType.STRING_LITERAL).is(stringLiteral(b), SPACING); b.rule(FLOAT_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[fF]|[0-9][0-9_]*+[fF]"), SPACING); b.rule(DOUBLE_LITERAL).is(b.regexp(FLOATING_LITERAL_WITHOUT_SUFFIX_REGEXP + "[dD]?+|[0-9][0-9_]*+[dD]"), SPACING); b.rule(LONG_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP + "[lL]"), SPACING); b.rule(INTEGER_LITERAL).is(b.regexp(INTEGER_LITERAL_REGEXP), SPACING); b.rule(JavaTokenType.IDENTIFIER).is( b.firstOf( b.next(ENUM), b.nextNot(KEYWORD)), javaIdentifier(b), SPACING); }
b.sequence(/* hack: */b.nextNot(NAMESPACE), ATTRIBUTE_EXPR), RESERVED_NAMESPACE, b.sequence(LBRAKET, ASSIGNMENT_EXPR, RBRAKET)));
b.nextNot(b.regexp("when[\\s]+|when\\(")), _IDENT)));
b.nextNot(b.regexp("when[\\s]+|when\\(")), _IDENT)));