grammar: add more combined assignment operator
authorJean Privat <jean@pryen.org>
Wed, 15 Apr 2015 03:50:33 +0000 (10:50 +0700)
committerJean Privat <jean@pryen.org>
Wed, 15 Apr 2015 05:43:57 +0000 (12:43 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

src/parser/nit.sablecc3xx
src/parser/parser_nodes.nit

index 50fc1cf..5ca0e37 100644 (file)
@@ -158,6 +158,12 @@ quad = '::';
 assign = '=';
 pluseq = '+=';
 minuseq = '-=';
+stareq = '*=';
+slasheq = '/=';
+percenteq = '%=';
+starstareq = '**=';
+lleq = '<<=';
+ggeq = '>>=';
 dotdotdot = '...';
 dotdot = '..';
 dot = '.';
@@ -443,6 +449,12 @@ assignment~nopar {-> expr}
 assign_op
        = {plus} pluseq
        | {minus} minuseq
+       | {star} stareq
+       | {slash} slasheq
+       | {percent} percenteq
+       | {starstar} starstareq
+       | {ll} lleq
+       | {gg} ggeq
        ;
 
 do~withelse {-> expr}
@@ -937,6 +949,12 @@ exprs
 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;
index 5fa19ce..1525f17 100644 (file)
@@ -730,6 +730,36 @@ class TMinuseq
        super TokenOperator
 end
 
+# The operator `*=`
+class TStareq
+       super TokenOperator
+end
+
+# The operator `/=`
+class TSlasheq
+       super TokenOperator
+end
+
+# The operator `%=`
+class TPercenteq
+       super TokenOperator
+end
+
+# The operator `**=`
+class TStarstareq
+       super TokenOperator
+end
+
+# The operator `<<=`
+class TLleq
+       super TokenOperator
+end
+
+# The operator `>>=`
+class TGgeq
+       super TokenOperator
+end
+
 # The symbol `...`
 class TDotdotdot
        super Token
@@ -2559,20 +2589,62 @@ abstract class AAssignOp
        fun operator: String is abstract
 end
 
-# The `+=` assignment operation
+# A `+=` assignment operation
 class APlusAssignOp
        super AAssignOp
 
        redef fun operator do return "+"
 end
 
-# The `-=` assignment operator
+# A `-=` assignment operation
 class AMinusAssignOp
        super AAssignOp
 
        redef fun operator do return "-"
 end
 
+# A `*=` assignment operation
+class AStarAssignOp
+       super AAssignOp
+
+       redef fun operator do return "*"
+end
+
+# A `/=` assignment operation
+class ASlashAssignOp
+       super AAssignOp
+
+       redef fun operator do return "/"
+end
+
+# A `%=` assignment operation
+class APercentAssignOp
+       super AAssignOp
+
+       redef fun operator do return "%"
+end
+
+# A `**=` assignment operation
+class AStarstarAssignOp
+       super AAssignOp
+
+       redef fun operator do return "**"
+end
+
+# A `<<=` assignment operation
+class ALlAssignOp
+       super AAssignOp
+
+       redef fun operator do return "<<"
+end
+
+# A `>>=` assignment operation
+class AGgAssignOp
+       super AAssignOp
+
+       redef fun operator do return ">>"
+end
+
 # A possibly fully-qualified module identifier
 class AModuleName
        super Prod