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–2017 SonarSource. All rights reserved.