assign = '=';
pluseq = '+=';
minuseq = '-=';
+stareq = '*=';
+slasheq = '/=';
+percenteq = '%=';
+starstareq = '**=';
+lleq = '<<=';
+ggeq = '>>=';
dotdotdot = '...';
dotdot = '..';
dot = '.';
assign_op
= {plus} pluseq
| {minus} minuseq
+ | {star} stareq
+ | {slash} slasheq
+ | {percent} percenteq
+ | {starstar} starstareq
+ | {ll} lleq
+ | {gg} ggeq
;
do~withelse {-> expr}
assign_op
= {plus} [op]:pluseq
| {minus}[op]:minuseq
+ | {star} [op]:stareq
+ | {slash} [op]:slasheq
+ | {percent} [op]:percenteq
+ | {starstar} [op]:starstareq
+ | {ll} [op]:lleq
+ | {gg} [op]:ggeq
;
module_name = quad? [path]:id* id;