parser: new class AOperatorMethid to factorize operator methods
authorJean Privat <jean@pryen.org>
Thu, 23 Apr 2015 08:16:54 +0000 (15:16 +0700)
committerJean Privat <jean@pryen.org>
Thu, 23 Apr 2015 08:16:54 +0000 (15:16 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

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

index 5ca0e37..a3f4e6f 100644 (file)
@@ -846,7 +846,27 @@ propdef = {attr} doc? kwredef? visibility kwvar [id2]:id type? expr? annotations
        | {annot} doc? kwredef? visibility? atid opar? [args]:expr* cpar? annotations?
        ;
 
-methid = {id} id | {plus} plus | {minus} minus | {star} star | {starstar} starstar | {slash} slash | {percent} percent | {eq} eq | {ne} ne | {le} le | {ge} ge | {lt} lt | {gt} gt |  {ll} ll | {gg} gg | {bra} obra cbra | {starship} starship | {assign} id assign | {braassign} obra cbra assign;
+methid
+       = {id} id
+       | {plus} [op]:plus
+       | {minus} [op]:minus
+       | {star} [op]:star
+       | {starstar} [op]:starstar
+       | {slash} [op]:slash
+       | {percent} [op]:percent
+       | {eq} [op]:eq
+       | {ne} [op]:ne
+       | {le} [op]:le
+       | {ge} [op]:ge
+       | {lt} [op]:lt
+       | {gt} [op]:gt
+       | {ll} [op]:ll
+       | {gg} [op]:gg
+       | {starship} [op]:starship
+       | {bra} obra cbra
+       | {assign} id assign
+       | {braassign} obra cbra assign
+       ;
 
 signature = opar? [params]:param* cpar? type?;
 
index 1525f17..219c396 100644 (file)
@@ -1425,116 +1425,87 @@ class AIdMethid
        var n_id: TId is writable, noinit
 end
 
-# A method name `+`
-class APlusMethid
+# A method name for an operator
+class AOperatorMethid
        super AMethid
 
-       # The `+` symbol
-       var n_plus: TPlus is writable, noinit
+       # The associated operator symbol
+       var n_op: Token is writable, noinit
+end
+# A method name `+`
+class APlusMethid
+       super AOperatorMethid
 end
 
 # A method name `-`
 class AMinusMethid
-       super AMethid
-
-       # The `-` symbol
-       var n_minus: TMinus is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `*`
 class AStarMethid
-       super AMethid
-
-       # The `*` symbol
-       var n_star: TStar is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `**`
 class AStarstarMethid
-       super AMethid
-
-       # The `**` symbol
-       var n_starstar: TStarstar is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `/`
 class ASlashMethid
-       super AMethid
-
-       # The `/` symbol
-       var n_slash: TSlash is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `%`
 class APercentMethid
-       super AMethid
+       super AOperatorMethid
 
-       # The `%` symbol
-       var n_percent: TPercent is writable, noinit
 end
 
 # A method name `==`
 class AEqMethid
-       super AMethid
-
-       # The `==` symbol
-       var n_eq: TEq is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `!=`
 class ANeMethid
-       super AMethid
-
-       # The `!=` symbol
-       var n_ne: TNe is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `<=`
 class ALeMethid
-       super AMethid
-
-       # The `<=` symbol
-       var n_le: TLe is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `>=`
 class AGeMethid
-       super AMethid
-
-       # The `>=` symbol
-       var n_ge: TGe is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `<`
 class ALtMethid
-       super AMethid
-
-       # The `<` symbol
-       var n_lt: TLt is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `>`
 class AGtMethid
-       super AMethid
-
-       # The `>` symbol
-       var n_gt: TGt is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `<<`
 class ALlMethid
-       super AMethid
-
-       # The `<<` symbol
-       var n_ll: TLl is writable, noinit
+       super AOperatorMethid
 end
 
 # A method name `>>`
 class AGgMethid
-       super AMethid
+       super AOperatorMethid
+end
 
-       # The `>>` symbol
-       var n_gg: TGg is writable, noinit
+# A method name `<=>`
+class AStarshipMethid
+       super AOperatorMethid
 end
 
 # A method name `[]`
@@ -1548,14 +1519,6 @@ class ABraMethid
        var n_cbra: TCbra is writable, noinit
 end
 
-# A method name `<=>`
-class AStarshipMethid
-       super AMethid
-
-       # The `<=>` symbol
-       var n_starship: TStarship is writable, noinit
-end
-
 # A setter method name with a simple identifier (with a `=`)
 class AAssignMethid
        super AMethid