
org.jnario.spec.Spec.xtext Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.jnario.standalone Show documentation
Show all versions of org.jnario.standalone Show documentation
The required libraries to execute Jnario specifications without Eclipse.
The newest version!
grammar org.jnario.spec.Spec with org.eclipse.xtend.core.Xtend
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
import "http://www.org/jnario/spec/Spec"
import "http://www.eclipse.org/xtend" as xtend
import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
import "http://www.eclipse.org/xtext/common/JavaVMTypes" as types
import "http://www.org/Jnario"
SpecFile:
{SpecFile}
('package' package=QualifiedName)?
importSection=XImportSection?
(xtendTypes+=(Type))*
;
Type returns xtend::XtendTypeDeclaration :
{xtend::XtendTypeDeclaration} annotations+=XAnnotation*
(
{xtend::XtendClass.annotationInfo = current}
modifiers+=CommonModifier*
'class' name=ValidID ('<' typeParameters+=JvmTypeParameter (',' typeParameters+=JvmTypeParameter)* '>')?
("extends" extends=JvmParameterizedTypeReference)?
('implements' implements+=JvmParameterizedTypeReference (',' implements+=JvmParameterizedTypeReference)*)?'{'
(members+=Member)*
'}'
|
{xtend::XtendInterface.annotationInfo = current}
modifiers+=CommonModifier*
'interface' name=ValidID ('<' typeParameters+=JvmTypeParameter (',' typeParameters+=JvmTypeParameter)* '>')?
('extends' extends+=JvmParameterizedTypeReference (',' extends+=JvmParameterizedTypeReference)*)?'{'
(members+=Member)*
'}'
|
{xtend::XtendEnum.annotationInfo = current}
modifiers+=CommonModifier*
'enum' name=ValidID '{'
(members+=XtendEnumLiteral (',' members+=XtendEnumLiteral)*)? ';'?
'}'
|
{xtend::XtendAnnotationType.annotationInfo = current}
modifiers+=CommonModifier*
'annotation' name=ValidID '{'
(members+=AnnotationField)*
'}'
|
{ExampleGroup.annotationInfo = current}
preamble='describe' targetType=JvmTypeReference? name=STRING? '{'
(members+=Member*)
'}'
)
;
Method:
ID ('(' (TypeName (',' TypeName)*)? ')')?
;
TypeName:
ID ('<' TypeRef (',' TypeRef)* '>')? ('['']')?
;
TypeRef:
('?')? ('extends' | 'super')? TypeName
;
Member returns xtend::XtendMember:
{xtend::XtendMember} annotations+=XAnnotation*
(
{Example.annotationInfo = current}
( pending?='pending'? ('fact' | 'facts') expr=XExpression expression=XBlockExpression?)
| {ExampleGroup.annotationInfo = current}
(preamble='describe' targetType=JvmTypeReference? name=STRING? '{'
members+=Member*
'}')
| {Before.annotationInfo = current}
('before' (modifiers+='all'|'each')? =>name=STRING? expression=XExpression)
| {After.annotationInfo = current}
('after' (modifiers+='all'|'each')? =>name=STRING? expression=XExpression)
| {ExampleGroup.annotationInfo = current}
(preamble=('context') targetOperation=[types::JvmOperation|Method]? name=STRING? '{'
members+=Member*
'}')
| {ExampleTable.annotationInfo = current}
('def' name=ID? '{'
('|' (columns+=ExampleColumn)*
(rows += ExampleRow)*)?
'}')
|{xtend::XtendField.annotationInfo = current} modifiers+=CommonModifier*
(
modifiers+=FieldModifier modifiers+=CommonModifier*
type=JvmTypeReference? name=ValidID
|
modifiers+='extension' (modifiers+=FieldModifier | modifiers+=CommonModifier)*
type=JvmTypeReference name=ValidID?
|
modifiers+=FieldModifier (modifiers+=CommonModifier)* modifiers+='extension' (modifiers+=CommonModifier)*
type=JvmTypeReference name=ValidID?
|
type=JvmTypeReference name=ValidID
) ('=' initialValue=XExpression)? ';'?
| (
{xtend::XtendFunction.annotationInfo = current} modifiers+=CommonModifier*
modifiers+=MethodModifier (modifiers+=CommonModifier | modifiers+=MethodModifier)*
('<' typeParameters+=JvmTypeParameter (',' typeParameters+=JvmTypeParameter)* '>')?
(
=>(returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo name=ValidID '(')
| =>(returnType=JvmTypeReference name=ValidID '(')
| =>(createExtensionInfo=CreateExtensionInfo name=ValidID '(')
| name=ValidID '('
)
(parameters+=Parameter (',' parameters+=Parameter)*)? ')'
('throws' exceptions+=JvmTypeReference (',' exceptions+=JvmTypeReference)*)?
(expression=XBlockExpression | expression=RichString | ';')?
)
);
XPrimaryExpression returns xbase::XExpression:
XConstructorCall |
XBlockExpression |
XSwitchExpression |
XSynchronizedExpression |
XFeatureCall |
XLiteral |
XIfExpression |
XForLoopExpression |
XBasicForLoopExpression |
XWhileExpression |
XDoWhileExpression |
XThrowExpression |
XReturnExpression |
XTryCatchFinallyExpression |
XParenthesizedExpression |
Assertion;
XRelationalExpression returns xbase::XExpression:
XOtherOperatorExpression
(
=>({Should.leftOperand=current}
( feature=[types::JvmIdentifiableElement|Should])) =>rightOperand=XOtherOperatorExpression? |
=>({ShouldThrow.expression=current} (('should' 'throw') | 'throws')) type=JvmTypeReference |
=>({xbase::XInstanceOfExpression.expression=current} 'instanceof') type=JvmTypeReference |
=>({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare]) rightOperand=XOtherOperatorExpression)*;
Should:
'should' 'not'? ID
;
Assertion returns xbase::XExpression:
{Assertion}
'assert' expression=XExpression;
ExampleColumn:
type=JvmTypeReference? name=ValidID '|';
ExampleRow:
'|' {ExampleRow} (cells+=ExampleCell '|')*
;
ExampleCell:
expression=XExpression
;
terminal ML_COMMENT: '/*' -> (!('\\')'*/');
terminal RICH_TEXT : "'''" IN_RICH_STRING* ("'''"| ("'" "'"?)? EOF);
terminal RICH_TEXT_START : "'''" IN_RICH_STRING* ("'" "'"?)? '«';
terminal RICH_TEXT_END : '»' IN_RICH_STRING* ("'''"| ("'" "'"?)? EOF) ;
terminal RICH_TEXT_INBETWEEN : '»' IN_RICH_STRING* ("'" "'"?)? '«';
terminal COMMENT_RICH_TEXT_INBETWEEN: "««" !('\n'|'\r')* ('\r'? '\n' IN_RICH_STRING* ("'" "'"?)? '«')?;
terminal COMMENT_RICH_TEXT_END: "««" !('\n'|'\r')* (('\r'? '\n' IN_RICH_STRING* ("'''"| ("'" "'"?)? EOF)) | EOF);
terminal fragment IN_RICH_STRING :
"''" !('«'|"'")
| "'" !('«'|"'")
| !('«'|"'");
© 2015 - 2025 Weber Informatics LLC | Privacy Policy