smacro_definition

smacro_definition:=
macros | macro NAME is sbasic_name_comma_list ;
macros | macro NAME is NAME ;
macros | macro for NAME in sbasic_name_comma_list do statement* done ;
macros | macro for NAME in ( sbasic_name_comma_list ) do statement* done ;
macros | macro NAME is new ;
macros | macro var sbasic_name_comma_list = sexpr ;
macros | macro val sbasic_name_comma_list = sexpr ;
macros | macro sbasic_name_comma_list = sexpr ;
macros | macro val NAME is sexpr ;
macros | macro fun NAME smac_arg_list = sexpr ;
macros | macro fun NAME smac_arg_list => sexpr ;
macros | macro proc NAME smac_arg_list scompound
macros | macro scompound ;
macros | macro forget sbasic_name_comma_list ;
macros | macro forget ;
macros | macro goto NAME ;
macros | macro NAME :>
macros | macro if sexpr goto NAME ;
macros | macro for val sbasic_name_comma_list in sexpr do statement* done ;