Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- grammar at.bestsolution.efxclipse.tooling.css.Definition with org.eclipse.xtext.xbase.Xbase // hidden(WS, SL_COMMENT)
- generate definition "http://www.bestsolution.at/efxclipse/tooling/css/Definition"
- CSSDefs:
- imports+=Import*
- packageDef=PackageDeclaration
- ;
- Import:
- 'import' importedNamespace=QualifiedNameWithWildCard;
- PackageDeclaration:
- 'package' name=QualifiedName '{'
- typDefs+=TypeDef? (',' typDefs+=TypeDef)*
- elementDefs+=ElementDef? (',' elementDefs+=ElementDef)*
- subpackages+=PackageDeclaration*
- '}';
- enum PrimTypes:
- STRING | INT | DOUBLE | BOOL
- ;
- TypeDef:
- GenericTypeDef | EnumTypeDef
- ;
- GenericTypeDef:
- doc=DOCU?
- 'type' name=ValidID '{'
- typeDef=TypeValue
- '}'
- ;
- EnumTypeDef:
- doc=DOCU?
- 'enumtype' name=ValidID '{'
- values+=EnumValue (',' values+=EnumValue)+
- '}'
- ;
- TypeValue:
- TypeDefValue | PrimValue
- ;
- TypeDefValue:
- typeRule=TypeRule
- ;
- PrimValue:
- v=PrimTypes
- ;
- ElementDef:
- doc=DOCU?
- name=ValidID ('extends' superElements+=[ElementDef|QualifiedName] (',' superElements+=[ElementDef|QualifiedName])*)? '{'
- properties+=Property? (',' properties+=Property)*
- pseudoClasses+=PseudoClass? (',' pseudoClasses+=PseudoClass)*
- subelements+=SubElement? (',' subelements+=SubElement)*
- '}'
- ;
- SubElement:
- doc=DOCU?
- 'substructure' type=[ElementDef|QualifiedName] name=STRING ('{'
- subelements+=SubElement? (',' subelements+=SubElement)*
- '}')?
- ;
- Property:
- GenericProperty | EnumProperty | NumberProperty | BooleanProperty | StringProperty | IntegerProperty
- ;
- PseudoClass:
- doc=DOCU?
- 'pseudoclass' name=STRING
- ;
- GenericProperty:
- doc=DOCU?
- name=STRING 'default' defaultValue=STRING '{'
- typeRule=TypeRule
- '}'
- ;
- TypeRule:
- segment=Segment typeSegment+=SubRule*
- ;
- SubRule:
- TypeRuleSegment | TypeGroupSegment | TypeKeySegment
- ;
- TypeRuleSegment:
- op=('||'|'|') segment=Segment
- ;
- Segment:
- TypeSegment | TypeFunctionSegment | TypeGroupSegment
- ;
- TypeSegment:
- ('<' type+=[TypeDef|ValidID]'>')+
- ;
- TypeKeySegment:
- keyword=STRING ('?')?
- ;
- TypeFunctionSegment:
- function=ValidID '(' type=[TypeDef|ValidID] ')'
- ;
- TypeGroupSegment:
- '[' sep=STRING? rule=TypeRule ']' ('*'|'+'|'?'|('{' min=INT (','max=INT)?'}'))?
- ;
- EnumProperty:
- doc=DOCU?
- 'enum' name=STRING 'default' defaultValue=STRING '{'
- values+=EnumValue (',' values+=EnumValue)+
- '}'
- ;
- EnumValue:
- doc=DOCU?
- value=STRING
- ;
- NumberProperty:
- doc=DOCU?
- unsigned?='unsigned'? 'number' name=STRING 'default' defaultValue=DECIMAL ('range' min=DECIMAL 'to' max=DECIMAL)?
- ;
- IntegerProperty:
- doc=DOCU?
- unsigned?='unsigned'? 'integer' name=STRING 'default' defaultValue=INT ('range' min=INT 'to' max=INT)?
- ;
- BooleanProperty:
- doc=DOCU?
- 'boolean' name=STRING 'default' defaultValue=('true'|'false')
- ;
- StringProperty:
- doc=DOCU?
- 'string' name=STRING 'default' defaultValue=STRING
- ;
- QualifiedNameWithWildCard :
- QualifiedName ('.' '*')?;
- terminal DOCU: '/#' -> '#/';
- /*Operation:
- 'op' name=ValidID '(' (params+=FullJvmFormalParameter (',' params+=FullJvmFormalParameter)*)? ')' ':' type=JvmTypeReference
- body=XBlockExpression;*/
- terminal ID:
- '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement