| grammar org.eclipse.fx.ide.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 |
| ; |
| |
| 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')*; |