com.sonar.sslr.impl.matcher
Class RuleDefinition

java.lang.Object
  extended by com.sonar.sslr.impl.matcher.RuleDefinition
All Implemented Interfaces:
AstNodeSkippingPolicy, AstNodeType, Rule, GrammarRuleKey, Matcher, CompilableGrammarRule, MemoParsingExpression, ParsingExpression

public class RuleDefinition
extends Object
implements Rule, AstNodeSkippingPolicy, GrammarRuleKey, CompilableGrammarRule, MemoParsingExpression

This class is not intended to be instantiated or subclassed by clients.


Constructor Summary
RuleDefinition(GrammarRuleKey ruleKey)
           
RuleDefinition(String name)
           
 
Method Summary
 Instruction[] compile(CompilationHandler compiler)
          Compiles this expression into a sequence of instructions.
 void enableMemoization()
           
 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.
 RuleDefinition 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.
 RuleDefinition 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 astNodeSkipPolicy)
          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

RuleDefinition

public RuleDefinition(String name)

RuleDefinition

public RuleDefinition(GrammarRuleKey ruleKey)
Method Detail

getName

public String getName()

is

public RuleDefinition 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 RuleDefinition 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

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

skipIf

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

Specified by:
skipIf 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

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.

getRealAstNodeType

public AstNodeType getRealAstNodeType()
Since:
1.18

getRuleKey

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

getExpression

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

setExpression

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

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

enableMemoization

public void enableMemoization()


Copyright © 2009-2014 SonarSource. All Rights Reserved.