Package org.drools.drl.parser.lang
Class DRL6Parser
- java.lang.Object
-
- org.drools.drl.parser.lang.AbstractDRLParser
-
- org.drools.drl.parser.lang.DRL6Parser
-
- All Implemented Interfaces:
DRLParser
public class DRL6Parser extends AbstractDRLParser implements DRLParser
-
-
Field Summary
-
Fields inherited from class org.drools.drl.parser.lang.AbstractDRLParser
helper, input, state
-
-
Constructor Summary
Constructors Constructor Description DRL6Parser(org.antlr.runtime.TokenStream input)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.drools.drl.ast.descr.AttributeDescrattribute(org.drools.drl.ast.dsl.AttributeSupportBuilder<?> as)attribute := salience | enabled | ( NO-LOOP | AUTO-FOCUS | LOCK-ON-ACTIVE | REFRACT | DIRECT ) BOOLEAN?Stringchunk(int leftDelimiter, int rightDelimiter, int location)Matches a chunk started by the leftDelimiter and ended by the rightDelimiter.protected org.drools.drl.ast.descr.PackageDescrcompilationUnit(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)StringconditionalExpression()Matches a conditional expressionStringconditionalOrExpression()Matches a conditional || expressionorg.drools.drl.ast.descr.BaseDescrdeclare(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)declare := DECLARE | (ENTRY-POINT) => entryPointDeclaration | (WINDOW) => windowDeclaration | (TRAIT) => typeDeclaration (trait) | (ENUM) => enumDeclaration | typeDeclaration (class) ENDvoiddefaultConsequence(org.drools.drl.ast.dsl.RuleDescrBuilder rule)defaultConsequence := THEN chunkorg.drools.drl.ast.descr.EntryPointDeclarationDescrentryPointDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb)entryPointDeclaration := ENTRY-POINT stringId annotation* ENDorg.drools.drl.ast.descr.EnumDeclarationDescrenumDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb)org.drools.drl.ast.descr.FunctionDescrfunction(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)function := FUNCTION type?protected StringgetConsequenceCode(int first)protected org.kie.internal.builder.conf.LanguageLevelOptiongetLanguageLevel()org.drools.drl.ast.descr.GlobalDescrglobalStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)globalStatement := GLOBAL type IDorg.drools.drl.ast.descr.ImportDescrimportStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)importStatement := IMPORT ((FUNCTION|STATIC)?protected org.drools.drl.ast.descr.BaseDescrlhsExists(org.drools.drl.ast.dsl.CEDescrBuilder<?,?> ce, boolean allowOr)lhsExists := EXISTS ( (LEFT_PAREN (or_key|and_key))=> lhsOr // prevents '((' for prefixed and/or | LEFT_PAREN lhsOr RIGHT_PAREN | lhsPatternBind )protected org.drools.drl.ast.descr.BaseDescrlhsForall(org.drools.drl.ast.dsl.CEDescrBuilder<?,?> ce)lhsForall := FORALL LEFT_PAREN lhsPatternBind+ RIGHT_PARENprotected org.drools.drl.ast.descr.BaseDescrlhsNot(org.drools.drl.ast.dsl.CEDescrBuilder<?,?> ce, boolean allowOr)lhsNot := NOT ( (LEFT_PAREN (or_key|and_key))=> lhsOr // prevents '((' for prefixed and/or | LEFT_PAREN lhsOr RIGHT_PAREN | lhsPatternBind )booleanmismatchIsMissingToken(org.antlr.runtime.TokenStream input, int[] follow)booleanmismatchIsUnwantedToken(org.antlr.runtime.TokenStream input, int ttype, String text)voidnamedConsequence(org.drools.drl.ast.dsl.RuleDescrBuilder rule)namedConsequence := THEN LEFT_SQUARE ID RIGHT_SQUARE chunkStringpackageStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)Parses a package statement and returns the name of the package or null if none is defined.StringqualifiedIdentifier()Matches a qualified identifier qualifiedIdentifier := ID ( DOT ID )*org.drools.drl.ast.descr.RuleDescrquery(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)query := QUERY stringId parameters?protected org.antlr.runtime.TokenrecoverFromMismatchedToken(org.antlr.runtime.TokenStream input, int ttype, String text, int[] follow)Attempt to recover from a single missing or extra token.org.drools.drl.ast.descr.RuleDescrrule(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)rule := RULE stringId (EXTENDS stringId)?org.drools.drl.ast.descr.BaseDescrstatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)statement := importStatement | globalStatement | declare | rule | ruleAttribute | function | query ;Stringtype()Matches a type name type := ID typeArguments?StringtypeArgument()Matches a type argument typeArguments := QUESTION (( EXTENDS | SUPER ) type )?StringtypeArguments()Matches type arguments typeArguments := LESS typeArgument (COMMA typeArgument)* GREATERorg.drools.drl.ast.descr.TypeDeclarationDescrtypeDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb, boolean isTrait)typeDeclaration := [TYPE] qualifiedIdentifier (EXTENDS qualifiedIdentifier)?org.drools.drl.ast.descr.UnitDescrunitStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg)unitStatement := UNIT qualifiedIdentifier SEMICOLON?org.drools.drl.ast.descr.WindowDeclarationDescrwindowDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb)windowDeclaration := WINDOW ID annotation* lhsPatternBind END-
Methods inherited from class org.drools.drl.parser.lang.AbstractDRLParser
compilationUnit, compilationUnit, disableEditorInterface, enableEditorInterface, getEditorInterface, getErrorMessages, getErrors, getHelper, hasErrors, reportError, reportError
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.drools.drl.parser.lang.DRLParser
compilationUnit, compilationUnit, disableEditorInterface, enableEditorInterface, getEditorInterface, getErrorMessages, getErrors, hasErrors, reportError, reportError
-
-
-
-
Method Detail
-
getLanguageLevel
protected org.kie.internal.builder.conf.LanguageLevelOption getLanguageLevel()
- Specified by:
getLanguageLevelin classAbstractDRLParser
-
compilationUnit
protected final org.drools.drl.ast.descr.PackageDescr compilationUnit(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionException- Specified by:
compilationUnitin classAbstractDRLParser- Throws:
org.antlr.runtime.RecognitionException
-
packageStatement
public String packageStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionException
Parses a package statement and returns the name of the package or null if none is defined. packageStatement := PACKAGE qualifiedIdentifier SEMICOLON?- Returns:
- the name of the package or null if none is defined
- Throws:
org.antlr.runtime.RecognitionException
-
unitStatement
public org.drools.drl.ast.descr.UnitDescr unitStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionunitStatement := UNIT qualifiedIdentifier SEMICOLON?- Throws:
org.antlr.runtime.RecognitionException
-
statement
public org.drools.drl.ast.descr.BaseDescr statement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionstatement := importStatement | globalStatement | declare | rule | ruleAttribute | function | query ;- Throws:
org.antlr.runtime.RecognitionException
-
importStatement
public org.drools.drl.ast.descr.ImportDescr importStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionimportStatement := IMPORT ((FUNCTION|STATIC)? qualifiedIdentifier ((DOT STAR)? |(ACC|ACCUMULATE) qualifiedIdentifier ID)- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
globalStatement
public org.drools.drl.ast.descr.GlobalDescr globalStatement(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionglobalStatement := GLOBAL type ID- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
declare
public org.drools.drl.ast.descr.BaseDescr declare(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptiondeclare := DECLARE | (ENTRY-POINT) => entryPointDeclaration | (WINDOW) => windowDeclaration | (TRAIT) => typeDeclaration (trait) | (ENUM) => enumDeclaration | typeDeclaration (class) END- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
entryPointDeclaration
public org.drools.drl.ast.descr.EntryPointDeclarationDescr entryPointDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb) throws org.antlr.runtime.RecognitionExceptionentryPointDeclaration := ENTRY-POINT stringId annotation* END- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
windowDeclaration
public org.drools.drl.ast.descr.WindowDeclarationDescr windowDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb) throws org.antlr.runtime.RecognitionExceptionwindowDeclaration := WINDOW ID annotation* lhsPatternBind END- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
enumDeclaration
public org.drools.drl.ast.descr.EnumDeclarationDescr enumDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb) throws org.antlr.runtime.RecognitionException- Throws:
org.antlr.runtime.RecognitionException
-
typeDeclaration
public org.drools.drl.ast.descr.TypeDeclarationDescr typeDeclaration(org.drools.drl.ast.dsl.DeclareDescrBuilder ddb, boolean isTrait) throws org.antlr.runtime.RecognitionExceptiontypeDeclaration := [TYPE] qualifiedIdentifier (EXTENDS qualifiedIdentifier)? annotation* field* END- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
function
public org.drools.drl.ast.descr.FunctionDescr function(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionfunction := FUNCTION type? ID parameters(typed) chunk_{_}- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
query
public org.drools.drl.ast.descr.RuleDescr query(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionquery := QUERY stringId parameters? annotation* lhsExpression END- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
rule
public org.drools.drl.ast.descr.RuleDescr rule(org.drools.drl.ast.dsl.PackageDescrBuilder pkg) throws org.antlr.runtime.RecognitionExceptionrule := RULE stringId (EXTENDS stringId)? annotation* attributes? lhs? rhs END- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
attribute
public org.drools.drl.ast.descr.AttributeDescr attribute(org.drools.drl.ast.dsl.AttributeSupportBuilder<?> as)
attribute := salience | enabled | ( NO-LOOP | AUTO-FOCUS | LOCK-ON-ACTIVE | REFRACT | DIRECT ) BOOLEAN? | ( AGENDA-GROUP | ACTIVATION-GROUP | RULEFLOW-GROUP | DATE-EFFECTIVE | DATE-EXPIRES | DIALECT ) STRING | CALENDARS STRING (COMMA STRING)* | TIMER ( DECIMAL | chunk_(_) ) | DURATION ( DECIMAL | chunk_(_) ) The above syntax is not quite how this is parsed, because the soft keyword is determined by look-ahead and passed on to one of the x-Attribute methods (booleanAttribute, stringAttribute, stringListAttribute, intOrChunkAttribute) which will actually gobble the tokens.- Returns:
-
lhsExists
protected org.drools.drl.ast.descr.BaseDescr lhsExists(org.drools.drl.ast.dsl.CEDescrBuilder<?,?> ce, boolean allowOr) throws org.antlr.runtime.RecognitionExceptionlhsExists := EXISTS ( (LEFT_PAREN (or_key|and_key))=> lhsOr // prevents '((' for prefixed and/or | LEFT_PAREN lhsOr RIGHT_PAREN | lhsPatternBind )- Parameters:
ce-- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
lhsNot
protected org.drools.drl.ast.descr.BaseDescr lhsNot(org.drools.drl.ast.dsl.CEDescrBuilder<?,?> ce, boolean allowOr) throws org.antlr.runtime.RecognitionExceptionlhsNot := NOT ( (LEFT_PAREN (or_key|and_key))=> lhsOr // prevents '((' for prefixed and/or | LEFT_PAREN lhsOr RIGHT_PAREN | lhsPatternBind )- Parameters:
ce-- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
lhsForall
protected org.drools.drl.ast.descr.BaseDescr lhsForall(org.drools.drl.ast.dsl.CEDescrBuilder<?,?> ce) throws org.antlr.runtime.RecognitionExceptionlhsForall := FORALL LEFT_PAREN lhsPatternBind+ RIGHT_PAREN- Parameters:
ce-- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
defaultConsequence
public void defaultConsequence(org.drools.drl.ast.dsl.RuleDescrBuilder rule)
defaultConsequence := THEN chunk- Parameters:
rule-
-
namedConsequence
public void namedConsequence(org.drools.drl.ast.dsl.RuleDescrBuilder rule)
namedConsequence := THEN LEFT_SQUARE ID RIGHT_SQUARE chunk- Parameters:
rule-
-
getConsequenceCode
protected String getConsequenceCode(int first)
-
type
public String type() throws org.antlr.runtime.RecognitionException
Matches a type name type := ID typeArguments? ( DOT ID typeArguments? )* (LEFT_SQUARE RIGHT_SQUARE)*- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
typeArguments
public String typeArguments() throws org.antlr.runtime.RecognitionException
Matches type arguments typeArguments := LESS typeArgument (COMMA typeArgument)* GREATER- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
typeArgument
public String typeArgument() throws org.antlr.runtime.RecognitionException
Matches a type argument typeArguments := QUESTION (( EXTENDS | SUPER ) type )? | type ;- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
qualifiedIdentifier
public String qualifiedIdentifier() throws org.antlr.runtime.RecognitionException
Matches a qualified identifier qualifiedIdentifier := ID ( DOT ID )*- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
conditionalExpression
public String conditionalExpression() throws org.antlr.runtime.RecognitionException
Matches a conditional expression- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
conditionalOrExpression
public String conditionalOrExpression() throws org.antlr.runtime.RecognitionException
Matches a conditional || expression- Returns:
- Throws:
org.antlr.runtime.RecognitionException
-
chunk
public String chunk(int leftDelimiter, int rightDelimiter, int location)
Matches a chunk started by the leftDelimiter and ended by the rightDelimiter.
-
recoverFromMismatchedToken
protected org.antlr.runtime.Token recoverFromMismatchedToken(org.antlr.runtime.TokenStream input, int ttype, String text, int[] follow) throws org.antlr.runtime.RecognitionExceptionAttempt to recover from a single missing or extra token. EXTRA TOKEN LA(1) is not what we are looking for. If LA(2) has the right token, however, then assume LA(1) is some extra spurious token. Delete it and LA(2) as if we were doing a normal match(), which advances the input. MISSING TOKEN If current token is consistent with what could come after ttype then it is ok to "insert" the missing token, else throw exception For example, Input "i=(3;" is clearly missing the ')'. When the parser returns from the nested call to expr, it will have call chain: stat -> expr -> atom and it will be trying to match the ')' at this point in the derivation: => ID '=' '(' INT ')' ('+' atom)* ';' ^ match() will see that ';' doesn't match ')' and report a mismatched token error. To recover, it sees that LA(1)==';' is in the set of tokens that can follow the ')' token reference in rule atom. It can assume that you forgot the ')'.- Throws:
org.antlr.runtime.RecognitionException
-
mismatchIsUnwantedToken
public boolean mismatchIsUnwantedToken(org.antlr.runtime.TokenStream input, int ttype, String text)
-
mismatchIsMissingToken
public boolean mismatchIsMissingToken(org.antlr.runtime.TokenStream input, int[] follow)
-
-