1 grammar SimanticsData;
\r
6 ASTLabelType=pANTLR3_BASE_TREE;
\r
34 ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
\r
37 INT : '-'? '0'..'9'+
\r
41 : '-'? ('0'..'9')+ '.' ('0'..'9')+ EXPONENT?
\r
42 //| '-'? '.' ('0'..'9')+ EXPONENT?
\r
43 | '-'? ('0'..'9')+ EXPONENT
\r
47 : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
\r
48 | '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
\r
55 ) {$channel=HIDDEN;}
\r
59 : '"' ( ESC_SEQ | ~('\\'|'"') )* '"'
\r
60 | '"""' ( ~('"') | '"' ~('"') | '""' ~('"') )* '"""'
\r
64 EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
\r
67 HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
\r
71 : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
\r
78 : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
\r
79 | '\\' ('0'..'7') ('0'..'7')
\r
85 : '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
\r
88 /* -----------------------------------------------------------
\r
90 ----------------------------------------------------------- */
\r
93 typeDefinitions : typeDefinition* -> ^(TYPE_DEFINITIONS typeDefinition*);
\r
96 : 'type' ID '=' unionType -> ^(TYPE_DEFINITION ID unionType)
\r
101 | ('|' unionComponent)+
\r
102 -> ^(UNION_TYPE unionComponent+)
\r
105 unionComponent : ID type? -> ^(TYPE_COMPONENT ID type?) ;
\r
108 : (basicType -> basicType)
\r
109 ('[' arrayLength? ']' -> ^(ARRAY_TYPE $type arrayLength?))* ;
\r
125 : '(' (unionType (',' unionType)*)? ')'
\r
126 -> ^(TUPLE_TYPE unionType*)
\r
130 : '{' (component (',' component)*)? '}'
\r
131 -> ^(RECORD_TYPE component*)
\r
135 : ID ':' unionType
\r
136 -> ^(TYPE_COMPONENT ID unionType)
\r
140 : ID ('(' parameter (',' parameter)* ')')?
\r
141 -> ^(TYPE_REFERENCE ID parameter*)
\r
145 : ID '=' parameterValue -> ^(TYPE_ANNOTATION ID parameterValue)
\r
153 | ('[' | '(') range (']' | ')')
\r
160 | number '..' number
\r
177 /* -----------------------------------------------------------
\r
179 ----------------------------------------------------------- */
\r
181 valueDefinitions : valueDefinition* -> ^(VALUE_DEFINITIONS valueDefinition*);
\r
184 : ID ':' unionType '=' value
\r
185 -> ^(VALUE_DEFINITION ID unionType value)
\r
189 : (basicValue -> basicValue)
\r
190 (':' type -> ^(VARIANT type $value))*
\r
194 : 'null' -> NO_VALUE
\r
206 : '[' (value (',' value)*)? ']'
\r
207 -> ^(ARRAY value*)
\r
211 : '(' (value (',' value)*)? ')'
\r
212 -> ^(TUPLE value*)
\r
217 -> ^(TAGGED_VALUE ID basicValue)
\r
221 : '{' (recordAssignment (',' recordAssignment)*)? '}'
\r
222 -> ^(RECORD recordAssignment*)
\r
227 -> ^(ASSIGNMENT ID value)
\r
230 map : 'map' '{' (mapAssignment (',' mapAssignment)*)? '}'
\r
231 -> ^(MAP mapAssignment*)
\r
236 -> ^(ASSIGNMENT value*)
\r