|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.sonar.sslr.grammar.LexerfulGrammarBuilder
public class LexerfulGrammarBuilder
A builder for creating Parsing Expression Grammars for lexerful parsing.
Lexer is required for parsers of such grammars.
Objects of following types can be used as an atomic parsing expressions:
LexerlessGrammarBuilder| Method Summary | |
|---|---|
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". |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method Detail |
|---|
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-expression
IllegalArgumentException - if given argument is not a parsing expressionpublic Object anyTokenButNot(Object e)
sequence(nextNot(e), anyToken())
Do not overuse this method.
e - sub-expression
IllegalArgumentException - if given argument is not a parsing expression
public Object isOneOfThem(TokenType t1,
TokenType... rest)
firstOf(t1, rest).
Do not overuse this method.
t1 - first type of tokenrest - rest of types
public 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-expression
IllegalArgumentException - if given argument is not a parsing expressionpublic Object exclusiveTill(Object e)
zeroOrMore(nextNot(e), anyToken()).
Do not overuse this method.
e - sub-expression
IllegalArgumentException - if any of given arguments is not a parsing expression
public Object exclusiveTill(Object e1,
Object... rest)
zeroOrMore(nextNot(firstOf(e, rest)), anyToken()).
Do not overuse this method.
e1 - first sub-expressionrest - rest of sub-expressions
IllegalArgumentException - 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-expression
IllegalArgumentException - if any of given arguments is not a parsing expression
public 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-expressions
IllegalArgumentException - if any of given arguments is not a parsing expression
public 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-expression
IllegalArgumentException - if any of given arguments is not a parsing expression
public 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-expressions
IllegalArgumentException - 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-expression
IllegalArgumentException - if given argument is not a parsing expression
public final Object optional(Object e1,
Object... rest)
optional(sequence(e, rest)).
e1 - first sub-expressionrest - rest of sub-expressions
IllegalArgumentException - 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-expression
IllegalArgumentException - if given argument is not a parsing expression
public final Object oneOrMore(Object e1,
Object... rest)
oneOrMore(sequence(e1, rest)).
e1 - first sub-expressionrest - rest of sub-expressions
IllegalArgumentException - 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-expression
IllegalArgumentException - if given argument is not a parsing expression
public final Object zeroOrMore(Object e1,
Object... rest)
zeroOrMore(sequence(e1, rest)).
e1 - sub-expressionrest - rest of sub-expressions
IllegalArgumentException - if any of given arguments is not a parsing expressionzeroOrMore(Object),
sequence(Object, Object)public final Object next(Object e)
e - sub-expression
IllegalArgumentException - if given argument is not a parsing expression
public final Object next(Object e1,
Object... rest)
next(sequence(e1, rest)).
e1 - first sub-expressionrest - rest of sub-expressions
IllegalArgumentException - if any of given arguments is not a parsing expressionnext(Object),
sequence(Object, Object)public final Object nextNot(Object e)
e - sub-expression
IllegalArgumentException - if given argument is not a parsing expression
public final Object nextNot(Object e1,
Object... rest)
nextNot(sequence(e1, rest)).
e1 - sub-expressionrest - rest of sub-expressions
IllegalArgumentException - 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)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||