gg = '>>';
starship = '<=>';
bang='!';
+quest='?';
at='@';
semi=';';
mid_string = '}' str_body '{' | '}' '}' '}' long_str_body lsend2;
end_string = '}' str_body '"' id? | '}' '}' '}' long_str_body lsend1 id? ;
char = id? ((''' [[any - '''] - '\'] ''') | (''' '\' any ''')) id?;
-bad_string = ('"'|'}') str_body | '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
+bad_string = ('"'|'}') str_body ;
+bad_t_string = '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
bad_char = ''' '\'? any;
extern_code_segment = '`' '{' extern_code_body '`' '}';
+bad_extern = '`' '{' extern_code_body;
/*****************************************************************************/
Ignored Tokens
recv~nopar~nobra {-> expr}
= expr_atom~nopar~nobra dot no {-> expr_atom~nopar~nobra.expr}
+ | {safe} expr_atom~nopar~nobra quest dot no {-> New expr.safe(expr_atom~nopar~nobra.expr, quest)}
| {implicit} {-> New expr.implicit_self()}
;
| {debug_type} kwdebug kwtype expr type
| {vararg} expr dotdotdot
| {namedarg} id assign expr
+ | {safe} expr quest
| {type} type
| {methid} expr [id]:methid
| {at} annotations