blob: 5ef702ebb648ebbd77d8473bc4b62c81d72ae16b [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
grammar DebugInternalServicesGrammar;
// Rule LServiceModel
ruleLServiceModel :
(
(
ruleTypedPackage
)
)*
;
// Rule Class
ruleClass :
((
)(
(
ruleAnnotationDef
)
)*(
) 'dtoservice'
(
(
ruleValidIDWithKeywords
)
) 'provides'
(
(
ruleTYPE_CROSS_REFERENCE
)
) '{'
((
(
'mutable'
)
)? 'persistenceUnit'
(
(
ruleQualifiedName
)
)( ';'
)?)?( 'validators'
'{'
(
(
ruleValidatorDef
)
)( ', '
(
(
ruleValidatorDef
)
))*( ';'
)? '}'
)?(
(
ruleInjectedServices
)
)(
(
ruleOperation
)
)* '}'
)
;
// Rule ValidatorDef
ruleValidatorDef :
((((
(
ruleJvmTypeReference
)
))=>(
(
ruleJvmTypeReference
)
))
|(
(
RULE_STRING
)
))
;
// Rule InjectedServices
ruleInjectedServices :
((
)(
(
ruleInjectedService
)
)*)
;
// Rule InjectedService
ruleInjectedService :
((
) 'injectService'
(
(
ruleCardinality
)
)?(
(
ruleJvmTypeReference
)
)(
(
RULE_ID
)
)( ';'
)?)
;
// Rule Operation
ruleOperation :
((
)(
(
ruleAnnotationDef
)
)*( 'def'
(
(
ruleJvmTypeReference
)
)(
(
RULE_ID
)
) '('
((
(
ruleFullJvmFormalParameter
)
)( ', '
(
(
ruleFullJvmFormalParameter
)
))*)? ')'
(
(
ruleXExpression
)
)))
;
// Rule TypedPackage
ruleTypedPackage :
((
) 'package'
(
(
ruleQualifiedName
)
)( '{'
(
(
ruleImport
)
)*(
(
ruleType
)
)* '}'
)?)
;
// Rule Type
ruleType :
( ruleScalarType
| ruleClass)
;
// Rule Import
ruleImport :
( 'import'
(
(
ruleLQualifiedNameWithWildCard
)
)( ';'
)?)
;
// Rule DataType
ruleDataType :
( 'datatype'
(
(
ruleValidIDWithKeywords
)
)(( 'jvmType'
(
(
ruleJvmTypeReference
)
)(
(
'as primitive'
)
)?(
(
ruleDataTypeConstraint
)
)*( 'properties'
'('
(
(
ruleKeyAndValue
)
)( ', '
(
(
ruleKeyAndValue
)
))* ')'
)?)
|((
(
'dateType'
)
)(
(
ruleDateType
)
)(
(
ruleDateConstraint
)
)*( 'properties'
'('
(
(
ruleKeyAndValue
)
)( ', '
(
(
ruleKeyAndValue
)
))* ')'
)?)
|((
(
'as blob'
)
)(
(
ruleBlobTypeConstraint
)
)*( 'properties'
'('
(
(
ruleKeyAndValue
)
)( ', '
(
(
ruleKeyAndValue
)
))* ')'
)?))( ';'
)?)
;
// Rule DataTypeConstraint
ruleDataTypeConstraint :
( ruleDtCAssertFalse
| ruleDtCAssertTrue
| ruleDtCDecimalMax
| ruleDtCDecimalMin
| ruleDtCDigits
| ruleDtCNumericMax
| ruleDtCNumericMin
| ruleDtCNotNull
| ruleDtCNull
| ruleDtCRegEx
| ruleDtCSize)
;
// Rule DateConstraint
ruleDateConstraint :
( ruleDtCFuture
| ruleDtCPast
| ruleDtCNotNull
| ruleDtCNull)
;
// Rule BlobTypeConstraint
ruleBlobTypeConstraint :
( ruleDtCNotNull
| ruleDtCNull)
;
// Rule DtCAssertFalse
ruleDtCAssertFalse :
((
) 'isFalse'
(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)?)
;
// Rule DtCAssertTrue
ruleDtCAssertTrue :
((
) 'isTrue'
(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)?)
;
// Rule DtCDecimalMax
ruleDtCDecimalMax :
((
) 'maxDecimal'
'('
(
(
ruleLDecimal
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule DtCDecimalMin
ruleDtCDecimalMin :
((
) 'minDecimal'
'('
(
(
ruleLDecimal
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule DtCDigits
ruleDtCDigits :
((
) 'digits'
'('
(
(
RULE_INT
)
) ', '
(
(
RULE_INT
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule DtCFuture
ruleDtCFuture :
((
) 'isFuture'
(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)?)
;
// Rule DtCPast
ruleDtCPast :
((
) 'isPast'
(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)?)
;
// Rule DtCNumericMax
ruleDtCNumericMax :
((
) 'maxNumber'
'('
(
(
ruleLInt
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule DtCNumericMin
ruleDtCNumericMin :
((
) 'minNumber'
'('
(
(
ruleLInt
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule DtCNotNull
ruleDtCNotNull :
((
) 'isNotNull'
(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)?)
;
// Rule DtCNull
ruleDtCNull :
((
) 'isNull'
(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)?)
;
// Rule DtCRegEx
ruleDtCRegEx :
((
) 'regex'
'('
(
(
RULE_STRING
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule DtCSize
ruleDtCSize :
((
) 'minMaxSize'
'('
(
(
RULE_INT
)
) ', '
(
(
RULE_INT
)
)(
(( '['
( 'msgCode'
'='
(
(
ruleQualifiedName
)
))?)
|( 'msgI18nKey'
'='
(
(
ruleQualifiedName
)
))?
|(( 'severity'
'='
(
(
ruleConstraintSeverity
)
))? ']'
))*
)? ')'
)
;
// Rule ScalarType
ruleScalarType :
( ruleDataType
| ruleEnum)
;
// Rule Enum
ruleEnum :
( 'enum'
(
(
RULE_ID
)
) '{'
(
(
ruleEnumLiteral
)
)( ', '
(
(
ruleEnumLiteral
)
))* '}'
)
;
// Rule EnumLiteral
ruleEnumLiteral :
((
(
RULE_ID
)
)(
(( '('
(
(
'asDefault'
)
)?)
|((
(
'forNull'
)
)? ')'
( '='
(
(
RULE_INT
)
))?))*
)?)
;
// Rule AnnotationDef
ruleAnnotationDef :
(((
(
ruleXAnnotation
)
))=>(
(
ruleXAnnotation
)
))
;
// Rule ResultFilter
ruleResultFilter :
ruleAttributeMatchingConstraint
;
// Rule AttributeMatchingConstraint
ruleAttributeMatchingConstraint :
((
(
RULE_ID
)
)(
(
ruleLComparatorType
)
)((
(
RULE_STRING
)
)
|((
(
RULE_ID
)
)=>
(
RULE_ID
)
))( ';'
)?)
;
// Rule KeyAndValue
ruleKeyAndValue :
( 'key'
'='
(
(
RULE_STRING
)
) 'value'
'='
(
(
RULE_STRING
)
))
;
// Rule LQualifiedNameWithWildCard
ruleLQualifiedNameWithWildCard :
( ruleQualifiedName(
'.'
'*'
)?)
;
// Rule LFQN
ruleLFQN :
( RULE_ID(
'.'
RULE_ID)*)
;
// Rule TYPE_CROSS_REFERENCE
ruleTYPE_CROSS_REFERENCE :
RULE_ID
;
// Rule ValidIDWithKeywords
ruleValidIDWithKeywords :
(
'cachable'
|
'id'
|
'uuid'
|
'transient'
|
'version'
|(
'derived'
'collection'
)
|
'refers'
|
'settings'
|
'lazy'
|
'notnull'
|
'dto'
|
'date'
|
'mapto'
|
'ref'
|
'cascade'
|
'var'
| RULE_ID)
;
// Rule LInt
ruleLInt :
((
'+'
|
'-'
)? RULE_INT)
;
// Rule LDecimal
ruleLDecimal :
( ruleLInt(
'.'
RULE_INT)?)
;
// Rule XAnnotation
ruleXAnnotation :
((
) '@'
(
(
ruleQualifiedName
)
)((( '('
)=> '('
)((((((
(
ruleValidID
)
) '='
))=>
(
ruleXAnnotationElementValuePair
)
)( ','
((((
(
ruleValidID
)
) '='
))=>
(
ruleXAnnotationElementValuePair
)
))*)
|(
(
ruleXAnnotationElementValueOrCommaList
)
))? ')'
)?)
;
// Rule XAnnotationElementValuePair
ruleXAnnotationElementValuePair :
(((((
(
ruleValidID
)
) '='
))=>((
(
ruleValidID
)
) '='
))(
(
ruleXAnnotationElementValue
)
))
;
// Rule XAnnotationElementValueOrCommaList
ruleXAnnotationElementValueOrCommaList :
((((((
) '#'
'['
))=>((
) '#'
'['
))((
(
ruleXAnnotationOrExpression
)
)( ','
(
(
ruleXAnnotationOrExpression
)
))*)? ']'
)
|( ruleXAnnotationOrExpression((
)( ','
(
(
ruleXAnnotationOrExpression
)
))+)?))
;
// Rule XAnnotationElementValue
ruleXAnnotationElementValue :
((((((
) '#'
'['
))=>((
) '#'
'['
))((
(
ruleXAnnotationOrExpression
)
)( ','
(
(
ruleXAnnotationOrExpression
)
))*)? ']'
)
| ruleXAnnotationOrExpression)
;
// Rule XAnnotationOrExpression
ruleXAnnotationOrExpression :
( ruleXAnnotation
| ruleXExpression)
;
// Rule XExpression
ruleXExpression :
ruleXAssignment
;
// Rule XAssignment
ruleXAssignment :
(((
)(
(
ruleFeatureCallID
)
) ruleOpSingleAssign(
(
ruleXAssignment
)
))
|( ruleXOrExpression(((((
)(
(
ruleOpMultiAssign
)
)))=>((
)(
(
ruleOpMultiAssign
)
)))(
(
ruleXAssignment
)
))?))
;
// Rule OpSingleAssign
ruleOpSingleAssign :
'='
;
// Rule OpMultiAssign
ruleOpMultiAssign :
(
'+='
|
'-='
|
'*='
|
'/='
|
'%='
|(
'<'
'<'
'='
)
|(
'>'
(
'>'
)?
'>='
))
;
// Rule XOrExpression
ruleXOrExpression :
( ruleXAndExpression(((((
)(
(
ruleOpOr
)
)))=>((
)(
(
ruleOpOr
)
)))(
(
ruleXAndExpression
)
))*)
;
// Rule OpOr
ruleOpOr :
'||'
;
// Rule XAndExpression
ruleXAndExpression :
( ruleXEqualityExpression(((((
)(
(
ruleOpAnd
)
)))=>((
)(
(
ruleOpAnd
)
)))(
(
ruleXEqualityExpression
)
))*)
;
// Rule OpAnd
ruleOpAnd :
'&&'
;
// Rule XEqualityExpression
ruleXEqualityExpression :
( ruleXRelationalExpression(((((
)(
(
ruleOpEquality
)
)))=>((
)(
(
ruleOpEquality
)
)))(
(
ruleXRelationalExpression
)
))*)
;
// Rule OpEquality
ruleOpEquality :
(
'=='
|
'!='
|
'==='
|
'!=='
)
;
// Rule XRelationalExpression
ruleXRelationalExpression :
( ruleXOtherOperatorExpression((((((
) 'instanceof'
))=>((
) 'instanceof'
))(
(
ruleJvmTypeReference
)
))
|(((((
)(
(
ruleOpCompare
)
)))=>((
)(
(
ruleOpCompare
)
)))(
(
ruleXOtherOperatorExpression
)
)))*)
;
// Rule OpCompare
ruleOpCompare :
(
'>='
|(
'<'
'='
)
|
'>'
|
'<'
)
;
// Rule XOtherOperatorExpression
ruleXOtherOperatorExpression :
( ruleXAdditiveExpression(((((
)(
(
ruleOpOther
)
)))=>((
)(
(
ruleOpOther
)
)))(
(
ruleXAdditiveExpression
)
))*)
;
// Rule OpOther
ruleOpOther :
(
'->'
|
'..<'
|(
'>'
'..'
)
|
'..'
|
'=>'
|(
'>'
((((
'>'
'>'
))=>(
'>'
'>'
))
|
'>'
))
|(
'<'
((((
'<'
'<'
))=>(
'<'
'<'
))
|
'<'
|
'=>'
))
|
'<>'
|
'?:'
)
;
// Rule XAdditiveExpression
ruleXAdditiveExpression :
( ruleXMultiplicativeExpression(((((
)(
(
ruleOpAdd
)
)))=>((
)(
(
ruleOpAdd
)
)))(
(
ruleXMultiplicativeExpression
)
))*)
;
// Rule OpAdd
ruleOpAdd :
(
'+'
|
'-'
)
;
// Rule XMultiplicativeExpression
ruleXMultiplicativeExpression :
( ruleXUnaryOperation(((((
)(
(
ruleOpMulti
)
)))=>((
)(
(
ruleOpMulti
)
)))(
(
ruleXUnaryOperation
)
))*)
;
// Rule OpMulti
ruleOpMulti :
(
'*'
|
'**'
|
'/'
|
'%'
)
;
// Rule XUnaryOperation
ruleXUnaryOperation :
(((
)(
(
ruleOpUnary
)
)(
(
ruleXUnaryOperation
)
))
| ruleXCastedExpression)
;
// Rule OpUnary
ruleOpUnary :
(
'!'
|
'-'
|
'+'
)
;
// Rule XCastedExpression
ruleXCastedExpression :
( ruleXPostfixOperation(((((
) 'as'
))=>((
) 'as'
))(
(
ruleJvmTypeReference
)
))*)
;
// Rule XPostfixOperation
ruleXPostfixOperation :
( ruleXMemberFeatureCall((((
)(
(
ruleOpPostfix
)
)))=>((
)(
(
ruleOpPostfix
)
)))?)
;
// Rule OpPostfix
ruleOpPostfix :
(
'++'
|
'--'
)
;
// Rule XMemberFeatureCall
ruleXMemberFeatureCall :
( ruleXPrimaryExpression((((((
)( '.'
|(
(
'::'
)
))(
(
ruleFeatureCallID
)
) ruleOpSingleAssign))=>((
)( '.'
|(
(
'::'
)
))(
(
ruleFeatureCallID
)
) ruleOpSingleAssign))(
(
ruleXAssignment
)
))
|(((((
)( '.'
|(
(
'?.'
)
)
|(
(
'::'
)
))))=>((
)( '.'
|(
(
'?.'
)
)
|(
(
'::'
)
))))( '<'
(
(
ruleJvmArgumentTypeReference
)
)( ','
(
(
ruleJvmArgumentTypeReference
)
))* '>'
)?(
(
ruleIdOrSuper
)
)(((
(
'('
)
)=>
(
'('
)
)(((((
)((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))=>
(
ruleXShortClosure
)
)
|((
(
ruleXExpression
)
)( ','
(
(
ruleXExpression
)
))*))? ')'
)?((((
) '['
))=>
(
ruleXClosure
)
)?))*)
;
// Rule XPrimaryExpression
ruleXPrimaryExpression :
( ruleXConstructorCall
| ruleXBlockExpression
| ruleXSwitchExpression
|((((
) 'synchronized'
'('
))=> ruleXSynchronizedExpression)
| ruleXFeatureCall
| ruleXLiteral
| ruleXIfExpression
|((((
) 'for'
'('
(
(
ruleJvmFormalParameter
)
) ':'
))=> ruleXForLoopExpression)
| ruleXBasicForLoopExpression
| ruleXWhileExpression
| ruleXDoWhileExpression
| ruleXThrowExpression
| ruleXReturnExpression
| ruleXTryCatchFinallyExpression
| ruleXParenthesizedExpression)
;
// Rule XLiteral
ruleXLiteral :
( ruleXCollectionLiteral
|((((
) '['
))=> ruleXClosure)
| ruleXBooleanLiteral
| ruleXNumberLiteral
| ruleXNullLiteral
| ruleXStringLiteral
| ruleXTypeLiteral)
;
// Rule XCollectionLiteral
ruleXCollectionLiteral :
( ruleXSetLiteral
| ruleXListLiteral)
;
// Rule XSetLiteral
ruleXSetLiteral :
((
) '#'
'{'
((
(
ruleXExpression
)
)( ','
(
(
ruleXExpression
)
))*)? '}'
)
;
// Rule XListLiteral
ruleXListLiteral :
((
) '#'
'['
((
(
ruleXExpression
)
)( ','
(
(
ruleXExpression
)
))*)? ']'
)
;
// Rule XClosure
ruleXClosure :
(((((
) '['
))=>((
) '['
))(((((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))=>(((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))?(
(
ruleXExpressionInClosure
)
) ']'
)
;
// Rule XExpressionInClosure
ruleXExpressionInClosure :
((
)((
(
ruleXExpressionOrVarDeclaration
)
)( ';'
)?)*)
;
// Rule XShortClosure
ruleXShortClosure :
(((((
)((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))=>((
)((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))(
(
ruleXExpression
)
))
;
// Rule XParenthesizedExpression
ruleXParenthesizedExpression :
( '('
ruleXExpression ')'
)
;
// Rule XIfExpression
ruleXIfExpression :
((
) 'if'
'('
(
(
ruleXExpression
)
) ')'
(
(
ruleXExpression
)
)((( 'else'
)=> 'else'
)(
(
ruleXExpression
)
))?)
;
// Rule XSwitchExpression
ruleXSwitchExpression :
((
) 'switch'
((((( '('
(
(
ruleJvmFormalParameter
)
) ':'
))=>( '('
(
(
ruleJvmFormalParameter
)
) ':'
))(
(
ruleXExpression
)
) ')'
)
|(((((
(
ruleJvmFormalParameter
)
) ':'
))=>((
(
ruleJvmFormalParameter
)
) ':'
))?(
(
ruleXExpression
)
))) '{'
(
(
ruleXCasePart
)
)*( 'default'
':'
(
(
ruleXExpression
)
))? '}'
)
;
// Rule XCasePart
ruleXCasePart :
((
)(
(
ruleJvmTypeReference
)
)?( 'case'
(
(
ruleXExpression
)
))?(( ':'
(
(
ruleXExpression
)
))
|(
(
','
)
)))
;
// Rule XForLoopExpression
ruleXForLoopExpression :
(((((
) 'for'
'('
(
(
ruleJvmFormalParameter
)
) ':'
))=>((
) 'for'
'('
(
(
ruleJvmFormalParameter
)
) ':'
))(
(
ruleXExpression
)
) ')'
(
(
ruleXExpression
)
))
;
// Rule XBasicForLoopExpression
ruleXBasicForLoopExpression :
((
) 'for'
'('
((
(
ruleXExpressionOrVarDeclaration
)
)( ','
(
(
ruleXExpressionOrVarDeclaration
)
))*)? ';'
(
(
ruleXExpression
)
)? ';'
((
(
ruleXExpression
)
)( ','
(
(
ruleXExpression
)
))*)? ')'
(
(
ruleXExpression
)
))
;
// Rule XWhileExpression
ruleXWhileExpression :
((
) 'while'
'('
(
(
ruleXExpression
)
) ')'
(
(
ruleXExpression
)
))
;
// Rule XDoWhileExpression
ruleXDoWhileExpression :
((
) 'do'
(
(
ruleXExpression
)
) 'while'
'('
(
(
ruleXExpression
)
) ')'
)
;
// Rule XBlockExpression
ruleXBlockExpression :
((
) '{'
((
(
ruleXExpressionOrVarDeclaration
)
)( ';'
)?)* '}'
)
;
// Rule XExpressionOrVarDeclaration
ruleXExpressionOrVarDeclaration :
( ruleXVariableDeclaration
| ruleXExpression)
;
// Rule XVariableDeclaration
ruleXVariableDeclaration :
((
)((
(
'var'
)
)
| 'val'
)(((((
(
ruleJvmTypeReference
)
)(
(
ruleValidID
)
)))=>((
(
ruleJvmTypeReference
)
)(
(
ruleValidID
)
)))
|(
(
ruleValidID
)
))( '='
(
(
ruleXExpression
)
))?)
;
// Rule JvmFormalParameter
ruleJvmFormalParameter :
((
(
ruleJvmTypeReference
)
)?(
(
ruleValidID
)
))
;
// Rule FullJvmFormalParameter
ruleFullJvmFormalParameter :
((
(
ruleJvmTypeReference
)
)(
(
ruleValidID
)
))
;
// Rule XFeatureCall
ruleXFeatureCall :
((
)( '<'
(
(
ruleJvmArgumentTypeReference
)
)( ','
(
(
ruleJvmArgumentTypeReference
)
))* '>'
)?(
(
ruleIdOrSuper
)
)(((
(
'('
)
)=>
(
'('
)
)(((((
)((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))=>
(
ruleXShortClosure
)
)
|((
(
ruleXExpression
)
)( ','
(
(
ruleXExpression
)
))*))? ')'
)?((((
) '['
))=>
(
ruleXClosure
)
)?)
;
// Rule FeatureCallID
ruleFeatureCallID :
( ruleValidID
|
'extends'
|
'static'
|
'import'
|
'extension'
)
;
// Rule IdOrSuper
ruleIdOrSuper :
( ruleFeatureCallID
|
'super'
)
;
// Rule XConstructorCall
ruleXConstructorCall :
((
) 'new'
(
(
ruleQualifiedName
)
)((( '<'
)=> '<'
)(
(
ruleJvmArgumentTypeReference
)
)( ','
(
(
ruleJvmArgumentTypeReference
)
))* '>'
)?(((
(
'('
)
)=>
(
'('
)
)(((((
)((
(
ruleJvmFormalParameter
)
)( ','
(
(
ruleJvmFormalParameter
)
))*)?(
(
'|'
)
)))=>
(
ruleXShortClosure
)
)
|((
(
ruleXExpression
)
)( ','
(
(
ruleXExpression
)
))*))? ')'
)?((((
) '['
))=>
(
ruleXClosure
)
)?)
;
// Rule XBooleanLiteral
ruleXBooleanLiteral :
((
)( 'false'
|(
(
'true'
)
)))
;
// Rule XNullLiteral
ruleXNullLiteral :
((
) 'null'
)
;
// Rule XNumberLiteral
ruleXNumberLiteral :
((
)(
(
ruleNumber
)
))
;
// Rule XStringLiteral
ruleXStringLiteral :
((
)(
(
RULE_STRING
)
))
;
// Rule XTypeLiteral
ruleXTypeLiteral :
((
) 'typeof'
'('
(
(
ruleQualifiedName
)
)(
(
ruleArrayBrackets
)
)* ')'
)
;
// Rule XThrowExpression
ruleXThrowExpression :
((
) 'throw'
(
(
ruleXExpression
)
))
;
// Rule XReturnExpression
ruleXReturnExpression :
((
) 'return'
(( 'extends'
| 'static'
| 'import'
| 'extension'
| '!'
| '-'
| '+'
| 'new'
| '{'
| 'switch'
| 'synchronized'
| '<'
| 'super'
| '#'
| '['
| 'false'
| 'true'
| 'null'
| 'typeof'
| 'if'
| 'for'
| 'while'
| 'do'
| 'throw'
| 'return'
| 'try'
| '('
| RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING)=>
(
ruleXExpression
)
)?)
;
// Rule XTryCatchFinallyExpression
ruleXTryCatchFinallyExpression :
((
) 'try'
(
(
ruleXExpression
)
)(((( 'catch'
)=>
(
ruleXCatchClause
)
)+((( 'finally'
)=> 'finally'
)(
(
ruleXExpression
)
))?)
|( 'finally'
(
(
ruleXExpression
)
))))
;
// Rule XSynchronizedExpression
ruleXSynchronizedExpression :
(((((
) 'synchronized'
'('
))=>((
) 'synchronized'
'('
))(
(
ruleXExpression
)
) ')'
(
(
ruleXExpression
)
))
;
// Rule XCatchClause
ruleXCatchClause :
((( 'catch'
)=> 'catch'
) '('
(
(
ruleFullJvmFormalParameter
)
) ')'
(
(
ruleXExpression
)
))
;
// Rule QualifiedName
ruleQualifiedName :
( ruleValidID(((
'.'
)=>
'.'
) ruleValidID)*)
;
// Rule Number
ruleNumber :
( RULE_HEX
|(( RULE_INT
| RULE_DECIMAL)(
'.'
( RULE_INT
| RULE_DECIMAL))?))
;
// Rule JvmTypeReference
ruleJvmTypeReference :
(( ruleJvmParameterizedTypeReference((((
) ruleArrayBrackets))=>((
) ruleArrayBrackets))*)
| ruleXFunctionTypeRef)
;
// Rule ArrayBrackets
ruleArrayBrackets :
(
'['
']'
)
;
// Rule XFunctionTypeRef
ruleXFunctionTypeRef :
(( '('
((
(
ruleJvmTypeReference
)
)( ','
(
(
ruleJvmTypeReference
)
))*)? ')'
)? '=>'
(
(
ruleJvmTypeReference
)
))
;
// Rule JvmParameterizedTypeReference
ruleJvmParameterizedTypeReference :
((
(
ruleQualifiedName
)
)((( '<'
)=> '<'
)(
(
ruleJvmArgumentTypeReference
)
)( ','
(
(
ruleJvmArgumentTypeReference
)
))* '>'
(((((
) '.'
))=>((
) '.'
))(
(
ruleValidID
)
)((( '<'
)=> '<'
)(
(
ruleJvmArgumentTypeReference
)
)( ','
(
(
ruleJvmArgumentTypeReference
)
))* '>'
)?)*)?)
;
// Rule JvmArgumentTypeReference
ruleJvmArgumentTypeReference :
( ruleJvmTypeReference
| ruleJvmWildcardTypeReference)
;
// Rule JvmWildcardTypeReference
ruleJvmWildcardTypeReference :
((
) '?'
(((
(
ruleJvmUpperBound
)
)(
(
ruleJvmUpperBoundAnded
)
)*)
|((
(
ruleJvmLowerBound
)
)(
(
ruleJvmLowerBoundAnded
)
)*))?)
;
// Rule JvmUpperBound
ruleJvmUpperBound :
( 'extends'
(
(
ruleJvmTypeReference
)
))
;
// Rule JvmUpperBoundAnded
ruleJvmUpperBoundAnded :
( '&'
(
(
ruleJvmTypeReference
)
))
;
// Rule JvmLowerBound
ruleJvmLowerBound :
( 'super'
(
(
ruleJvmTypeReference
)
))
;
// Rule JvmLowerBoundAnded
ruleJvmLowerBoundAnded :
( '&'
(
(
ruleJvmTypeReference
)
))
;
// Rule QualifiedNameWithWildcard
ruleQualifiedNameWithWildcard :
( ruleQualifiedName
'.'
'*'
)
;
// Rule ValidID
ruleValidID :
RULE_ID
;
// Rule XImportDeclaration
ruleXImportDeclaration :
( 'import'
(((
(
'static'
)
)(
(
'extension'
)
)?(
(
ruleQualifiedNameInStaticImport
)
)((
(
'*'
)
)
|(
(
ruleValidID
)
)))
|(
(
ruleQualifiedName
)
)
|(
(
ruleQualifiedNameWithWildcard
)
))( ';'
)?)
;
// Rule QualifiedNameInStaticImport
ruleQualifiedNameInStaticImport :
( ruleValidID
'.'
)+
;
// Rule Cardinality
ruleCardinality :
(( 'optional'
)
|( 'mandatory'
)
|( 'zeroToMany'
)
|( 'oneToMany'
));
// Rule ConstraintSeverity
ruleConstraintSeverity :
(( 'info'
)
|( 'warn'
)
|( 'error'
));
// Rule DateType
ruleDateType :
(( 'date'
)
|( 'time'
)
|( 'timestamp'
));
// Rule LVisibility
ruleLVisibility :
(( 'package'
)
|( 'private'
)
|( 'protected'
)
|( 'public'
));
// Rule LComparatorType
ruleLComparatorType :
(( '=='
)
|( '>'
)
|( '<'
)
|( '>='
)
|( '<='
)
|( '<>'
));
// Rule LowerBound
ruleLowerBound :
(( '*'
)
|( '0'
)
|( '?'
)
|( '+'
)
|( '1'
));
// Rule UpperBound
ruleUpperBound :
(( '*'
)
|( '1'
));
RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
RULE_INT : '0'..'9' ('0'..'9'|'_')*;
RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/' {skip();};
RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')? {skip();};
RULE_WS : (' '|'\t'|'\r'|'\n')+ {skip();};
RULE_ANY_OTHER : .;