xtext keyword problem [message #1743419] |
Thu, 15 September 2016 09:58 |
Sachin Samaram Messages: 271 Registered: April 2016 |
Senior Member |
|
|
Hi,
I have call statement which accepts "RETURN" statement in it. But when I am using return inside it showing error:
Can anyone help me how to get rid the error if I use return in call?
Minimal grammar to reproduce the problem:
Model: {Model} NL* statements+=Statement*;
Statement: (NonRecursingStatement) ';'? NL+ | HASH_COMMENT NL*;
NonRecursingStatement returns Statement:
( Call|Return
)
;
Call: 'call' procRef=ID callExp=CompleteExpression?;
Return: name=('return'|'retvar') (returnExp+=Expression (','? returnExp+=Expression)*)?;
ArrayDecl : {ArrayDecl} ('[' size=CompleteExpression? ']');
Parenthesis : {Parenthesis} ('(' size=CompleteExpression? ')');
Initialize : {Initialize} ('{' args=CompleteExpression? '}');
Expression:
Primary
;
Primary returns Expression: {Expression}
('+'|'-')? name=NUMBER | name=STRING | name=ID (ArrayDecl=ArrayDecl? & Parenthesis=Parenthesis?) | ArrayDecl=ArrayDecl | Parenthesis=Parenthesis | Initialize=Initialize
;
CompleteExpression:
CompleteExpression+=Expression (','? CompleteExpression+=Expression)*
;
terminal DBMS: ('DBMS'|'Dbms'|'dbms') (('\\'((' '|'\t')* '\r'? '\n')) | !('\n' | '\r'))*;
terminal ID : (':'('+')?)? ('a'..'z'|'A'..'Z'|'$'|'@'|'_')('a'..'z'|'A'..'Z'|'$'|'0'..'9'|'@'|'*'|'_'|'.'|'!')*;
terminal STRING : '"' ( '\\'('"'|('\r'? '\n')) | !('\n'|'"') )* '"' |
"'" ( '\\'("'"|('\r'? '\n')) | !('\n'|"'") )* "'";
terminal SL_COMMENT: '//' !('\n' | '\r')*;
terminal HASH_COMMENT : ('#'('\r'? '\n')?) | ('#' !('#'|'\n'|'\r')+ ('\r'? '\n')?) | (('#''#''#') !('\n'|'\r')* ('\r'? '\n')?);
terminal WS : (' '|'\t'| ('\\'((' '|'\t')* '\r'? '\n')))+;
terminal NL : ('\r'? '\n')+;
terminal NUMBER: (OCTAL|FLOAT|INT|BINARY|HEX);
terminal OCTAL returns ecore::EInt: ('0') ('0'..'7')+;
terminal FLOAT returns ecore::EFloat: ('0'..'9' ('0'..'9')*) '.' ('0'..'9')*;
terminal INT returns ecore::EInt: ('0'..'9' ('0'..'9')*);
terminal RANGE: '0'..'9' '..' ('0'..'9')*;
terminal BINARY returns ecore::EInt: ('0b'|'0B') ('0'|'1')+;
terminal HEX returns ecore::EInt:('0x'|'0X')('0'..'9'|'a'..'f'|'A'..'F')+;
[Updated on: Thu, 15 September 2016 13:19] Report message to a moderator
|
|
|
|
Powered by
FUDForum. Page generated in 0.03378 seconds