32 lines
1,010 B
Text
32 lines
1,010 B
Text
grammar JsTransformLang
|
|
|
|
entry Model:
|
|
(proposals+=Proposal)*;
|
|
|
|
Proposal:
|
|
'proposal' name=ID "{"
|
|
"applicable" "to" "{"
|
|
code=RICH_TEXT
|
|
"}"
|
|
"replace" "with" "{"
|
|
|
|
"}"
|
|
"}";
|
|
|
|
hidden terminal WS: /\s+/;
|
|
terminal ID: /[_a-zA-Z][\w_]*/;
|
|
|
|
terminal fragment IN_RICH_STRING:
|
|
"''" !('«'|"'")
|
|
| "'" !('«'|"'");
|
|
//| !('«'|"'");
|
|
terminal STRING: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/;
|
|
hidden terminal ML_COMMENT: /\/\*[\s\S]*?\*\//;
|
|
hidden terminal SL_COMMENT: /\/\/[^\n\r]*/;
|
|
terminal RICH_TEXT: "'''" IN_RICH_STRING* ("'''"| ("'" "'"?)? );
|
|
terminal RICH_TEXT_START: "'''" IN_RICH_STRING* ("'" "'"?)? '«';
|
|
terminal RICH_TEXT_END: '»' IN_RICH_STRING* ("'''"| ("'" "'"?)? );
|
|
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* ("'''"| ("'" "'"?)? )) );
|
|
|