public class LexerlessGrammarBuilder extends Object
Objects of following types can be used as an atomic parsing expressions:
LexerfulGrammarBuilder
Modifier and Type | Method and Description |
---|---|
LexerlessGrammar |
build()
Constructs grammar.
|
Object |
commentTrivia(Object e)
Creates parsing expression - "comment trivia".
|
protected ParsingExpression |
convertToExpression(Object e) |
protected ParsingExpression[] |
convertToExpressions(List<Object> expressions) |
static LexerlessGrammarBuilder |
create() |
static LexerlessGrammarBuilder |
createBasedOn(LexerlessGrammarBuilder... base) |
Object |
endOfInput()
Creates parsing expression - "end of input".
|
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 |
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".
|
Object |
regexp(String regexp)
Creates parsing expression based on regular expression.
|
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 |
skippedTrivia(Object e)
Creates parsing expression - "skipped trivia".
|
Object |
token(TokenType tokenType,
Object e)
Creates parsing expression - "token".
|
Object |
zeroOrMore(Object e)
Creates parsing expression - "zero or more".
|
Object |
zeroOrMore(Object e1,
Object... rest)
Creates parsing expression - "zero or more".
|
public static LexerlessGrammarBuilder create()
public static LexerlessGrammarBuilder createBasedOn(LexerlessGrammarBuilder... base)
public GrammarRuleBuilder rule(GrammarRuleKey ruleKey)
public void setRootRule(GrammarRuleKey ruleKey)
public LexerlessGrammar build()
GrammarException
- if some of rules were used, but not definedpublic Object regexp(String regexp)
regexp
- regular expressionPatternSyntaxException
- if the expression's syntax is invalidpublic Object endOfInput()
public Object token(TokenType tokenType, Object e)
e
- sub-expressionIllegalArgumentException
- if given argument is not a parsing expressionpublic Object commentTrivia(Object e)
e
- sub-expressionIllegalArgumentException
- if given argument is not a parsing expressionpublic Object skippedTrivia(Object e)
e
- sub-expressionIllegalArgumentException
- if given argument 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.