Package com.sonar.sslr.impl.matcher
Class RuleDefinition
- java.lang.Object
-
- com.sonar.sslr.impl.matcher.RuleDefinition
-
- All Implemented Interfaces:
AstNodeSkippingPolicy
,AstNodeType
,Rule
,Matcher
,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
Constructors Constructor Description RuleDefinition(String name)
RuleDefinition(GrammarRuleKey ruleKey)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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
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
skipIfOneChild()
Indicates that grammar rule should not lead to creation of AST node if it has exactly one child.String
toString()
-
-
-
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.
-
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.
-
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.
-
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.
-
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 interfaceRule
-
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 interfaceAstNodeSkippingPolicy
- 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 interfaceCompilableGrammarRule
-
getExpression
public ParsingExpression getExpression()
- Specified by:
getExpression
in interfaceCompilableGrammarRule
-
setExpression
public void setExpression(ParsingExpression expression)
- Specified by:
setExpression
in interfaceCompilableGrammarRule
-
compile
public Instruction[] compile(CompilationHandler compiler)
Description copied from interface:ParsingExpression
Compiles this expression into a sequence of instructions.- Specified by:
compile
in interfaceParsingExpression
-
shouldMemoize
public boolean shouldMemoize()
- Specified by:
shouldMemoize
in interfaceMemoParsingExpression
-
enableMemoization
public void enableMemoization()
-
-