org.sonar.sslr.internal.grammar
Class MutableParsingRule

java.lang.Object
  extended by org.sonar.sslr.internal.grammar.MutableParsingRule
All Implemented Interfaces:
AstNodeSkippingPolicy, AstNodeType, Rule, GrammarRuleKey, Matcher, CompilableGrammarRule, MemoParsingExpression, ParsingExpression

public class MutableParsingRule
extends Object
implements CompilableGrammarRule, Matcher, Rule, AstNodeSkippingPolicy, MemoParsingExpression, GrammarRuleKey


Constructor Summary
MutableParsingRule(GrammarRuleKey ruleKey)
           
MutableParsingRule(String name)
           
 
Method Summary
 Instruction[] compile(CompilationHandler compiler)
          Compiles this expression into a sequence of instructions.
 ParsingExpression getExpression()
           
 String getName()
           
 AstNodeType getRealAstNodeType()
           
 GrammarRuleKey getRuleKey()
           
 boolean hasToBeSkippedFromAst(AstNode node)
          Some AstNode can be pretty useless and makes a global AST less readable.
 Rule is(Object... e)
          Allows to provide definition of a grammar rule.
 void mock()
          Utility method used for unit testing in order to dynamically replace the definition of the rule to match as soon as a token whose value equals the name of the rule is encountered.
 Rule override(Object... e)
          Allows to override definition of a grammar rule.
 void recoveryRule()
           
 void setExpression(ParsingExpression expression)
           
 boolean shouldMemoize()
           
 void skip()
          Indicates that grammar rule should not lead to creation of AST node - its children should be attached directly to its parent.
 void skipIf(AstNodeSkippingPolicy policy)
          Defines policy of creation of AST node for this rule.
 void skipIfOneChild()
          Indicates that grammar rule should not lead to creation of AST node if it has exactly one child.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MutableParsingRule

public MutableParsingRule(String name)

MutableParsingRule

public MutableParsingRule(GrammarRuleKey ruleKey)
Method Detail

getName

public String getName()

getRealAstNodeType

public AstNodeType getRealAstNodeType()

getRuleKey

public GrammarRuleKey getRuleKey()
Specified by:
getRuleKey in interface CompilableGrammarRule

getExpression

public ParsingExpression getExpression()
Specified by:
getExpression in interface CompilableGrammarRule

is

public Rule is(Object... e)
Description copied from interface: Rule
Allows to provide definition of a grammar rule.

Note: this method can be called only once for a rule. If it is called more than once, an IllegalStateException will be thrown.

Specified by:
is in interface Rule
Parameters:
e - expression of grammar that defines this rule
Returns:
this (for method chaining)

override

public Rule override(Object... e)
Description copied from interface: Rule
Allows to override definition of a grammar rule.

This method has the same effect as #is(Object), except that it can be called more than once to redefine a rule from scratch.

Specified by:
override in interface Rule
Parameters:
e - expression of grammar that defines this rule
Returns:
this (for method chaining)

mock

public void mock()
Description copied from interface: Rule
Utility method used for unit testing in order to dynamically replace the definition of the rule to match as soon as a token whose value equals the name of the rule is encountered.

Specified by:
mock in interface Rule

setExpression

public void setExpression(ParsingExpression expression)
Specified by:
setExpression in interface CompilableGrammarRule

skip

public void skip()
Description copied from interface: Rule
Indicates that grammar rule should not lead to creation of AST node - its children should be attached directly to its parent.

Specified by:
skip in interface Rule

skipIfOneChild

public void skipIfOneChild()
Description copied from interface: Rule
Indicates that grammar rule should not lead to creation of AST node if it has exactly one child.

Specified by:
skipIfOneChild in interface Rule

skipIf

public void skipIf(AstNodeSkippingPolicy policy)
Description copied from interface: Rule
Defines policy of creation of AST node for this rule.

Specified by:
skipIf in interface Rule

recoveryRule

public void recoveryRule()
Specified by:
recoveryRule in interface Rule

hasToBeSkippedFromAst

public boolean hasToBeSkippedFromAst(AstNode node)
Description copied from interface: AstNodeSkippingPolicy
Some AstNode can be pretty useless and makes a global AST less readable. This method allows to automatically remove those AstNode from the AST.

Specified by:
hasToBeSkippedFromAst in interface AstNodeSkippingPolicy
Parameters:
node - the node that should or not be removed from the AST
Returns:
true if AstNode with this type must be skipped from the AST.

compile

public Instruction[] compile(CompilationHandler compiler)
Description copied from interface: ParsingExpression
Compiles this expression into a sequence of instructions.

Specified by:
compile in interface ParsingExpression

toString

public String toString()
Overrides:
toString in class Object

shouldMemoize

public boolean shouldMemoize()
Specified by:
shouldMemoize in interface MemoParsingExpression


Copyright © 2009-2014 SonarSource. All Rights Reserved.