private static Object characterLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("'"), b.regexp("'([^'\\\\]*+(\\\\[\\s\\S])?+)*+'")); }
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(); }
b.sequence(SPACING, SEMI), b.sequence(SPACING_NO_LB, LINE_TERMINATOR_SEQUENCE), b.sequence(SPACING_NO_LB, b.next("}")), b.sequence(SPACING, b.endOfInput()))); b.sequence(SPACING_NO_LB, NEXT_NOT_LB, SEMI), b.sequence(SPACING_NO_LB, LINE_TERMINATOR_SEQUENCE), b.sequence(SPACING_NO_LB, b.next("}")), b.sequence(SPACING_NO_LB, b.endOfInput())));
private static Object characterLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("'"), b.regexp("'([^'\\\\]*+(\\\\[\\s\\S])?+)*+'")); }
/** * 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); }
private static Object stringLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("\""), b.regexp("\"([^\"\\\\]*+(\\\\[\\s\\S])?+)*+\"")); }
/** * 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); }
private static Object stringLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("\""), b.regexp("\"([^\"\\\\]*+(\\\\[\\s\\S])?+)*+\"")); }
/** * 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); }
private static Object characterLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("'"), b.regexp("'([^'\\\\]*+(\\\\[\\s\\S])?+)*+'")); }
/** * 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); }
private static Object characterLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("'"), b.regexp("'([^'\\\\]*+(\\\\[\\s\\S])?+)*+'")); }
b.sequence(SPACING, ";"), b.sequence(SPACING_NO_LB, b.regexp(NEWLINE_REGEXP)), b.sequence(SPACING_NO_LB, b.next("}")), b.sequence(SPACING, b.endOfInput()) )); b.sequence(SPACING_NO_LB, ";"), b.sequence(SPACING_NO_LB, b.regexp(NEWLINE_REGEXP)), b.sequence(SPACING_NO_LB, b.next("}")), b.sequence(SPACING_NO_LB, b.endOfInput()) ));
private static Object stringLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("\""), b.regexp("\"([^\"\\\\]*+(\\\\[\\s\\S])?+)*+\"")); }
SIMPLE_SELECTOR, b.zeroOrMore(COMBINATORS, SIMPLE_SELECTOR), b.optional(WHITESPACES, b.next(b.firstOf(comma, eof))))); b.rule(COMBINATORS).is(b.firstOf(DESCENDANT_COMB, ADJACENT_COMB, PRECEDED_COMB, CHILD_COMB)).skip(); b.rule(DESCENDANT_COMB).is(WHITESPACES, b.nextNot(b.firstOf(">", "+", "~")), b.next(SIMPLE_SELECTOR)); b.rule(CHILD_COMB).is(addSpacing(">", b)); b.rule(ADJACENT_COMB).is(addSpacing("+", b)); b.rule(SIMPLE_SELECTOR).is( b.firstOf(UNIVERSAL_SELECTOR, TYPE_SELECTOR, animationEvent), b.optional(WHITESPACES, b.next(COMBINATORS))); b.rule(TYPE_SELECTOR).is(IDENT, b.zeroOrMore(SUB_S)); b.rule(UNIVERSAL_SELECTOR).is(
private static Object stringLiteral(LexerlessGrammarBuilder b) { return b.sequence(b.next("\""), b.regexp("\"([^\"\\\\]*+(\\\\[\\s\\S])?+)*+\"")); }
b.rule(NEXT_IS_DOLLAR).is(b.next(PHPPunctuator.DOLLAR)); b.rule(VARIABLE_VARIABLE_DOLLAR).is(PHPPunctuator.DOLLAR, b.nextNot(b.firstOf(IDENTIFIER, KEYWORDS, PHPPunctuator.LCURLYBRACE)));
SPACING, b.nextNot(b.firstOf(">", "+", "~")), b.next(COMPOUND_SELECTOR))));
SPACING, b.nextNot(b.firstOf(">", "+", "~")), b.next(COMPOUND_SELECTOR))));
b.rule(NEXT_IS_DOLLAR).is(b.next(PHPPunctuator.DOLLAR)); b.rule(VARIABLE_VARIABLE_DOLLAR).is(PHPPunctuator.DOLLAR, b.nextNot(b.firstOf(IDENTIFIER, KEYWORDS, PHPPunctuator.LCURLYBRACE)));