public class LexerfulGrammarBuilder extends Object
Lexer is required for parsers of such grammars.
Objects of following types can be used as an atomic parsing expressions:
LexerlessGrammarBuilder| Modifier and Type | Method and Description |
|---|---|
Object |
adjacent(Object e)
Creates parsing expression - "adjacent".
|
Object |
anyToken()
Creates parsing expression - "any token".
|
Object |
anyTokenButNot(Object e)
Creates parsing expression - "any token but not".
|
Object |
bridge(TokenType from,
TokenType to)
Creates parsing expression - "bridge".
|
Grammar |
build()
Constructs grammar.
|
Grammar |
buildWithMemoizationOfMatchesForAllRules()
Constructs grammar with memoization of matches for all rules.
|
protected ParsingExpression |
convertToExpression(Object e) |
protected ParsingExpression[] |
convertToExpressions(List<Object> expressions) |
static LexerfulGrammarBuilder |
create() |
static LexerfulGrammarBuilder |
createBasedOn(LexerfulGrammarBuilder... base) |
Object |
everything()
Deprecated.
in 1.19, use
anyToken() instead. |
Object |
exclusiveTill(Object e)
Creates parsing expression - "exclusive till".
|
Object |
exclusiveTill(Object e1,
Object... rest)
Creates parsing expression - "exclusive till".
|
Object |
firstOf(Object e1,
Object e2)
Creates parsing expression - "first of".
|
Object |
firstOf(Object e1,
Object e2,
Object... rest)
Creates parsing expression - "first of".
|
Object |
isOneOfThem(TokenType t1,
TokenType... rest)
Creates parsing expression - "is one of them".
|
Object |
next(Object e)
Creates parsing expression - "next".
|
Object |
next(Object e1,
Object... rest)
Creates parsing expression - "next".
|
Object |
nextNot(Object e)
Creates parsing expression - "next not".
|
Object |
nextNot(Object e1,
Object... rest)
Creates parsing expression - "next not".
|
Object |
nothing()
Creates parsing expression - "nothing".
|
Object |
oneOrMore(Object e)
Creates parsing expression - "one or more".
|
Object |
oneOrMore(Object e1,
Object... rest)
Creates parsing expression - "one or more".
|
Object |
optional(Object e)
Creates parsing expression - "optional".
|
Object |
optional(Object e1,
Object... rest)
Creates parsing expression - "optional".
|
GrammarRuleBuilder |
rule(GrammarRuleKey ruleKey)
Allows to describe rule.
|
Object |
sequence(Object e1,
Object e2)
Creates parsing expression - "sequence".
|
Object |
sequence(Object e1,
Object e2,
Object... rest)
Creates parsing expression - "sequence".
|
void |
setRootRule(GrammarRuleKey ruleKey)
Allows to specify that given rule should be root for grammar.
|
Object |
till(Object e)
Creates parsing expression - "till".
|
Object |
tillNewLine()
Creates parsing expression - "till new line".
|
Object |
zeroOrMore(Object e)
Creates parsing expression - "zero or more".
|
Object |
zeroOrMore(Object e1,
Object... rest)
Creates parsing expression - "zero or more".
|
public static LexerfulGrammarBuilder create()
public static LexerfulGrammarBuilder createBasedOn(LexerfulGrammarBuilder... base)
public GrammarRuleBuilder rule(GrammarRuleKey ruleKey)
public void setRootRule(GrammarRuleKey ruleKey)
public Grammar build()
GrammarException - if some of rules were used, but not definedbuildWithMemoizationOfMatchesForAllRules()public Grammar buildWithMemoizationOfMatchesForAllRules()
GrammarException - if some of rules were used, but not definedbuild()public Object adjacent(Object e)
e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic Object anyTokenButNot(Object e)
sequence(nextNot(e), anyToken())
Do not overuse this method.e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic Object isOneOfThem(TokenType t1, TokenType... rest)
firstOf(t1, rest).
Do not overuse this method.t1 - first type of tokenrest - rest of typespublic Object bridge(TokenType from, TokenType to)
rule(bridge).is(
from,
zeroOrMore(firstOf(
sequence(nextNot(firstOf(from, to)), anyToken()),
bridge
)),
to
).skip()
Do not overuse this expression.@Deprecated public Object everything()
anyToken() instead.public Object anyToken()
public Object tillNewLine()
public Object till(Object e)
sequence(zeroOrMore(nextNot(e), anyToken()), e).
Do not overuse this method.e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic Object exclusiveTill(Object e)
zeroOrMore(nextNot(e), anyToken()).
Do not overuse this method.e - sub-expressionIllegalArgumentException - if any of given arguments is not a parsing expressionpublic Object exclusiveTill(Object e1, Object... rest)
zeroOrMore(nextNot(firstOf(e, rest)), anyToken()).
Do not overuse this method.e1 - first sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionprotected ParsingExpression convertToExpression(Object e)
public final Object sequence(Object e1, Object e2)
e1 - first sub-expressione2 - second sub-expressionIllegalArgumentException - if any of given arguments is not a parsing expressionpublic final Object sequence(Object e1, Object e2, Object... rest)
sequence(Object, Object) for more details.e1 - first sub-expressione2 - second sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionpublic final Object firstOf(Object e1, Object e2)
Be aware that in expression firstOf("foo", sequence("foo", "bar")) second sub-expression will never be executed.
e1 - first sub-expressione2 - second sub-expressionIllegalArgumentException - if any of given arguments is not a parsing expressionpublic final Object firstOf(Object e1, Object e2, Object... rest)
firstOf(Object, Object) for more details.e1 - first sub-expressione2 - second sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionpublic final Object optional(Object e)
Be aware that this expression is greedy, i.e. expression sequence(optional("foo"), "foo") will never succeed.
e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic final Object optional(Object e1, Object... rest)
optional(sequence(e, rest)).e1 - first sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionoptional(Object),
sequence(Object, Object)public final Object oneOrMore(Object e)
Be aware that:
sequence(oneOrMore("foo"), "foo") will never succeed.
oneOrMore(optional("foo")) parser will report infinite loop.
e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic final Object oneOrMore(Object e1, Object... rest)
oneOrMore(sequence(e1, rest)).e1 - first sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressiononeOrMore(Object),
sequence(Object, Object)public final Object zeroOrMore(Object e)
Be aware that:
sequence(zeroOrMore("foo"), "foo") will never succeed.
zeroOrMore(optional("foo")) parser will report infinite loop.
e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic final Object zeroOrMore(Object e1, Object... rest)
zeroOrMore(sequence(e1, rest)).e1 - sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionzeroOrMore(Object),
sequence(Object, Object)public final Object next(Object e)
e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic final Object next(Object e1, Object... rest)
next(sequence(e1, rest)).e1 - first sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionnext(Object),
sequence(Object, Object)public final Object nextNot(Object e)
e - sub-expressionIllegalArgumentException - if given argument is not a parsing expressionpublic final Object nextNot(Object e1, Object... rest)
nextNot(sequence(e1, rest)).e1 - sub-expressionrest - rest of sub-expressionsIllegalArgumentException - if any of given arguments is not a parsing expressionnextNot(Object),
sequence(Object, Object)public final Object nothing()
protected final ParsingExpression[] convertToExpressions(List<Object> expressions)
Copyright © 2009–2018 SonarSource. All rights reserved.