From d2ca2649d78c8a66de18f4f1f94f30bb6e2cbabb Mon Sep 17 00:00:00 2001
From: b21223327 <zakaria.bazizi@etu.univ-amu.fr>
Date: Fri, 12 Apr 2024 10:56:07 +0200
Subject: [PATCH] =?UTF-8?q?tp=20eval=20(=20s'il=20vous=20plait=20voir=20le?=
 =?UTF-8?q?=20mail=20envoy=C3=A9=20par=20zakaria=20Bazizi=20pour=20monsieu?=
 =?UTF-8?q?r=20Alexis=20nasr=20)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Compiler.java                             |   2 +-
 src/l.cfg                                     |  12 +-
 src/lParser/analysis/Analysis.java            |  10 +-
 src/lParser/analysis/AnalysisAdapter.java     |  40 +-
 src/lParser/analysis/DepthFirstAdapter.java   | 126 +++-
 .../analysis/ReversedDepthFirstAdapter.java   | 128 +++-
 src/lParser/lexer/Lexer.java                  | 162 +++--
 src/lParser/lexer/lexer.dat                   | Bin 3180 -> 3220 bytes
 src/lParser/node/AAddtoAdd.java               |  95 +++
 src/lParser/node/AAddtoAddto.java             | 181 +++++
 src/lParser/node/AAddtoMult.java              |  95 +++
 src/lParser/node/AMoinsAdd.java               |  30 +-
 .../node/{ANegMult.java => ANegAddto.java}    |  10 +-
 src/lParser/node/APlusAdd.java                |  30 +-
 src/lParser/node/PAddto.java                  |   8 +
 src/lParser/node/TPlusegale.java              |  39 ++
 src/lParser/parser/Parser.java                | 638 +++++++++++-------
 src/lParser/parser/TokenIndex.java            |  54 +-
 src/lParser/parser/parser.dat                 | Bin 9162 -> 9914 bytes
 src/sa/Sc2sa.java                             |  35 +-
 src/saParser/analysis/Analysis.java           |   4 +
 src/saParser/analysis/AnalysisAdapter.java    |  24 +
 src/saParser/analysis/DepthFirstAdapter.java  |  74 ++
 .../analysis/ReversedDepthFirstAdapter.java   |  74 ++
 src/saParser/lexer/Lexer.java                 | 303 +++++----
 src/saParser/lexer/lexer.dat                  | Bin 8476 -> 8784 bytes
 src/saParser/parser/Parser.java               | 492 ++++++++------
 src/saParser/parser/TokenIndex.java           |  68 +-
 src/saParser/parser/parser.dat                | Bin 7678 -> 8160 bytes
 29 files changed, 1945 insertions(+), 789 deletions(-)
 create mode 100644 src/lParser/node/AAddtoAdd.java
 create mode 100644 src/lParser/node/AAddtoAddto.java
 create mode 100644 src/lParser/node/AAddtoMult.java
 rename src/lParser/node/{ANegMult.java => ANegAddto.java} (90%)
 create mode 100644 src/lParser/node/PAddto.java
 create mode 100644 src/lParser/node/TPlusegale.java

diff --git a/src/Compiler.java b/src/Compiler.java
index 09f1c74..14ead4d 100644
--- a/src/Compiler.java
+++ b/src/Compiler.java
@@ -39,9 +39,9 @@ public class Compiler
 		typeCheck();
 		System.out.println("[BUILD C3A] ");
 		buildC3a();
-		/*
 		System.out.println("[BUILD PRE NASM] ");
 		buildPreNasm();
+		/*
 		System.out.println("[BUILD FLOW GRAPH] ");
 		buildFg();
 		System.out.println("[SOLVE FLOW GRAPH]");
diff --git a/src/l.cfg b/src/l.cfg
index 11bfb2e..5b42890 100644
--- a/src/l.cfg
+++ b/src/l.cfg
@@ -22,6 +22,8 @@ inf = '<' ;
 fois = '*' ;
 diviser = '/' ;
 non ='!' ;
+modulo = '%';
+plusegale='+=' ;
 gparenthese = '(' ;
 dparenthese = ')' ;
 accoladeg = '{' ;
@@ -65,10 +67,16 @@ equals =
     {egale} equals egale add | {inf} equals inf add | {add} add ;
 
 add =
-    {plus} add plus mult | {moins} add moins mult | {mult} mult ;
+    {plus} add plus mod | {moins} add moins mod | {mod} mod ;
+
+mod = {mod} mod modulo mult | {mult} mult ;
 
 mult =
-    {fois} mult fois neg | {diviser} mult diviser neg | {neg} neg ;
+    {fois} mult fois neg | {diviser} mult diviser neg | {addto} addto ;
+
+
+addto = {addto} addto plusegale neg | {neg} neg ;
+
 
 neg =
     {non} non neg | {e6} e6 ;
diff --git a/src/lParser/analysis/Analysis.java b/src/lParser/analysis/Analysis.java
index 2f313cf..a9e69cf 100644
--- a/src/lParser/analysis/Analysis.java
+++ b/src/lParser/analysis/Analysis.java
@@ -22,10 +22,14 @@ public interface Analysis extends Switch
     void caseAAddEquals(AAddEquals node);
     void caseAPlusAdd(APlusAdd node);
     void caseAMoinsAdd(AMoinsAdd node);
-    void caseAMultAdd(AMultAdd node);
+    void caseAModAdd(AModAdd node);
+    void caseAModMod(AModMod node);
+    void caseAMultMod(AMultMod node);
     void caseAFoisMult(AFoisMult node);
     void caseADiviserMult(ADiviserMult node);
-    void caseANegMult(ANegMult node);
+    void caseAAddtoMult(AAddtoMult node);
+    void caseAAddtoAddto(AAddtoAddto node);
+    void caseANegAddto(ANegAddto node);
     void caseANonNeg(ANonNeg node);
     void caseAE6Neg(AE6Neg node);
     void caseAParentheseE6(AParentheseE6 node);
@@ -79,6 +83,8 @@ public interface Analysis extends Switch
     void caseTFois(TFois node);
     void caseTDiviser(TDiviser node);
     void caseTNon(TNon node);
+    void caseTModulo(TModulo node);
+    void caseTPlusegale(TPlusegale node);
     void caseTGparenthese(TGparenthese node);
     void caseTDparenthese(TDparenthese node);
     void caseTAccoladeg(TAccoladeg node);
diff --git a/src/lParser/analysis/AnalysisAdapter.java b/src/lParser/analysis/AnalysisAdapter.java
index 80ac9c0..f254aaf 100644
--- a/src/lParser/analysis/AnalysisAdapter.java
+++ b/src/lParser/analysis/AnalysisAdapter.java
@@ -135,7 +135,19 @@ public class AnalysisAdapter implements Analysis
     }
 
     @Override
-    public void caseAMultAdd(AMultAdd node)
+    public void caseAModAdd(AModAdd node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAModMod(AModMod node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAMultMod(AMultMod node)
     {
         defaultCase(node);
     }
@@ -153,7 +165,19 @@ public class AnalysisAdapter implements Analysis
     }
 
     @Override
-    public void caseANegMult(ANegMult node)
+    public void caseAAddtoMult(AAddtoMult node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAAddtoAddto(AAddtoAddto node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseANegAddto(ANegAddto node)
     {
         defaultCase(node);
     }
@@ -470,6 +494,18 @@ public class AnalysisAdapter implements Analysis
         defaultCase(node);
     }
 
+    @Override
+    public void caseTModulo(TModulo node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTPlusegale(TPlusegale node)
+    {
+        defaultCase(node);
+    }
+
     @Override
     public void caseTGparenthese(TGparenthese node)
     {
diff --git a/src/lParser/analysis/DepthFirstAdapter.java b/src/lParser/analysis/DepthFirstAdapter.java
index d9885ca..e832c9b 100644
--- a/src/lParser/analysis/DepthFirstAdapter.java
+++ b/src/lParser/analysis/DepthFirstAdapter.java
@@ -262,9 +262,9 @@ public class DepthFirstAdapter extends AnalysisAdapter
         {
             node.getPlus().apply(this);
         }
-        if(node.getMult() != null)
+        if(node.getMod() != null)
         {
-            node.getMult().apply(this);
+            node.getMod().apply(this);
         }
         outAPlusAdd(node);
     }
@@ -291,32 +291,82 @@ public class DepthFirstAdapter extends AnalysisAdapter
         {
             node.getMoins().apply(this);
         }
+        if(node.getMod() != null)
+        {
+            node.getMod().apply(this);
+        }
+        outAMoinsAdd(node);
+    }
+
+    public void inAModAdd(AModAdd node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAModAdd(AModAdd node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAModAdd(AModAdd node)
+    {
+        inAModAdd(node);
+        if(node.getMod() != null)
+        {
+            node.getMod().apply(this);
+        }
+        outAModAdd(node);
+    }
+
+    public void inAModMod(AModMod node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAModMod(AModMod node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAModMod(AModMod node)
+    {
+        inAModMod(node);
+        if(node.getMod() != null)
+        {
+            node.getMod().apply(this);
+        }
+        if(node.getModulo() != null)
+        {
+            node.getModulo().apply(this);
+        }
         if(node.getMult() != null)
         {
             node.getMult().apply(this);
         }
-        outAMoinsAdd(node);
+        outAModMod(node);
     }
 
-    public void inAMultAdd(AMultAdd node)
+    public void inAMultMod(AMultMod node)
     {
         defaultIn(node);
     }
 
-    public void outAMultAdd(AMultAdd node)
+    public void outAMultMod(AMultMod node)
     {
         defaultOut(node);
     }
 
     @Override
-    public void caseAMultAdd(AMultAdd node)
+    public void caseAMultMod(AMultMod node)
     {
-        inAMultAdd(node);
+        inAMultMod(node);
         if(node.getMult() != null)
         {
             node.getMult().apply(this);
         }
-        outAMultAdd(node);
+        outAMultMod(node);
     }
 
     public void inAFoisMult(AFoisMult node)
@@ -377,25 +427,75 @@ public class DepthFirstAdapter extends AnalysisAdapter
         outADiviserMult(node);
     }
 
-    public void inANegMult(ANegMult node)
+    public void inAAddtoMult(AAddtoMult node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAAddtoMult(AAddtoMult node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAAddtoMult(AAddtoMult node)
+    {
+        inAAddtoMult(node);
+        if(node.getAddto() != null)
+        {
+            node.getAddto().apply(this);
+        }
+        outAAddtoMult(node);
+    }
+
+    public void inAAddtoAddto(AAddtoAddto node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAAddtoAddto(AAddtoAddto node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAAddtoAddto(AAddtoAddto node)
+    {
+        inAAddtoAddto(node);
+        if(node.getAddto() != null)
+        {
+            node.getAddto().apply(this);
+        }
+        if(node.getPlusegale() != null)
+        {
+            node.getPlusegale().apply(this);
+        }
+        if(node.getNeg() != null)
+        {
+            node.getNeg().apply(this);
+        }
+        outAAddtoAddto(node);
+    }
+
+    public void inANegAddto(ANegAddto node)
     {
         defaultIn(node);
     }
 
-    public void outANegMult(ANegMult node)
+    public void outANegAddto(ANegAddto node)
     {
         defaultOut(node);
     }
 
     @Override
-    public void caseANegMult(ANegMult node)
+    public void caseANegAddto(ANegAddto node)
     {
-        inANegMult(node);
+        inANegAddto(node);
         if(node.getNeg() != null)
         {
             node.getNeg().apply(this);
         }
-        outANegMult(node);
+        outANegAddto(node);
     }
 
     public void inANonNeg(ANonNeg node)
diff --git a/src/lParser/analysis/ReversedDepthFirstAdapter.java b/src/lParser/analysis/ReversedDepthFirstAdapter.java
index b41333c..5f21cc1 100644
--- a/src/lParser/analysis/ReversedDepthFirstAdapter.java
+++ b/src/lParser/analysis/ReversedDepthFirstAdapter.java
@@ -254,9 +254,9 @@ public class ReversedDepthFirstAdapter extends AnalysisAdapter
     public void caseAPlusAdd(APlusAdd node)
     {
         inAPlusAdd(node);
-        if(node.getMult() != null)
+        if(node.getMod() != null)
         {
-            node.getMult().apply(this);
+            node.getMod().apply(this);
         }
         if(node.getPlus() != null)
         {
@@ -283,9 +283,9 @@ public class ReversedDepthFirstAdapter extends AnalysisAdapter
     public void caseAMoinsAdd(AMoinsAdd node)
     {
         inAMoinsAdd(node);
-        if(node.getMult() != null)
+        if(node.getMod() != null)
         {
-            node.getMult().apply(this);
+            node.getMod().apply(this);
         }
         if(node.getMoins() != null)
         {
@@ -298,25 +298,75 @@ public class ReversedDepthFirstAdapter extends AnalysisAdapter
         outAMoinsAdd(node);
     }
 
-    public void inAMultAdd(AMultAdd node)
+    public void inAModAdd(AModAdd node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAModAdd(AModAdd node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAModAdd(AModAdd node)
+    {
+        inAModAdd(node);
+        if(node.getMod() != null)
+        {
+            node.getMod().apply(this);
+        }
+        outAModAdd(node);
+    }
+
+    public void inAModMod(AModMod node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAModMod(AModMod node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAModMod(AModMod node)
+    {
+        inAModMod(node);
+        if(node.getMult() != null)
+        {
+            node.getMult().apply(this);
+        }
+        if(node.getModulo() != null)
+        {
+            node.getModulo().apply(this);
+        }
+        if(node.getMod() != null)
+        {
+            node.getMod().apply(this);
+        }
+        outAModMod(node);
+    }
+
+    public void inAMultMod(AMultMod node)
     {
         defaultIn(node);
     }
 
-    public void outAMultAdd(AMultAdd node)
+    public void outAMultMod(AMultMod node)
     {
         defaultOut(node);
     }
 
     @Override
-    public void caseAMultAdd(AMultAdd node)
+    public void caseAMultMod(AMultMod node)
     {
-        inAMultAdd(node);
+        inAMultMod(node);
         if(node.getMult() != null)
         {
             node.getMult().apply(this);
         }
-        outAMultAdd(node);
+        outAMultMod(node);
     }
 
     public void inAFoisMult(AFoisMult node)
@@ -377,25 +427,75 @@ public class ReversedDepthFirstAdapter extends AnalysisAdapter
         outADiviserMult(node);
     }
 
-    public void inANegMult(ANegMult node)
+    public void inAAddtoMult(AAddtoMult node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAAddtoMult(AAddtoMult node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAAddtoMult(AAddtoMult node)
+    {
+        inAAddtoMult(node);
+        if(node.getAddto() != null)
+        {
+            node.getAddto().apply(this);
+        }
+        outAAddtoMult(node);
+    }
+
+    public void inAAddtoAddto(AAddtoAddto node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAAddtoAddto(AAddtoAddto node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAAddtoAddto(AAddtoAddto node)
+    {
+        inAAddtoAddto(node);
+        if(node.getNeg() != null)
+        {
+            node.getNeg().apply(this);
+        }
+        if(node.getPlusegale() != null)
+        {
+            node.getPlusegale().apply(this);
+        }
+        if(node.getAddto() != null)
+        {
+            node.getAddto().apply(this);
+        }
+        outAAddtoAddto(node);
+    }
+
+    public void inANegAddto(ANegAddto node)
     {
         defaultIn(node);
     }
 
-    public void outANegMult(ANegMult node)
+    public void outANegAddto(ANegAddto node)
     {
         defaultOut(node);
     }
 
     @Override
-    public void caseANegMult(ANegMult node)
+    public void caseANegAddto(ANegAddto node)
     {
-        inANegMult(node);
+        inANegAddto(node);
         if(node.getNeg() != null)
         {
             node.getNeg().apply(this);
         }
-        outANegMult(node);
+        outANegAddto(node);
     }
 
     public void inANonNeg(ANonNeg node)
diff --git a/src/lParser/lexer/Lexer.java b/src/lParser/lexer/Lexer.java
index f399d7c..4f46453 100644
--- a/src/lParser/lexer/Lexer.java
+++ b/src/lParser/lexer/Lexer.java
@@ -469,7 +469,6 @@ public class Lexer
                     case 29:
                         {
                             @SuppressWarnings("hiding") Token token = new29(
-                                getText(accept_length),
                                 start_line + 1,
                                 start_pos + 1);
                             pushBack(accept_length);
@@ -490,6 +489,7 @@ public class Lexer
                     case 31:
                         {
                             @SuppressWarnings("hiding") Token token = new31(
+                                getText(accept_length),
                                 start_line + 1,
                                 start_pos + 1);
                             pushBack(accept_length);
@@ -500,6 +500,26 @@ public class Lexer
                     case 32:
                         {
                             @SuppressWarnings("hiding") Token token = new32(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 33:
+                        {
+                            @SuppressWarnings("hiding") Token token = new33(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 34:
+                        {
+                            @SuppressWarnings("hiding") Token token = new34(
                                 getText(accept_length),
                                 start_line + 1,
                                 start_pos + 1);
@@ -542,26 +562,28 @@ public class Lexer
     Token new10(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFois(line, pos); }
     Token new11(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TDiviser(line, pos); }
     Token new12(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNon(line, pos); }
-    Token new13(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TGparenthese(line, pos); }
-    Token new14(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TDparenthese(line, pos); }
-    Token new15(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAccoladeg(line, pos); }
-    Token new16(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAccoladed(line, pos); }
-    Token new17(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TCrochetg(line, pos); }
-    Token new18(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TCrochetd(line, pos); }
-    Token new19(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TBool(line, pos); }
-    Token new20(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEntier(line, pos); }
-    Token new21(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSi(line, pos); }
-    Token new22(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAlors(line, pos); }
-    Token new23(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TTantque(line, pos); }
-    Token new24(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFaire(line, pos); }
-    Token new25(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSinon(line, pos); }
-    Token new26(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TRetourner(line, pos); }
-    Token new27(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLire(line, pos); }
-    Token new28(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEcrire(line, pos); }
-    Token new29(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNombre(text, line, pos); }
-    Token new30(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TVrai(line, pos); }
-    Token new31(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFaux(line, pos); }
-    Token new32(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TId(text, line, pos); }
+    Token new13(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TModulo(line, pos); }
+    Token new14(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TPlusegale(line, pos); }
+    Token new15(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TGparenthese(line, pos); }
+    Token new16(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TDparenthese(line, pos); }
+    Token new17(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAccoladeg(line, pos); }
+    Token new18(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAccoladed(line, pos); }
+    Token new19(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TCrochetg(line, pos); }
+    Token new20(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TCrochetd(line, pos); }
+    Token new21(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TBool(line, pos); }
+    Token new22(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEntier(line, pos); }
+    Token new23(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSi(line, pos); }
+    Token new24(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAlors(line, pos); }
+    Token new25(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TTantque(line, pos); }
+    Token new26(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFaire(line, pos); }
+    Token new27(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSinon(line, pos); }
+    Token new28(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TRetourner(line, pos); }
+    Token new29(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLire(line, pos); }
+    Token new30(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEcrire(line, pos); }
+    Token new31(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNombre(text, line, pos); }
+    Token new32(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TVrai(line, pos); }
+    Token new33(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFaux(line, pos); }
+    Token new34(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TId(text, line, pos); }
 
     private int getChar() throws IOException
     {
@@ -621,87 +643,89 @@ public class Lexer
     private static int[][][][] gotoTable;
 /*  {
         { // INITIAL
-            {{10, 10, 1}, {13, 13, 2}, {32, 32, 3}, {33, 33, 4}, {35, 35, 5}, {36, 36, 6}, {38, 38, 7}, {40, 40, 8}, {41, 41, 9}, {42, 42, 10}, {43, 43, 11}, {44, 44, 12}, {45, 45, 13}, {47, 47, 14}, {48, 57, 15}, {59, 59, 16}, {60, 60, 17}, {61, 61, 18}, {65, 90, 6}, {91, 91, 19}, {93, 93, 20}, {95, 95, 6}, {97, 97, 21}, {98, 98, 22}, {99, 100, 6}, {101, 101, 23}, {102, 102, 24}, {103, 107, 6}, {108, 108, 25}, {109, 113, 6}, {114, 114, 26}, {115, 115, 27}, {116, 116, 28}, {117, 117, 6}, {118, 118, 29}, {119, 122, 6}, {123, 123, 30}, {124, 124, 31}, {125, 125, 32}, },
+            {{10, 10, 1}, {13, 13, 2}, {32, 32, 3}, {33, 33, 4}, {35, 35, 5}, {36, 36, 6}, {37, 37, 7}, {38, 38, 8}, {40, 40, 9}, {41, 41, 10}, {42, 42, 11}, {43, 43, 12}, {44, 44, 13}, {45, 45, 14}, {47, 47, 15}, {48, 57, 16}, {59, 59, 17}, {60, 60, 18}, {61, 61, 19}, {65, 90, 6}, {91, 91, 20}, {93, 93, 21}, {95, 95, 6}, {97, 97, 22}, {98, 98, 23}, {99, 100, 6}, {101, 101, 24}, {102, 102, 25}, {103, 107, 6}, {108, 108, 26}, {109, 113, 6}, {114, 114, 27}, {115, 115, 28}, {116, 116, 29}, {117, 117, 6}, {118, 118, 30}, {119, 122, 6}, {123, 123, 31}, {124, 124, 32}, {125, 125, 33}, },
             {{10, 32, -2}, },
             {{10, 32, -2}, },
             {{10, 32, -2}, },
             {},
-            {{0, 9, 33}, {10, 10, 34}, {11, 12, 33}, {13, 13, 35}, {14, 65535, 33}, },
-            {{36, 36, 36}, {48, 57, 36}, {65, 90, 36}, {95, 95, 36}, {97, 122, 36}, },
+            {{0, 9, 34}, {10, 10, 35}, {11, 12, 34}, {13, 13, 36}, {14, 65535, 34}, },
+            {{36, 36, 37}, {48, 57, 37}, {65, 90, 37}, {95, 95, 37}, {97, 122, 37}, },
             {},
             {},
             {},
             {},
             {},
+            {{61, 61, 38}, },
             {},
             {},
             {},
-            {{48, 57, 15}, },
+            {{48, 57, 16}, },
             {},
             {},
             {},
             {},
             {},
-            {{36, 95, -8}, {97, 107, 36}, {108, 108, 37}, {109, 122, 36}, },
-            {{36, 95, -8}, {97, 110, 36}, {111, 111, 38}, {112, 122, 36}, },
-            {{36, 95, -8}, {97, 98, 36}, {99, 99, 39}, {100, 109, 36}, {110, 110, 40}, {111, 122, 36}, },
-            {{36, 95, -8}, {97, 97, 41}, {98, 122, 36}, },
-            {{36, 95, -8}, {97, 104, 36}, {105, 105, 42}, {106, 122, 36}, },
-            {{36, 95, -8}, {97, 100, 36}, {101, 101, 43}, {102, 122, 36}, },
-            {{36, 104, -27}, {105, 105, 44}, {106, 122, 36}, },
-            {{36, 95, -8}, {97, 97, 45}, {98, 122, 36}, },
-            {{36, 95, -8}, {97, 113, 36}, {114, 114, 46}, {115, 122, 36}, },
+            {{36, 95, -8}, {97, 107, 37}, {108, 108, 39}, {109, 122, 37}, },
+            {{36, 95, -8}, {97, 110, 37}, {111, 111, 40}, {112, 122, 37}, },
+            {{36, 95, -8}, {97, 98, 37}, {99, 99, 41}, {100, 109, 37}, {110, 110, 42}, {111, 122, 37}, },
+            {{36, 95, -8}, {97, 97, 43}, {98, 122, 37}, },
+            {{36, 95, -8}, {97, 104, 37}, {105, 105, 44}, {106, 122, 37}, },
+            {{36, 95, -8}, {97, 100, 37}, {101, 101, 45}, {102, 122, 37}, },
+            {{36, 104, -28}, {105, 105, 46}, {106, 122, 37}, },
+            {{36, 95, -8}, {97, 97, 47}, {98, 122, 37}, },
+            {{36, 95, -8}, {97, 113, 37}, {114, 114, 48}, {115, 122, 37}, },
             {},
             {},
             {},
             {{0, 65535, -7}, },
-            {{13, 13, 47}, },
+            {{13, 13, 49}, },
             {},
             {{36, 122, -8}, },
-            {{36, 110, -24}, {111, 111, 48}, {112, 122, 36}, },
-            {{36, 110, -24}, {111, 111, 49}, {112, 122, 36}, },
-            {{36, 113, -31}, {114, 114, 50}, {115, 122, 36}, },
-            {{36, 95, -8}, {97, 115, 36}, {116, 116, 51}, {117, 122, 36}, },
-            {{36, 104, -27}, {105, 105, 52}, {106, 116, 36}, {117, 117, 53}, {118, 122, 36}, },
-            {{36, 113, -31}, {114, 114, 54}, {115, 122, 36}, },
-            {{36, 115, -42}, {116, 116, 55}, {117, 122, 36}, },
-            {{36, 95, -8}, {97, 109, 36}, {110, 110, 56}, {111, 122, 36}, },
-            {{36, 109, -46}, {110, 110, 57}, {111, 122, 36}, },
-            {{36, 95, -8}, {97, 97, 58}, {98, 122, 36}, },
             {},
-            {{36, 113, -31}, {114, 114, 59}, {115, 122, 36}, },
-            {{36, 107, -23}, {108, 108, 60}, {109, 122, 36}, },
-            {{36, 104, -27}, {105, 105, 61}, {106, 122, 36}, },
-            {{36, 104, -27}, {105, 105, 62}, {106, 122, 36}, },
-            {{36, 113, -31}, {114, 114, 63}, {115, 122, 36}, },
-            {{36, 95, -8}, {97, 119, 36}, {120, 120, 64}, {121, 122, 36}, },
-            {{36, 100, -28}, {101, 101, 65}, {102, 122, 36}, },
-            {{36, 110, -24}, {111, 111, 66}, {112, 122, 36}, },
-            {{36, 110, -24}, {111, 111, 67}, {112, 122, 36}, },
-            {{36, 115, -42}, {116, 116, 68}, {117, 122, 36}, },
-            {{36, 104, -27}, {105, 105, 69}, {106, 122, 36}, },
-            {{36, 95, -8}, {97, 114, 36}, {115, 115, 70}, {116, 122, 36}, },
+            {{36, 110, -25}, {111, 111, 50}, {112, 122, 37}, },
+            {{36, 110, -25}, {111, 111, 51}, {112, 122, 37}, },
+            {{36, 113, -32}, {114, 114, 52}, {115, 122, 37}, },
+            {{36, 95, -8}, {97, 115, 37}, {116, 116, 53}, {117, 122, 37}, },
+            {{36, 104, -28}, {105, 105, 54}, {106, 116, 37}, {117, 117, 55}, {118, 122, 37}, },
+            {{36, 113, -32}, {114, 114, 56}, {115, 122, 37}, },
+            {{36, 115, -44}, {116, 116, 57}, {117, 122, 37}, },
+            {{36, 95, -8}, {97, 109, 37}, {110, 110, 58}, {111, 122, 37}, },
+            {{36, 109, -48}, {110, 110, 59}, {111, 122, 37}, },
+            {{36, 95, -8}, {97, 97, 60}, {98, 122, 37}, },
+            {},
+            {{36, 113, -32}, {114, 114, 61}, {115, 122, 37}, },
+            {{36, 107, -24}, {108, 108, 62}, {109, 122, 37}, },
+            {{36, 104, -28}, {105, 105, 63}, {106, 122, 37}, },
+            {{36, 104, -28}, {105, 105, 64}, {106, 122, 37}, },
+            {{36, 113, -32}, {114, 114, 65}, {115, 122, 37}, },
+            {{36, 95, -8}, {97, 119, 37}, {120, 120, 66}, {121, 122, 37}, },
+            {{36, 100, -29}, {101, 101, 67}, {102, 122, 37}, },
+            {{36, 110, -25}, {111, 111, 68}, {112, 122, 37}, },
+            {{36, 110, -25}, {111, 111, 69}, {112, 122, 37}, },
+            {{36, 115, -44}, {116, 116, 70}, {117, 122, 37}, },
+            {{36, 104, -28}, {105, 105, 71}, {106, 122, 37}, },
+            {{36, 95, -8}, {97, 114, 37}, {115, 115, 72}, {116, 122, 37}, },
             {{36, 122, -8}, },
-            {{36, 113, -31}, {114, 114, 71}, {115, 122, 36}, },
-            {{36, 100, -28}, {101, 101, 72}, {102, 122, 36}, },
-            {{36, 100, -28}, {101, 101, 73}, {102, 122, 36}, },
+            {{36, 113, -32}, {114, 114, 73}, {115, 122, 37}, },
+            {{36, 100, -29}, {101, 101, 74}, {102, 122, 37}, },
+            {{36, 100, -29}, {101, 101, 75}, {102, 122, 37}, },
             {{36, 122, -8}, },
             {{36, 122, -8}, },
-            {{36, 95, -8}, {97, 116, 36}, {117, 117, 74}, {118, 122, 36}, },
-            {{36, 109, -46}, {110, 110, 75}, {111, 122, 36}, },
-            {{36, 95, -8}, {97, 112, 36}, {113, 113, 76}, {114, 122, 36}, },
+            {{36, 95, -8}, {97, 116, 37}, {117, 117, 76}, {118, 122, 37}, },
+            {{36, 109, -48}, {110, 110, 77}, {111, 122, 37}, },
+            {{36, 95, -8}, {97, 112, 37}, {113, 113, 78}, {114, 122, 37}, },
             {{36, 122, -8}, },
             {{36, 122, -8}, },
-            {{36, 100, -28}, {101, 101, 77}, {102, 122, 36}, },
-            {{36, 113, -31}, {114, 114, 78}, {115, 122, 36}, },
+            {{36, 100, -29}, {101, 101, 79}, {102, 122, 37}, },
+            {{36, 113, -32}, {114, 114, 80}, {115, 122, 37}, },
             {{36, 122, -8}, },
-            {{36, 113, -31}, {114, 114, 79}, {115, 122, 36}, },
+            {{36, 113, -32}, {114, 114, 81}, {115, 122, 37}, },
             {{36, 122, -8}, },
-            {{36, 116, -68}, {117, 117, 80}, {118, 122, 36}, },
+            {{36, 116, -70}, {117, 117, 82}, {118, 122, 37}, },
             {{36, 122, -8}, },
             {{36, 122, -8}, },
             {{36, 122, -8}, },
-            {{36, 100, -28}, {101, 101, 81}, {102, 122, 36}, },
+            {{36, 100, -29}, {101, 101, 83}, {102, 122, 37}, },
             {{36, 122, -8}, },
         }
     };*/
@@ -709,7 +733,7 @@ public class Lexer
     private static int[][] accept;
 /*  {
         // INITIAL
-        {-1, 0, 0, 0, 12, -1, 32, 6, 13, 14, 10, 2, 7, 4, 11, 29, 3, 9, 8, 17, 18, 32, 32, 32, 32, 32, 32, 32, 32, 32, 15, 5, 16, -1, 1, 1, 32, 32, 32, 32, 32, 32, 32, 32, 21, 32, 32, 1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 19, 32, 32, 32, 31, 27, 32, 32, 32, 30, 22, 32, 32, 24, 32, 25, 32, 28, 20, 26, 32, 23, },
+        {-1, 0, 0, 0, 12, -1, 34, 13, 6, 15, 16, 10, 2, 7, 4, 11, 31, 3, 9, 8, 19, 20, 34, 34, 34, 34, 34, 34, 34, 34, 34, 17, 5, 18, -1, 1, 1, 34, 14, 34, 34, 34, 34, 34, 34, 34, 23, 34, 34, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 21, 34, 34, 34, 33, 29, 34, 34, 34, 32, 24, 34, 34, 26, 34, 27, 34, 30, 22, 28, 34, 25, },
 
     };*/
 
diff --git a/src/lParser/lexer/lexer.dat b/src/lParser/lexer/lexer.dat
index 3f7ff84477e368b889a806eb3edea9e588dbd39d..1994a0994207aaf73683e286082f19157e9b0ff9 100644
GIT binary patch
literal 3220
zcmZQzU|?imU<hGgV9;P-VBmsckQgrm0|N*%F)%PFKru4|1A`(IvoJ6)C_^zT0|SE!
z6tgifFsMQ?I|BoQ8WeLt?Eu-s$-uy%3B@2gwHO!}K$x3>fk7LJc^DWNbf6gI4qXNY
z1`y_BU|`UPVtxh&1_K5L21^D81_1^J25Tr5WME*hfnp&B1_oOw7G_{zaAaU$h+<%1
z0J$@ofq?;pMHm<uVxd@+fq@|&ia}};85kHqSd4*zAqk4b85kIn85kH+pys49Fff3y
z1Oo#@8Wc-1FfgPuFfe38)#NZRFo3WW0|P@Y0|P@LRJ@3RfdPc285kIfp;(52fuRJ7
zWf>S4N}(9!o-zgo1`w8GU|=X`U|^_%np4fdzyQMX3=9l4Pz;K<S_TFN5C+8?C|*I~
zt?>W<|9{Z9$H!-2U|;~nEr<rinG!U8fb@Xk9u!}ocmj!o;s}I6>41-c;s1XI1_qEg
zNIysnghA;77GEGXEG|H7SeS#@pzsFy3&aN5jgCS7fW;{&eId((<Y0Dy(gd;`j15Y=
zAos-o|Ns97G=4$x1hNklM<A>YjVG8pu<6Nzrt^FT1_lrYrR@S}oPf*%#TU9gpfm)M
z1En7j2IT`#Is&B$kT}Rp5C-K3keM+1L3t0|EKoRs@(ajJm^y6k%z(NxlYxN&ghBZ#
z3(1|>^nlz1at|n7gD@!Xfzme29+-PF{{R2~1ZpnGY&`}B24u5g>X5@4<Ze(NCgg5V
z9s#)lls`Zi6tAE>0&@c_K0!1n-WfpY?*IS)KcQ(GlpaCY5TpPq1`5L}XuN}jVeZTO
z|NsAUXgq?#-H3sK0XZ&lsWZl*uJHf={|}&f8{~EqXx@go9b1@#{08zbEbp5_^F2%t
zEH9ylxfwLfLHa=YVdaH6w5)*Xhxq~BZ5C*5gQ+Y2|Ns9LXgLHj8&uAM%!ZkV%@645
z*a{k^Fg-A{bN~PUe}RF40hHE37*uwH!W~^5db$CX>&WQ_IS$eN1u7#zVTx{M_W%F?
zUqH)aP+qq~%j+;VqKC6RG@Q}RLs#d3Lmj&NK;<8@`>=&4sEh~2X$1oV0|+}YFfddi
z<z1LtQ~v+|{}@^if%2;}v>rltD|$M2!I6H^)w$wOhn_~<(9$f-eduB2juuAP{0_=D
zAismc2!uVLX%XfpP@YH5&oH~t!`Tx@`bG~kFC1ZpuFe}x9lATv`Plph%1<D_f$|dw
z`{2l{==sDKEk9v18&qzA%m$U8AnXS%hj4`(x_e>ai0*HHG=Ia?p@(+>T6p6!A6;J{
zk@`yh|Np-Wn$AFB7lame==Krf!~B8n-(WQVVlyY?|9@~>2UHHhFb`A=)cyh0KcIF1
zsI3ZWkAT`vpf)wAZ48P#P#X%=W&^na)W!m}lR@oNP@5E_pAZJMbwTxl5Y$eP8$lSP
z57br$(YP?E9Sf6#>4EWyp+RkBWObl6CaArNECy<Wg4)F}F;M###0Ir@K{Tix3u;?~
J+PomXBmii}q_+S7

literal 3180
zcmZQzU|?imU<hJhU{GgZVBmsckQgrm0|N*%F)%PFKru4|1A`(IvoJ6)C_^zT0|SE!
z6tgifFsMN>I|BoQ1{8BJFfeFBF((59gBBEn?9^spU;trm1_lNlDCS{cV9<qPkUR7l
z7#Kj9kAZ=~fPsO*l7WGNpMinF8j1xN7#M7zSdf8%!4`^z7#J8F85kI%7#J8pZi{AM
zU;trZ1_p*$C>CL0V2FoekeWmW1_lroWnf@Pf?_cS28Lt?28I-<IjIZ`3?MAdz`&3O
z#S#n*4CxFE4B1dMISdR8AS}tiz>v$pz)%PkFJfR|0AVQx28LoNmS$jJD1l-b1_p*w
zC<eKwjDdjxgk>2R7|IzK7^<M=R5LIzfUq0`149iI%QG-A)Iu>R-av5)3S));|NsAk
z#y37b0|NsCC_X_nD4sy^4N?!nN(>APpg01>4M-dmFCYv`2Yd_+|NleN21q|FJ%DIf
ze1X`oxB#(XVGd%0!W-l-5F2DSJ`C~`%uG-kz@`?IK0#*1|NsC02Q)rG@d6S9#R&+j
zLgNKyFE%}S&~%;8z`y{)ptM~8jRTNbp!fmN$o7EJ3`h)=UO*U>w?OFzlm<ZJATvQ2
zls7<T!t4j-FOWR4S)gzM<r|QhFm>46nE`cYCIbTl2!rxh7Lq%$=>fS3WFIIUgD@x$
zg3>a~9+-PF{{R2~6lyNWY)~FWHXEi6-QA%4OUT`zJOOe8C_jL(9yC9|+<+Xnpm=8h
zrL+J4|Nn%hWl;J9VNlrsQVUW8GOr36?=ZLJ{r~^}1vCypVGc?^$nl6vogo7Q12%Pq
z|NsAg2+hYJcN?L(8(VmT@;b<EuzYR|&Eqh?!txDzc$+XVFo41vqz|MYRyLSI%LSNz
zm><yHW`^cAn7ZQs|NmcumN_7^&C%S0%@62l*a8}+=x)gU|Ns9b1_lODItO7;c?}A8
zbam)y#tK^A!qkD{6y{!Ze}T$=P?*Bh!qjE||Ns9bwCn}tb5OkiayPm<^l%2%8K7_`
zq|Oc+AL#1P-Di&$?%2W;RGx$4w1R<w0fZeG7#J#%@-56yDgXcfe*&#@KzS8Zj$+HJ
z=;_=ENBTuq=Zr%gdKz&-OCvD%p@*d_S{PyTJ1F0P{0@pk5O#y6MOe7v%FF2C?2Z=B
zFgKxxnFq9<hMA8`ohO<)ba$ZhvH1;@pFn<t<y9{nc@;gMc%$VfY-WSXBaqpkvJ-@T
zpyd$EU+C^b=i~CXFPgt$>d?d64=ucLnUAi|pGbWr|NsBr15Ib3@C!f-J9PU9@nQZz
zPY;1;{>5fa(EtD7b`7W;f?*!07^r;(s{cXt52#%VY9oQ#%b<2IDBeJAB~Y6UWIw1a
z1!@C>+NPj3DM&9N3~Jke>I4C(eIWONFd==Qb}LK`G3sGzVKk_13}b_6P@59eJ_WI1
g7}VwjwTWSTP}>*82DNoTG^h;=YFC5WxFEhb0PUipk^lez

diff --git a/src/lParser/node/AAddtoAdd.java b/src/lParser/node/AAddtoAdd.java
new file mode 100644
index 0000000..3bf5b37
--- /dev/null
+++ b/src/lParser/node/AAddtoAdd.java
@@ -0,0 +1,95 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package lParser.node;
+
+import lParser.analysis.*;
+
+@SuppressWarnings("nls")
+public final class AAddtoAdd extends PAdd
+{
+    private PAddto _addto_;
+
+    public AAddtoAdd()
+    {
+        // Constructor
+    }
+
+    public AAddtoAdd(
+        @SuppressWarnings("hiding") PAddto _addto_)
+    {
+        // Constructor
+        setAddto(_addto_);
+
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new AAddtoAdd(
+            cloneNode(this._addto_));
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAAddtoAddto(this);
+    }
+
+    public PAddto getAddto()
+    {
+        return this._addto_;
+    }
+
+    public void setAddto(PAddto node)
+    {
+        if(this._addto_ != null)
+        {
+            this._addto_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._addto_ = node;
+    }
+
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._addto_);
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        if(this._addto_ == child)
+        {
+            this._addto_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._addto_ == oldChild)
+        {
+            setAddto((PAddto) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
+}
diff --git a/src/lParser/node/AAddtoAddto.java b/src/lParser/node/AAddtoAddto.java
new file mode 100644
index 0000000..c43c7a2
--- /dev/null
+++ b/src/lParser/node/AAddtoAddto.java
@@ -0,0 +1,181 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package lParser.node;
+
+import lParser.analysis.*;
+
+@SuppressWarnings("nls")
+public final class AAddtoAddto extends PAddto
+{
+    private PAddto _addto_;
+    private TPlusegale _plusegale_;
+    private PNeg _neg_;
+
+    public AAddtoAddto()
+    {
+        // Constructor
+    }
+
+    public AAddtoAddto(
+        @SuppressWarnings("hiding") PAddto _addto_,
+        @SuppressWarnings("hiding") TPlusegale _plusegale_,
+        @SuppressWarnings("hiding") PNeg _neg_)
+    {
+        // Constructor
+        setAddto(_addto_);
+
+        setPlusegale(_plusegale_);
+
+        setNeg(_neg_);
+
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new AAddtoAddto(
+            cloneNode(this._addto_),
+            cloneNode(this._plusegale_),
+            cloneNode(this._neg_));
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAAddtoAddto(this);
+    }
+
+    public PAddto getAddto()
+    {
+        return this._addto_;
+    }
+
+    public void setAddto(PAddto node)
+    {
+        if(this._addto_ != null)
+        {
+            this._addto_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._addto_ = node;
+    }
+
+    public TPlusegale getPlusegale()
+    {
+        return this._plusegale_;
+    }
+
+    public void setPlusegale(TPlusegale node)
+    {
+        if(this._plusegale_ != null)
+        {
+            this._plusegale_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._plusegale_ = node;
+    }
+
+    public PNeg getNeg()
+    {
+        return this._neg_;
+    }
+
+    public void setNeg(PNeg node)
+    {
+        if(this._neg_ != null)
+        {
+            this._neg_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._neg_ = node;
+    }
+
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._addto_)
+            + toString(this._plusegale_)
+            + toString(this._neg_);
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        if(this._addto_ == child)
+        {
+            this._addto_ = null;
+            return;
+        }
+
+        if(this._plusegale_ == child)
+        {
+            this._plusegale_ = null;
+            return;
+        }
+
+        if(this._neg_ == child)
+        {
+            this._neg_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._addto_ == oldChild)
+        {
+            setAddto((PAddto) newChild);
+            return;
+        }
+
+        if(this._plusegale_ == oldChild)
+        {
+            setPlusegale((TPlusegale) newChild);
+            return;
+        }
+
+        if(this._neg_ == oldChild)
+        {
+            setNeg((PNeg) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
+}
diff --git a/src/lParser/node/AAddtoMult.java b/src/lParser/node/AAddtoMult.java
new file mode 100644
index 0000000..178df79
--- /dev/null
+++ b/src/lParser/node/AAddtoMult.java
@@ -0,0 +1,95 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package lParser.node;
+
+import lParser.analysis.*;
+
+@SuppressWarnings("nls")
+public final class AAddtoMult extends PMult
+{
+    private PAddto _addto_;
+
+    public AAddtoMult()
+    {
+        // Constructor
+    }
+
+    public AAddtoMult(
+        @SuppressWarnings("hiding") PAddto _addto_)
+    {
+        // Constructor
+        setAddto(_addto_);
+
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new AAddtoMult(
+            cloneNode(this._addto_));
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAAddtoMult(this);
+    }
+
+    public PAddto getAddto()
+    {
+        return this._addto_;
+    }
+
+    public void setAddto(PAddto node)
+    {
+        if(this._addto_ != null)
+        {
+            this._addto_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._addto_ = node;
+    }
+
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._addto_);
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        if(this._addto_ == child)
+        {
+            this._addto_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._addto_ == oldChild)
+        {
+            setAddto((PAddto) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
+}
diff --git a/src/lParser/node/AMoinsAdd.java b/src/lParser/node/AMoinsAdd.java
index 27e6858..e39237f 100644
--- a/src/lParser/node/AMoinsAdd.java
+++ b/src/lParser/node/AMoinsAdd.java
@@ -9,7 +9,7 @@ public final class AMoinsAdd extends PAdd
 {
     private PAdd _add_;
     private TMoins _moins_;
-    private PMult _mult_;
+    private PMod _mod_;
 
     public AMoinsAdd()
     {
@@ -19,14 +19,14 @@ public final class AMoinsAdd extends PAdd
     public AMoinsAdd(
         @SuppressWarnings("hiding") PAdd _add_,
         @SuppressWarnings("hiding") TMoins _moins_,
-        @SuppressWarnings("hiding") PMult _mult_)
+        @SuppressWarnings("hiding") PMod _mod_)
     {
         // Constructor
         setAdd(_add_);
 
         setMoins(_moins_);
 
-        setMult(_mult_);
+        setMod(_mod_);
 
     }
 
@@ -36,7 +36,7 @@ public final class AMoinsAdd extends PAdd
         return new AMoinsAdd(
             cloneNode(this._add_),
             cloneNode(this._moins_),
-            cloneNode(this._mult_));
+            cloneNode(this._mod_));
     }
 
     @Override
@@ -95,16 +95,16 @@ public final class AMoinsAdd extends PAdd
         this._moins_ = node;
     }
 
-    public PMult getMult()
+    public PMod getMod()
     {
-        return this._mult_;
+        return this._mod_;
     }
 
-    public void setMult(PMult node)
+    public void setMod(PMod node)
     {
-        if(this._mult_ != null)
+        if(this._mod_ != null)
         {
-            this._mult_.parent(null);
+            this._mod_.parent(null);
         }
 
         if(node != null)
@@ -117,7 +117,7 @@ public final class AMoinsAdd extends PAdd
             node.parent(this);
         }
 
-        this._mult_ = node;
+        this._mod_ = node;
     }
 
     @Override
@@ -126,7 +126,7 @@ public final class AMoinsAdd extends PAdd
         return ""
             + toString(this._add_)
             + toString(this._moins_)
-            + toString(this._mult_);
+            + toString(this._mod_);
     }
 
     @Override
@@ -145,9 +145,9 @@ public final class AMoinsAdd extends PAdd
             return;
         }
 
-        if(this._mult_ == child)
+        if(this._mod_ == child)
         {
-            this._mult_ = null;
+            this._mod_ = null;
             return;
         }
 
@@ -170,9 +170,9 @@ public final class AMoinsAdd extends PAdd
             return;
         }
 
-        if(this._mult_ == oldChild)
+        if(this._mod_ == oldChild)
         {
-            setMult((PMult) newChild);
+            setMod((PMod) newChild);
             return;
         }
 
diff --git a/src/lParser/node/ANegMult.java b/src/lParser/node/ANegAddto.java
similarity index 90%
rename from src/lParser/node/ANegMult.java
rename to src/lParser/node/ANegAddto.java
index dbcc3c2..2c37482 100644
--- a/src/lParser/node/ANegMult.java
+++ b/src/lParser/node/ANegAddto.java
@@ -5,16 +5,16 @@ package lParser.node;
 import lParser.analysis.*;
 
 @SuppressWarnings("nls")
-public final class ANegMult extends PMult
+public final class ANegAddto extends PAddto
 {
     private PNeg _neg_;
 
-    public ANegMult()
+    public ANegAddto()
     {
         // Constructor
     }
 
-    public ANegMult(
+    public ANegAddto(
         @SuppressWarnings("hiding") PNeg _neg_)
     {
         // Constructor
@@ -25,14 +25,14 @@ public final class ANegMult extends PMult
     @Override
     public Object clone()
     {
-        return new ANegMult(
+        return new ANegAddto(
             cloneNode(this._neg_));
     }
 
     @Override
     public void apply(Switch sw)
     {
-        ((Analysis) sw).caseANegMult(this);
+        ((Analysis) sw).caseANegAddto(this);
     }
 
     public PNeg getNeg()
diff --git a/src/lParser/node/APlusAdd.java b/src/lParser/node/APlusAdd.java
index bd1386b..8c87c2f 100644
--- a/src/lParser/node/APlusAdd.java
+++ b/src/lParser/node/APlusAdd.java
@@ -9,7 +9,7 @@ public final class APlusAdd extends PAdd
 {
     private PAdd _add_;
     private TPlus _plus_;
-    private PMult _mult_;
+    private PMod _mod_;
 
     public APlusAdd()
     {
@@ -19,14 +19,14 @@ public final class APlusAdd extends PAdd
     public APlusAdd(
         @SuppressWarnings("hiding") PAdd _add_,
         @SuppressWarnings("hiding") TPlus _plus_,
-        @SuppressWarnings("hiding") PMult _mult_)
+        @SuppressWarnings("hiding") PMod _mod_)
     {
         // Constructor
         setAdd(_add_);
 
         setPlus(_plus_);
 
-        setMult(_mult_);
+        setMod(_mod_);
 
     }
 
@@ -36,7 +36,7 @@ public final class APlusAdd extends PAdd
         return new APlusAdd(
             cloneNode(this._add_),
             cloneNode(this._plus_),
-            cloneNode(this._mult_));
+            cloneNode(this._mod_));
     }
 
     @Override
@@ -95,16 +95,16 @@ public final class APlusAdd extends PAdd
         this._plus_ = node;
     }
 
-    public PMult getMult()
+    public PMod getMod()
     {
-        return this._mult_;
+        return this._mod_;
     }
 
-    public void setMult(PMult node)
+    public void setMod(PMod node)
     {
-        if(this._mult_ != null)
+        if(this._mod_ != null)
         {
-            this._mult_.parent(null);
+            this._mod_.parent(null);
         }
 
         if(node != null)
@@ -117,7 +117,7 @@ public final class APlusAdd extends PAdd
             node.parent(this);
         }
 
-        this._mult_ = node;
+        this._mod_ = node;
     }
 
     @Override
@@ -126,7 +126,7 @@ public final class APlusAdd extends PAdd
         return ""
             + toString(this._add_)
             + toString(this._plus_)
-            + toString(this._mult_);
+            + toString(this._mod_);
     }
 
     @Override
@@ -145,9 +145,9 @@ public final class APlusAdd extends PAdd
             return;
         }
 
-        if(this._mult_ == child)
+        if(this._mod_ == child)
         {
-            this._mult_ = null;
+            this._mod_ = null;
             return;
         }
 
@@ -170,9 +170,9 @@ public final class APlusAdd extends PAdd
             return;
         }
 
-        if(this._mult_ == oldChild)
+        if(this._mod_ == oldChild)
         {
-            setMult((PMult) newChild);
+            setMod((PMod) newChild);
             return;
         }
 
diff --git a/src/lParser/node/PAddto.java b/src/lParser/node/PAddto.java
new file mode 100644
index 0000000..7170eed
--- /dev/null
+++ b/src/lParser/node/PAddto.java
@@ -0,0 +1,8 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package lParser.node;
+
+public abstract class PAddto extends Node
+{
+    // Empty body
+}
diff --git a/src/lParser/node/TPlusegale.java b/src/lParser/node/TPlusegale.java
new file mode 100644
index 0000000..7fc0e86
--- /dev/null
+++ b/src/lParser/node/TPlusegale.java
@@ -0,0 +1,39 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package lParser.node;
+
+import lParser.analysis.*;
+
+@SuppressWarnings("nls")
+public final class TPlusegale extends Token
+{
+    public TPlusegale()
+    {
+        super.setText("+=");
+    }
+
+    public TPlusegale(int line, int pos)
+    {
+        super.setText("+=");
+        setLine(line);
+        setPos(pos);
+    }
+
+    @Override
+    public Object clone()
+    {
+      return new TPlusegale(getLine(), getPos());
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTPlusegale(this);
+    }
+
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TPlusegale text.");
+    }
+}
diff --git a/src/lParser/parser/Parser.java b/src/lParser/parser/Parser.java
index 88d8ac5..5349d46 100644
--- a/src/lParser/parser/Parser.java
+++ b/src/lParser/parser/Parser.java
@@ -255,276 +255,300 @@ public class Parser
                 push(goTo(4), list);
             }
             break;
-            case 11: /* reduce AMultAdd */
+            case 11: /* reduce AModAdd */
             {
                 ArrayList<Object> list = new11();
                 push(goTo(4), list);
             }
             break;
-            case 12: /* reduce AFoisMult */
+            case 12: /* reduce AModMod */
             {
                 ArrayList<Object> list = new12();
                 push(goTo(5), list);
             }
             break;
-            case 13: /* reduce ADiviserMult */
+            case 13: /* reduce AMultMod */
             {
                 ArrayList<Object> list = new13();
                 push(goTo(5), list);
             }
             break;
-            case 14: /* reduce ANegMult */
+            case 14: /* reduce AFoisMult */
             {
                 ArrayList<Object> list = new14();
-                push(goTo(5), list);
+                push(goTo(6), list);
             }
             break;
-            case 15: /* reduce ANonNeg */
+            case 15: /* reduce ADiviserMult */
             {
                 ArrayList<Object> list = new15();
                 push(goTo(6), list);
             }
             break;
-            case 16: /* reduce AE6Neg */
+            case 16: /* reduce AAddtoMult */
             {
                 ArrayList<Object> list = new16();
                 push(goTo(6), list);
             }
             break;
-            case 17: /* reduce AParentheseE6 */
+            case 17: /* reduce AAddtoAddto */
             {
                 ArrayList<Object> list = new17();
                 push(goTo(7), list);
             }
             break;
-            case 18: /* reduce ANombreE6 */
+            case 18: /* reduce ANegAddto */
             {
                 ArrayList<Object> list = new18();
                 push(goTo(7), list);
             }
             break;
-            case 19: /* reduce AVraiE6 */
+            case 19: /* reduce ANonNeg */
             {
                 ArrayList<Object> list = new19();
-                push(goTo(7), list);
+                push(goTo(8), list);
             }
             break;
-            case 20: /* reduce AFauxE6 */
+            case 20: /* reduce AE6Neg */
             {
                 ArrayList<Object> list = new20();
-                push(goTo(7), list);
+                push(goTo(8), list);
             }
             break;
-            case 21: /* reduce ALireE6 */
+            case 21: /* reduce AParentheseE6 */
             {
                 ArrayList<Object> list = new21();
-                push(goTo(7), list);
+                push(goTo(9), list);
             }
             break;
-            case 22: /* reduce AVarE6 */
+            case 22: /* reduce ANombreE6 */
             {
                 ArrayList<Object> list = new22();
-                push(goTo(7), list);
+                push(goTo(9), list);
             }
             break;
-            case 23: /* reduce AAppelfncE6 */
+            case 23: /* reduce AVraiE6 */
             {
                 ArrayList<Object> list = new23();
-                push(goTo(7), list);
+                push(goTo(9), list);
             }
             break;
-            case 24: /* reduce AAffectationIns */
+            case 24: /* reduce AFauxE6 */
             {
                 ArrayList<Object> list = new24();
-                push(goTo(8), list);
+                push(goTo(9), list);
             }
             break;
-            case 25: /* reduce ATqIns */
+            case 25: /* reduce ALireE6 */
             {
                 ArrayList<Object> list = new25();
-                push(goTo(8), list);
+                push(goTo(9), list);
             }
             break;
-            case 26: /* reduce ASiIns */
+            case 26: /* reduce AVarE6 */
             {
                 ArrayList<Object> list = new26();
-                push(goTo(8), list);
+                push(goTo(9), list);
             }
             break;
-            case 27: /* reduce ASisinonIns */
+            case 27: /* reduce AAppelfncE6 */
             {
                 ArrayList<Object> list = new27();
-                push(goTo(8), list);
+                push(goTo(9), list);
             }
             break;
-            case 28: /* reduce AReturnIns */
+            case 28: /* reduce AAffectationIns */
             {
                 ArrayList<Object> list = new28();
-                push(goTo(8), list);
+                push(goTo(10), list);
             }
             break;
-            case 29: /* reduce AWriteIns */
+            case 29: /* reduce ATqIns */
             {
                 ArrayList<Object> list = new29();
-                push(goTo(8), list);
+                push(goTo(10), list);
             }
             break;
-            case 30: /* reduce AAppelfncIns */
+            case 30: /* reduce ASiIns */
             {
                 ArrayList<Object> list = new30();
-                push(goTo(8), list);
+                push(goTo(10), list);
             }
             break;
-            case 31: /* reduce AInstrBloc */
+            case 31: /* reduce ASisinonIns */
             {
                 ArrayList<Object> list = new31();
-                push(goTo(9), list);
+                push(goTo(10), list);
             }
             break;
-            case 32: /* reduce AListeinstrLi */
+            case 32: /* reduce AReturnIns */
             {
                 ArrayList<Object> list = new32();
                 push(goTo(10), list);
             }
             break;
-            case 33: /* reduce AEpsilon$1Li */
+            case 33: /* reduce AWriteIns */
             {
                 ArrayList<Object> list = new33();
                 push(goTo(10), list);
             }
             break;
-            case 34: /* reduce AExprLe */
+            case 34: /* reduce AAppelfncIns */
             {
                 ArrayList<Object> list = new34();
-                push(goTo(11), list);
+                push(goTo(10), list);
             }
             break;
-            case 35: /* reduce AEpsilon$1Le */
+            case 35: /* reduce AInstrBloc */
             {
                 ArrayList<Object> list = new35();
                 push(goTo(11), list);
             }
             break;
-            case 36: /* reduce ALstexprLse */
+            case 36: /* reduce AListeinstrLi */
             {
                 ArrayList<Object> list = new36();
                 push(goTo(12), list);
             }
             break;
-            case 37: /* reduce AEpsilon$1Lse */
+            case 37: /* reduce AEpsilon$1Li */
             {
                 ArrayList<Object> list = new37();
                 push(goTo(12), list);
             }
             break;
-            case 38: /* reduce AIdVar */
+            case 38: /* reduce AExprLe */
             {
                 ArrayList<Object> list = new38();
                 push(goTo(13), list);
             }
             break;
-            case 39: /* reduce AIdCrochetVar */
+            case 39: /* reduce AEpsilon$1Le */
             {
                 ArrayList<Object> list = new39();
                 push(goTo(13), list);
             }
             break;
-            case 40: /* reduce ADeclavariableDecvar */
+            case 40: /* reduce ALstexprLse */
             {
                 ArrayList<Object> list = new40();
                 push(goTo(14), list);
             }
             break;
-            case 41: /* reduce ADecvar */
+            case 41: /* reduce AEpsilon$1Lse */
             {
                 ArrayList<Object> list = new41();
                 push(goTo(14), list);
             }
             break;
-            case 42: /* reduce ATypeType */
+            case 42: /* reduce AIdVar */
             {
                 ArrayList<Object> list = new42();
                 push(goTo(15), list);
             }
             break;
-            case 43: /* reduce AType */
+            case 43: /* reduce AIdCrochetVar */
             {
                 ArrayList<Object> list = new43();
                 push(goTo(15), list);
             }
             break;
-            case 44: /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$Typeopt1Decfonc */
+            case 44: /* reduce ADeclavariableDecvar */
             {
                 ArrayList<Object> list = new44();
                 push(goTo(16), list);
             }
             break;
-            case 45: /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$11Decfonc */
+            case 45: /* reduce ADecvar */
             {
                 ArrayList<Object> list = new45();
                 push(goTo(16), list);
             }
             break;
-            case 46: /* reduce ADeclafonc$Lstdeclacvar1$12$Typeopt1Decfonc */
+            case 46: /* reduce ATypeType */
             {
                 ArrayList<Object> list = new46();
-                push(goTo(16), list);
+                push(goTo(17), list);
             }
             break;
-            case 47: /* reduce ADeclafonc$Lstdeclacvar1$12$11Decfonc */
+            case 47: /* reduce AType */
             {
                 ArrayList<Object> list = new47();
-                push(goTo(16), list);
+                push(goTo(17), list);
             }
             break;
-            case 48: /* reduce ADeclafonc$11$Lstdeclacvar2$Typeopt1Decfonc */
+            case 48: /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$Typeopt1Decfonc */
             {
                 ArrayList<Object> list = new48();
-                push(goTo(16), list);
+                push(goTo(18), list);
             }
             break;
-            case 49: /* reduce ADeclafonc$11$Lstdeclacvar2$11Decfonc */
+            case 49: /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$11Decfonc */
             {
                 ArrayList<Object> list = new49();
-                push(goTo(16), list);
+                push(goTo(18), list);
             }
             break;
-            case 50: /* reduce ADeclafonc$11$12$Typeopt1Decfonc */
+            case 50: /* reduce ADeclafonc$Lstdeclacvar1$12$Typeopt1Decfonc */
             {
                 ArrayList<Object> list = new50();
-                push(goTo(16), list);
+                push(goTo(18), list);
             }
             break;
-            case 51: /* reduce ADeclafonc$11$12$11Decfonc */
+            case 51: /* reduce ADeclafonc$Lstdeclacvar1$12$11Decfonc */
             {
                 ArrayList<Object> list = new51();
-                push(goTo(16), list);
+                push(goTo(18), list);
             }
             break;
-            case 52: /* reduce ASuitedeclvarSuitedec */
+            case 52: /* reduce ADeclafonc$11$Lstdeclacvar2$Typeopt1Decfonc */
             {
                 ArrayList<Object> list = new52();
-                push(goTo(17), list);
+                push(goTo(18), list);
             }
             break;
-            case 53: /* reduce A1Suitedec */
+            case 53: /* reduce ADeclafonc$11$Lstdeclacvar2$11Decfonc */
             {
                 ArrayList<Object> list = new53();
-                push(goTo(17), list);
+                push(goTo(18), list);
             }
             break;
-            case 54: /* reduce ALstdecfncLdf */
+            case 54: /* reduce ADeclafonc$11$12$Typeopt1Decfonc */
             {
                 ArrayList<Object> list = new54();
                 push(goTo(18), list);
             }
             break;
-            case 55: /* reduce A1Ldf */
+            case 55: /* reduce ADeclafonc$11$12$11Decfonc */
             {
                 ArrayList<Object> list = new55();
                 push(goTo(18), list);
             }
             break;
+            case 56: /* reduce ASuitedeclvarSuitedec */
+            {
+                ArrayList<Object> list = new56();
+                push(goTo(19), list);
+            }
+            break;
+            case 57: /* reduce A1Suitedec */
+            {
+                ArrayList<Object> list = new57();
+                push(goTo(19), list);
+            }
+            break;
+            case 58: /* reduce ALstdecfncLdf */
+            {
+                ArrayList<Object> list = new58();
+                push(goTo(20), list);
+            }
+            break;
+            case 59: /* reduce A1Ldf */
+            {
+                ArrayList<Object> list = new59();
+                push(goTo(20), list);
+            }
+            break;
         }
     }
 
@@ -771,12 +795,12 @@ public class Parser
             // Block
         PAdd paddNode2;
         TPlus tplusNode3;
-        PMult pmultNode4;
+        PMod pmodNode4;
         paddNode2 = (PAdd)nodeArrayList1.get(0);
         tplusNode3 = (TPlus)nodeArrayList2.get(0);
-        pmultNode4 = (PMult)nodeArrayList3.get(0);
+        pmodNode4 = (PMod)nodeArrayList3.get(0);
 
-        paddNode1 = new APlusAdd(paddNode2, tplusNode3, pmultNode4);
+        paddNode1 = new APlusAdd(paddNode2, tplusNode3, pmodNode4);
         }
 	nodeList.add(paddNode1);
         return nodeList;
@@ -797,12 +821,12 @@ public class Parser
             // Block
         PAdd paddNode2;
         TMoins tmoinsNode3;
-        PMult pmultNode4;
+        PMod pmodNode4;
         paddNode2 = (PAdd)nodeArrayList1.get(0);
         tmoinsNode3 = (TMoins)nodeArrayList2.get(0);
-        pmultNode4 = (PMult)nodeArrayList3.get(0);
+        pmodNode4 = (PMod)nodeArrayList3.get(0);
 
-        paddNode1 = new AMoinsAdd(paddNode2, tmoinsNode3, pmultNode4);
+        paddNode1 = new AMoinsAdd(paddNode2, tmoinsNode3, pmodNode4);
         }
 	nodeList.add(paddNode1);
         return nodeList;
@@ -811,27 +835,73 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new11() /* reduce AMultAdd */
+    ArrayList<Object> new11() /* reduce AModAdd */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
         @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
         PAdd paddNode1;
+        {
+            // Block
+        PMod pmodNode2;
+        pmodNode2 = (PMod)nodeArrayList1.get(0);
+
+        paddNode1 = new AModAdd(pmodNode2);
+        }
+	nodeList.add(paddNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new12() /* reduce AModMod */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PMod pmodNode1;
+        {
+            // Block
+        PMod pmodNode2;
+        TModulo tmoduloNode3;
+        PMult pmultNode4;
+        pmodNode2 = (PMod)nodeArrayList1.get(0);
+        tmoduloNode3 = (TModulo)nodeArrayList2.get(0);
+        pmultNode4 = (PMult)nodeArrayList3.get(0);
+
+        pmodNode1 = new AModMod(pmodNode2, tmoduloNode3, pmultNode4);
+        }
+	nodeList.add(pmodNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new13() /* reduce AMultMod */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PMod pmodNode1;
         {
             // Block
         PMult pmultNode2;
         pmultNode2 = (PMult)nodeArrayList1.get(0);
 
-        paddNode1 = new AMultAdd(pmultNode2);
+        pmodNode1 = new AMultMod(pmultNode2);
         }
-	nodeList.add(paddNode1);
+	nodeList.add(pmodNode1);
         return nodeList;
     }
 
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new12() /* reduce AFoisMult */
+    ArrayList<Object> new14() /* reduce AFoisMult */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -857,7 +927,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new13() /* reduce ADiviserMult */
+    ArrayList<Object> new15() /* reduce ADiviserMult */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -883,27 +953,73 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new14() /* reduce ANegMult */
+    ArrayList<Object> new16() /* reduce AAddtoMult */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
         @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
         PMult pmultNode1;
+        {
+            // Block
+        PAddto paddtoNode2;
+        paddtoNode2 = (PAddto)nodeArrayList1.get(0);
+
+        pmultNode1 = new AAddtoMult(paddtoNode2);
+        }
+	nodeList.add(pmultNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new17() /* reduce AAddtoAddto */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAddto paddtoNode1;
+        {
+            // Block
+        PAddto paddtoNode2;
+        TPlusegale tplusegaleNode3;
+        PNeg pnegNode4;
+        paddtoNode2 = (PAddto)nodeArrayList1.get(0);
+        tplusegaleNode3 = (TPlusegale)nodeArrayList2.get(0);
+        pnegNode4 = (PNeg)nodeArrayList3.get(0);
+
+        paddtoNode1 = new AAddtoAddto(paddtoNode2, tplusegaleNode3, pnegNode4);
+        }
+	nodeList.add(paddtoNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new18() /* reduce ANegAddto */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAddto paddtoNode1;
         {
             // Block
         PNeg pnegNode2;
         pnegNode2 = (PNeg)nodeArrayList1.get(0);
 
-        pmultNode1 = new ANegMult(pnegNode2);
+        paddtoNode1 = new ANegAddto(pnegNode2);
         }
-	nodeList.add(pmultNode1);
+	nodeList.add(paddtoNode1);
         return nodeList;
     }
 
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new15() /* reduce ANonNeg */
+    ArrayList<Object> new19() /* reduce ANonNeg */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -926,7 +1042,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new16() /* reduce AE6Neg */
+    ArrayList<Object> new20() /* reduce AE6Neg */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -946,7 +1062,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new17() /* reduce AParentheseE6 */
+    ArrayList<Object> new21() /* reduce AParentheseE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -972,7 +1088,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new18() /* reduce ANombreE6 */
+    ArrayList<Object> new22() /* reduce ANombreE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -992,7 +1108,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new19() /* reduce AVraiE6 */
+    ArrayList<Object> new23() /* reduce AVraiE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1012,7 +1128,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new20() /* reduce AFauxE6 */
+    ArrayList<Object> new24() /* reduce AFauxE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1032,7 +1148,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new21() /* reduce ALireE6 */
+    ArrayList<Object> new25() /* reduce ALireE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1058,7 +1174,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new22() /* reduce AVarE6 */
+    ArrayList<Object> new26() /* reduce AVarE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1078,7 +1194,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new23() /* reduce AAppelfncE6 */
+    ArrayList<Object> new27() /* reduce AAppelfncE6 */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1107,7 +1223,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new24() /* reduce AAffectationIns */
+    ArrayList<Object> new28() /* reduce AAffectationIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1136,7 +1252,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new25() /* reduce ATqIns */
+    ArrayList<Object> new29() /* reduce ATqIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1165,7 +1281,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new26() /* reduce ASiIns */
+    ArrayList<Object> new30() /* reduce ASiIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1194,7 +1310,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new27() /* reduce ASisinonIns */
+    ArrayList<Object> new31() /* reduce ASisinonIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1229,7 +1345,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new28() /* reduce AReturnIns */
+    ArrayList<Object> new32() /* reduce AReturnIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1255,7 +1371,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new29() /* reduce AWriteIns */
+    ArrayList<Object> new33() /* reduce AWriteIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1287,7 +1403,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new30() /* reduce AAppelfncIns */
+    ArrayList<Object> new34() /* reduce AAppelfncIns */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1319,7 +1435,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new31() /* reduce AInstrBloc */
+    ArrayList<Object> new35() /* reduce AInstrBloc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1345,7 +1461,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new32() /* reduce AListeinstrLi */
+    ArrayList<Object> new36() /* reduce AListeinstrLi */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1368,7 +1484,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new33() /* reduce AEpsilon$1Li */
+    ArrayList<Object> new37() /* reduce AEpsilon$1Li */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1391,7 +1507,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new34() /* reduce AExprLe */
+    ArrayList<Object> new38() /* reduce AExprLe */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1414,7 +1530,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new35() /* reduce AEpsilon$1Le */
+    ArrayList<Object> new39() /* reduce AEpsilon$1Le */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1437,7 +1553,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new36() /* reduce ALstexprLse */
+    ArrayList<Object> new40() /* reduce ALstexprLse */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1463,7 +1579,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new37() /* reduce AEpsilon$1Lse */
+    ArrayList<Object> new41() /* reduce AEpsilon$1Lse */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1486,7 +1602,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new38() /* reduce AIdVar */
+    ArrayList<Object> new42() /* reduce AIdVar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1506,7 +1622,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new39() /* reduce AIdCrochetVar */
+    ArrayList<Object> new43() /* reduce AIdCrochetVar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1535,7 +1651,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new40() /* reduce ADeclavariableDecvar */
+    ArrayList<Object> new44() /* reduce ADeclavariableDecvar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1558,7 +1674,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new41() /* reduce ADecvar */
+    ArrayList<Object> new45() /* reduce ADecvar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1590,7 +1706,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new42() /* reduce ATypeType */
+    ArrayList<Object> new46() /* reduce ATypeType */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1610,7 +1726,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new43() /* reduce AType */
+    ArrayList<Object> new47() /* reduce AType */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1630,7 +1746,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new44() /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$Typeopt1Decfonc */
+    ArrayList<Object> new48() /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$Typeopt1Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1692,7 +1808,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new45() /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$11Decfonc */
+    ArrayList<Object> new49() /* reduce ADeclafonc$Lstdeclacvar1$Lstdeclacvar2$11Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1757,7 +1873,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new46() /* reduce ADeclafonc$Lstdeclacvar1$12$Typeopt1Decfonc */
+    ArrayList<Object> new50() /* reduce ADeclafonc$Lstdeclacvar1$12$Typeopt1Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1819,7 +1935,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new47() /* reduce ADeclafonc$Lstdeclacvar1$12$11Decfonc */
+    ArrayList<Object> new51() /* reduce ADeclafonc$Lstdeclacvar1$12$11Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1884,7 +2000,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new48() /* reduce ADeclafonc$11$Lstdeclacvar2$Typeopt1Decfonc */
+    ArrayList<Object> new52() /* reduce ADeclafonc$11$Lstdeclacvar2$Typeopt1Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1946,7 +2062,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new49() /* reduce ADeclafonc$11$Lstdeclacvar2$11Decfonc */
+    ArrayList<Object> new53() /* reduce ADeclafonc$11$Lstdeclacvar2$11Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2011,7 +2127,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new50() /* reduce ADeclafonc$11$12$Typeopt1Decfonc */
+    ArrayList<Object> new54() /* reduce ADeclafonc$11$12$Typeopt1Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2073,7 +2189,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new51() /* reduce ADeclafonc$11$12$11Decfonc */
+    ArrayList<Object> new55() /* reduce ADeclafonc$11$12$11Decfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2138,7 +2254,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new52() /* reduce ASuitedeclvarSuitedec */
+    ArrayList<Object> new56() /* reduce ASuitedeclvarSuitedec */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2164,7 +2280,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new53() /* reduce A1Suitedec */
+    ArrayList<Object> new57() /* reduce A1Suitedec */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2187,7 +2303,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new54() /* reduce ALstdecfncLdf */
+    ArrayList<Object> new58() /* reduce ALstdecfncLdf */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2210,7 +2326,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new55() /* reduce A1Ldf */
+    ArrayList<Object> new59() /* reduce A1Ldf */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -2234,154 +2350,162 @@ public class Parser
 
     private static int[][][] actionTable;
 /*      {
-			{{-1, REDUCE, 55}, {17, SHIFT, 1}, {18, SHIFT, 2}, {30, SHIFT, 3}, },
-			{{-1, REDUCE, 42}, },
-			{{-1, REDUCE, 43}, },
-			{{-1, ERROR, 3}, {11, SHIFT, 9}, },
-			{{-1, ERROR, 4}, {31, ACCEPT, -1}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
-			{{-1, ERROR, 6}, {30, SHIFT, 12}, },
-			{{-1, REDUCE, 55}, {17, SHIFT, 1}, {18, SHIFT, 2}, {30, SHIFT, 3}, },
+			{{-1, REDUCE, 59}, {19, SHIFT, 1}, {20, SHIFT, 2}, {32, SHIFT, 3}, },
+			{{-1, REDUCE, 46}, },
+			{{-1, REDUCE, 47}, },
+			{{-1, ERROR, 3}, {13, SHIFT, 9}, },
+			{{-1, ERROR, 4}, {33, ACCEPT, -1}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 6}, {32, SHIFT, 12}, },
+			{{-1, REDUCE, 59}, {19, SHIFT, 1}, {20, SHIFT, 2}, {32, SHIFT, 3}, },
 			{{-1, REDUCE, 1}, },
-			{{-1, ERROR, 9}, {12, SHIFT, 15}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
-			{{-1, ERROR, 10}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
-			{{-1, REDUCE, 55}, {17, SHIFT, 1}, {18, SHIFT, 2}, {30, SHIFT, 3}, },
-			{{-1, REDUCE, 40}, {11, SHIFT, 20}, {15, SHIFT, 21}, },
-			{{-1, ERROR, 13}, {30, SHIFT, 22}, },
-			{{-1, REDUCE, 54}, },
-			{{-1, ERROR, 15}, {13, SHIFT, 23}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
-			{{-1, ERROR, 17}, {30, SHIFT, 27}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 9}, {14, SHIFT, 15}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, ERROR, 10}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, REDUCE, 59}, {19, SHIFT, 1}, {20, SHIFT, 2}, {32, SHIFT, 3}, },
+			{{-1, REDUCE, 44}, {13, SHIFT, 20}, {17, SHIFT, 21}, },
+			{{-1, ERROR, 13}, {32, SHIFT, 22}, },
+			{{-1, REDUCE, 58}, },
+			{{-1, ERROR, 15}, {15, SHIFT, 23}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 17}, {32, SHIFT, 27}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
 			{{-1, REDUCE, 0}, },
-			{{-1, ERROR, 20}, {12, SHIFT, 29}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
-			{{-1, ERROR, 21}, {27, SHIFT, 31}, },
-			{{-1, ERROR, 22}, {11, SHIFT, 20}, },
-			{{-1, REDUCE, 33}, {19, SHIFT, 32}, {21, SHIFT, 33}, {24, SHIFT, 34}, {26, SHIFT, 35}, {30, SHIFT, 36}, },
+			{{-1, ERROR, 20}, {14, SHIFT, 29}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, ERROR, 21}, {29, SHIFT, 31}, },
+			{{-1, ERROR, 22}, {13, SHIFT, 20}, },
+			{{-1, REDUCE, 37}, {21, SHIFT, 32}, {23, SHIFT, 33}, {26, SHIFT, 34}, {28, SHIFT, 35}, {32, SHIFT, 36}, },
+			{{-1, REDUCE, 55}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 26}, {14, SHIFT, 41}, },
+			{{-1, REDUCE, 44}, {17, SHIFT, 21}, },
+			{{-1, REDUCE, 56}, },
+			{{-1, ERROR, 29}, {15, SHIFT, 23}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 31}, {18, SHIFT, 45}, },
+			{{-1, ERROR, 32}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 33}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 34}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 35}, {13, SHIFT, 65}, },
+			{{-1, REDUCE, 42}, {13, SHIFT, 66}, {17, SHIFT, 67}, },
+			{{-1, REDUCE, 37}, {21, SHIFT, 32}, {23, SHIFT, 33}, {26, SHIFT, 34}, {28, SHIFT, 35}, {32, SHIFT, 36}, },
+			{{-1, ERROR, 38}, {16, SHIFT, 69}, },
+			{{-1, ERROR, 39}, {6, SHIFT, 70}, },
+			{{-1, ERROR, 40}, {15, SHIFT, 23}, },
+			{{-1, ERROR, 41}, {15, SHIFT, 23}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, REDUCE, 54}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 44}, {14, SHIFT, 75}, },
+			{{-1, REDUCE, 45}, },
+			{{-1, ERROR, 46}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 47}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 48}, {13, SHIFT, 78}, },
+			{{-1, REDUCE, 22}, },
+			{{-1, REDUCE, 23}, },
+			{{-1, REDUCE, 24}, },
+			{{-1, REDUCE, 42}, {13, SHIFT, 79}, {17, SHIFT, 67}, },
+			{{-1, ERROR, 53}, {3, SHIFT, 80}, {22, SHIFT, 81}, },
+			{{-1, REDUCE, 3}, {4, SHIFT, 82}, },
+			{{-1, REDUCE, 5}, {6, SHIFT, 83}, {7, SHIFT, 84}, },
+			{{-1, REDUCE, 8}, {0, SHIFT, 85}, {2, SHIFT, 86}, },
+			{{-1, REDUCE, 11}, {11, SHIFT, 87}, },
+			{{-1, REDUCE, 13}, {8, SHIFT, 88}, {9, SHIFT, 89}, },
+			{{-1, REDUCE, 16}, {12, SHIFT, 90}, },
+			{{-1, REDUCE, 18}, },
+			{{-1, REDUCE, 20}, },
+			{{-1, REDUCE, 26}, },
+			{{-1, ERROR, 63}, {3, SHIFT, 80}, {24, SHIFT, 91}, },
+			{{-1, ERROR, 64}, {1, SHIFT, 92}, {3, SHIFT, 80}, },
+			{{-1, ERROR, 65}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, REDUCE, 39}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 67}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, REDUCE, 36}, },
+			{{-1, REDUCE, 35}, },
+			{{-1, ERROR, 70}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, REDUCE, 53}, },
 			{{-1, REDUCE, 51}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
-			{{-1, ERROR, 26}, {12, SHIFT, 41}, },
-			{{-1, REDUCE, 40}, {15, SHIFT, 21}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, ERROR, 74}, {15, SHIFT, 23}, },
+			{{-1, ERROR, 75}, {15, SHIFT, 23}, {19, SHIFT, 1}, {20, SHIFT, 2}, },
+			{{-1, REDUCE, 19}, },
+			{{-1, ERROR, 77}, {3, SHIFT, 80}, {14, SHIFT, 102}, },
+			{{-1, ERROR, 78}, {14, SHIFT, 103}, },
+			{{-1, REDUCE, 39}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 80}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 81}, {15, SHIFT, 23}, },
+			{{-1, ERROR, 82}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 83}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 84}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 85}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 86}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 87}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 88}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 89}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 90}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, ERROR, 91}, {15, SHIFT, 23}, },
+			{{-1, REDUCE, 32}, },
+			{{-1, ERROR, 93}, {3, SHIFT, 80}, {14, SHIFT, 117}, },
+			{{-1, REDUCE, 41}, {3, SHIFT, 80}, {5, SHIFT, 118}, },
+			{{-1, ERROR, 95}, {14, SHIFT, 120}, },
+			{{-1, ERROR, 96}, {3, SHIFT, 80}, {18, SHIFT, 121}, },
+			{{-1, ERROR, 97}, {1, SHIFT, 122}, {3, SHIFT, 80}, },
+			{{-1, ERROR, 98}, {15, SHIFT, 23}, },
 			{{-1, REDUCE, 52}, },
-			{{-1, ERROR, 29}, {13, SHIFT, 23}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
-			{{-1, ERROR, 31}, {16, SHIFT, 45}, },
-			{{-1, ERROR, 32}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 33}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 34}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 35}, {11, SHIFT, 63}, },
-			{{-1, REDUCE, 38}, {11, SHIFT, 64}, {15, SHIFT, 65}, },
-			{{-1, REDUCE, 33}, {19, SHIFT, 32}, {21, SHIFT, 33}, {24, SHIFT, 34}, {26, SHIFT, 35}, {30, SHIFT, 36}, },
-			{{-1, ERROR, 38}, {14, SHIFT, 67}, },
-			{{-1, ERROR, 39}, {6, SHIFT, 68}, },
-			{{-1, ERROR, 40}, {13, SHIFT, 23}, },
-			{{-1, ERROR, 41}, {13, SHIFT, 23}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
 			{{-1, REDUCE, 50}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
-			{{-1, ERROR, 44}, {12, SHIFT, 73}, },
-			{{-1, REDUCE, 41}, },
-			{{-1, ERROR, 46}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 47}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 48}, {11, SHIFT, 76}, },
-			{{-1, REDUCE, 18}, },
-			{{-1, REDUCE, 19}, },
-			{{-1, REDUCE, 20}, },
-			{{-1, REDUCE, 38}, {11, SHIFT, 77}, {15, SHIFT, 65}, },
-			{{-1, ERROR, 53}, {3, SHIFT, 78}, {20, SHIFT, 79}, },
-			{{-1, REDUCE, 3}, {4, SHIFT, 80}, },
-			{{-1, REDUCE, 5}, {6, SHIFT, 81}, {7, SHIFT, 82}, },
-			{{-1, REDUCE, 8}, {0, SHIFT, 83}, {2, SHIFT, 84}, },
-			{{-1, REDUCE, 11}, {8, SHIFT, 85}, {9, SHIFT, 86}, },
+			{{-1, REDUCE, 57}, {5, SHIFT, 10}, },
+			{{-1, REDUCE, 21}, },
+			{{-1, REDUCE, 25}, },
+			{{-1, ERROR, 104}, {14, SHIFT, 125}, },
+			{{-1, REDUCE, 2}, {4, SHIFT, 82}, },
+			{{-1, REDUCE, 30}, {25, SHIFT, 126}, },
+			{{-1, REDUCE, 4}, {6, SHIFT, 83}, {7, SHIFT, 84}, },
+			{{-1, REDUCE, 6}, {0, SHIFT, 85}, {2, SHIFT, 86}, },
+			{{-1, REDUCE, 7}, {0, SHIFT, 85}, {2, SHIFT, 86}, },
+			{{-1, REDUCE, 9}, {11, SHIFT, 87}, },
+			{{-1, REDUCE, 10}, {11, SHIFT, 87}, },
+			{{-1, REDUCE, 12}, {8, SHIFT, 88}, {9, SHIFT, 89}, },
 			{{-1, REDUCE, 14}, },
-			{{-1, REDUCE, 16}, },
-			{{-1, REDUCE, 22}, },
-			{{-1, ERROR, 61}, {3, SHIFT, 78}, {22, SHIFT, 87}, },
-			{{-1, ERROR, 62}, {1, SHIFT, 88}, {3, SHIFT, 78}, },
-			{{-1, ERROR, 63}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, REDUCE, 35}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 65}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, REDUCE, 32}, },
-			{{-1, REDUCE, 31}, },
-			{{-1, ERROR, 68}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, REDUCE, 49}, },
-			{{-1, REDUCE, 47}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
-			{{-1, ERROR, 72}, {13, SHIFT, 23}, },
-			{{-1, ERROR, 73}, {13, SHIFT, 23}, {17, SHIFT, 1}, {18, SHIFT, 2}, },
 			{{-1, REDUCE, 15}, },
-			{{-1, ERROR, 75}, {3, SHIFT, 78}, {12, SHIFT, 98}, },
-			{{-1, ERROR, 76}, {12, SHIFT, 99}, },
-			{{-1, REDUCE, 35}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 78}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 79}, {13, SHIFT, 23}, },
-			{{-1, ERROR, 80}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 81}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 82}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 83}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 84}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 85}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 86}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, ERROR, 87}, {13, SHIFT, 23}, },
-			{{-1, REDUCE, 28}, },
-			{{-1, ERROR, 89}, {3, SHIFT, 78}, {12, SHIFT, 111}, },
-			{{-1, REDUCE, 37}, {3, SHIFT, 78}, {5, SHIFT, 112}, },
-			{{-1, ERROR, 91}, {12, SHIFT, 114}, },
-			{{-1, ERROR, 92}, {3, SHIFT, 78}, {16, SHIFT, 115}, },
-			{{-1, ERROR, 93}, {1, SHIFT, 116}, {3, SHIFT, 78}, },
-			{{-1, ERROR, 94}, {13, SHIFT, 23}, },
-			{{-1, REDUCE, 48}, },
-			{{-1, REDUCE, 46}, },
-			{{-1, REDUCE, 53}, {5, SHIFT, 10}, },
 			{{-1, REDUCE, 17}, },
-			{{-1, REDUCE, 21}, },
-			{{-1, ERROR, 100}, {12, SHIFT, 119}, },
-			{{-1, REDUCE, 2}, {4, SHIFT, 80}, },
-			{{-1, REDUCE, 26}, {23, SHIFT, 120}, },
-			{{-1, REDUCE, 4}, {6, SHIFT, 81}, {7, SHIFT, 82}, },
-			{{-1, REDUCE, 6}, {0, SHIFT, 83}, {2, SHIFT, 84}, },
-			{{-1, REDUCE, 7}, {0, SHIFT, 83}, {2, SHIFT, 84}, },
-			{{-1, REDUCE, 9}, {8, SHIFT, 85}, {9, SHIFT, 86}, },
-			{{-1, REDUCE, 10}, {8, SHIFT, 85}, {9, SHIFT, 86}, },
-			{{-1, REDUCE, 12}, },
-			{{-1, REDUCE, 13}, },
-			{{-1, REDUCE, 25}, },
-			{{-1, ERROR, 111}, {1, SHIFT, 121}, },
-			{{-1, ERROR, 112}, {10, SHIFT, 46}, {11, SHIFT, 47}, {25, SHIFT, 48}, {27, SHIFT, 49}, {28, SHIFT, 50}, {29, SHIFT, 51}, {30, SHIFT, 52}, },
-			{{-1, REDUCE, 34}, },
-			{{-1, ERROR, 114}, {1, SHIFT, 123}, },
-			{{-1, REDUCE, 39}, },
-			{{-1, REDUCE, 24}, },
-			{{-1, REDUCE, 45}, },
-			{{-1, ERROR, 118}, {13, SHIFT, 23}, },
-			{{-1, REDUCE, 23}, },
-			{{-1, ERROR, 120}, {13, SHIFT, 23}, },
 			{{-1, REDUCE, 29}, },
-			{{-1, REDUCE, 37}, {3, SHIFT, 78}, {5, SHIFT, 112}, },
-			{{-1, REDUCE, 30}, },
-			{{-1, REDUCE, 44}, },
+			{{-1, ERROR, 117}, {1, SHIFT, 127}, },
+			{{-1, ERROR, 118}, {10, SHIFT, 46}, {13, SHIFT, 47}, {27, SHIFT, 48}, {29, SHIFT, 49}, {30, SHIFT, 50}, {31, SHIFT, 51}, {32, SHIFT, 52}, },
+			{{-1, REDUCE, 38}, },
+			{{-1, ERROR, 120}, {1, SHIFT, 129}, },
+			{{-1, REDUCE, 43}, },
+			{{-1, REDUCE, 28}, },
+			{{-1, REDUCE, 49}, },
+			{{-1, ERROR, 124}, {15, SHIFT, 23}, },
 			{{-1, REDUCE, 27}, },
-			{{-1, REDUCE, 36}, },
+			{{-1, ERROR, 126}, {15, SHIFT, 23}, },
+			{{-1, REDUCE, 33}, },
+			{{-1, REDUCE, 41}, {3, SHIFT, 80}, {5, SHIFT, 118}, },
+			{{-1, REDUCE, 34}, },
+			{{-1, REDUCE, 48}, },
+			{{-1, REDUCE, 31}, },
+			{{-1, REDUCE, 40}, },
         };*/
     private static int[][][] gotoTable;
 /*      {
 			{{-1, 4}, },
-			{{-1, 90}, {32, 53}, {33, 61}, {34, 62}, {47, 75}, {63, 89}, {65, 92}, {68, 93}, {112, 122}, },
-			{{-1, 54}, {78, 101}, },
-			{{-1, 55}, {80, 103}, },
-			{{-1, 56}, {81, 104}, {82, 105}, },
-			{{-1, 57}, {83, 106}, {84, 107}, },
-			{{-1, 58}, {46, 74}, {85, 108}, {86, 109}, },
+			{{-1, 94}, {32, 53}, {33, 63}, {34, 64}, {47, 77}, {65, 93}, {67, 96}, {70, 97}, {118, 128}, },
+			{{-1, 54}, {80, 105}, },
+			{{-1, 55}, {82, 107}, },
+			{{-1, 56}, {83, 108}, {84, 109}, },
+			{{-1, 57}, {85, 110}, {86, 111}, },
+			{{-1, 58}, {87, 112}, },
 			{{-1, 59}, },
+			{{-1, 60}, {46, 76}, {88, 113}, {89, 114}, {90, 115}, },
+			{{-1, 61}, },
 			{{-1, 37}, },
-			{{-1, 24}, {29, 42}, {40, 69}, {41, 70}, {72, 95}, {73, 96}, {79, 102}, {87, 110}, {94, 117}, {118, 124}, {120, 125}, },
-			{{-1, 38}, {37, 66}, },
-			{{-1, 91}, {77, 100}, },
-			{{-1, 113}, {122, 126}, },
-			{{-1, 60}, {23, 39}, {37, 39}, },
-			{{-1, 5}, {9, 16}, {10, 18}, {15, 25}, {20, 30}, {29, 43}, {41, 71}, {73, 97}, },
+			{{-1, 24}, {29, 42}, {40, 71}, {41, 72}, {74, 99}, {75, 100}, {81, 106}, {91, 116}, {98, 123}, {124, 130}, {126, 131}, },
+			{{-1, 38}, {37, 68}, },
+			{{-1, 95}, {79, 104}, },
+			{{-1, 119}, {128, 132}, },
+			{{-1, 62}, {23, 39}, {37, 39}, },
+			{{-1, 5}, {9, 16}, {10, 18}, {15, 25}, {20, 30}, {29, 43}, {41, 73}, {75, 101}, },
 			{{-1, 17}, {0, 6}, {7, 13}, {11, 13}, },
 			{{-1, 7}, },
-			{{-1, 11}, {16, 26}, {18, 28}, {25, 40}, {30, 44}, {43, 72}, {71, 94}, {97, 118}, },
+			{{-1, 11}, {16, 26}, {18, 28}, {25, 40}, {30, 44}, {43, 74}, {73, 98}, {101, 124}, },
 			{{-1, 8}, {7, 14}, {11, 19}, },
         };*/
     private static String[] errorMessages;
@@ -2409,12 +2533,14 @@ public class Parser
 			"expecting: '}'",
 			"expecting: '='",
 			"expecting: '{'",
-			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', '*', '/', ')', ']', 'alors', 'faire'",
-			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', '*', '/', '(', ')', '[', ']', 'alors', 'faire'",
+			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', '*', '/', '%', '+=', ')', ']', 'alors', 'faire'",
+			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', '*', '/', '%', '+=', '(', ')', '[', ']', 'alors', 'faire'",
 			"expecting: '|', 'alors'",
 			"expecting: ';', '|', '&', ',', ')', ']', 'alors', 'faire'",
 			"expecting: ';', '|', '&', ',', '=', '<', ')', ']', 'alors', 'faire'",
 			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', ')', ']', 'alors', 'faire'",
+			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', '%', ')', ']', 'alors', 'faire'",
+			"expecting: '+', ';', '-', '|', '&', ',', '=', '<', '*', '/', '%', ')', ']', 'alors', 'faire'",
 			"expecting: '|', 'faire'",
 			"expecting: ';', '|'",
 			"expecting: '!', '(', ')', 'lire', nombre, 'vrai', 'faux', id",
@@ -2427,7 +2553,7 @@ public class Parser
         };*/
     private static int[] errors;
 /*      {
-			0, 1, 1, 2, 3, 4, 1, 0, 3, 5, 6, 0, 7, 1, 3, 8, 9, 1, 10, 3, 5, 11, 2, 12, 0, 13, 14, 15, 16, 8, 9, 17, 18, 18, 18, 2, 19, 12, 20, 21, 22, 8, 0, 13, 14, 10, 18, 18, 2, 23, 23, 23, 24, 25, 26, 27, 28, 23, 23, 23, 23, 29, 30, 18, 31, 18, 20, 32, 18, 0, 0, 13, 22, 8, 23, 33, 14, 31, 18, 22, 18, 18, 18, 18, 18, 18, 18, 22, 12, 33, 34, 14, 35, 30, 22, 0, 0, 13, 23, 23, 14, 26, 36, 27, 28, 28, 23, 23, 23, 23, 12, 37, 18, 14, 37, 23, 12, 0, 22, 23, 22, 12, 34, 12, 0, 12, 14, 
+			0, 1, 1, 2, 3, 4, 1, 0, 3, 5, 6, 0, 7, 1, 3, 8, 9, 1, 10, 3, 5, 11, 2, 12, 0, 13, 14, 15, 16, 8, 9, 17, 18, 18, 18, 2, 19, 12, 20, 21, 22, 8, 0, 13, 14, 10, 18, 18, 2, 23, 23, 23, 24, 25, 26, 27, 28, 29, 30, 23, 23, 23, 23, 31, 32, 18, 33, 18, 20, 34, 18, 0, 0, 13, 22, 8, 23, 35, 14, 33, 18, 22, 18, 18, 18, 18, 18, 18, 18, 18, 18, 22, 12, 35, 36, 14, 37, 32, 22, 0, 0, 13, 23, 23, 14, 26, 38, 27, 28, 28, 29, 29, 30, 30, 30, 23, 12, 39, 18, 14, 39, 23, 12, 0, 22, 23, 22, 12, 36, 12, 0, 12, 14, 
         };*/
 
     static 
diff --git a/src/lParser/parser/TokenIndex.java b/src/lParser/parser/TokenIndex.java
index e11fb83..86cac14 100644
--- a/src/lParser/parser/TokenIndex.java
+++ b/src/lParser/parser/TokenIndex.java
@@ -76,128 +76,140 @@ class TokenIndex extends AnalysisAdapter
     }
 
     @Override
-    public void caseTGparenthese(@SuppressWarnings("unused") TGparenthese node)
+    public void caseTModulo(@SuppressWarnings("unused") TModulo node)
     {
         this.index = 11;
     }
 
     @Override
-    public void caseTDparenthese(@SuppressWarnings("unused") TDparenthese node)
+    public void caseTPlusegale(@SuppressWarnings("unused") TPlusegale node)
     {
         this.index = 12;
     }
 
     @Override
-    public void caseTAccoladeg(@SuppressWarnings("unused") TAccoladeg node)
+    public void caseTGparenthese(@SuppressWarnings("unused") TGparenthese node)
     {
         this.index = 13;
     }
 
     @Override
-    public void caseTAccoladed(@SuppressWarnings("unused") TAccoladed node)
+    public void caseTDparenthese(@SuppressWarnings("unused") TDparenthese node)
     {
         this.index = 14;
     }
 
     @Override
-    public void caseTCrochetg(@SuppressWarnings("unused") TCrochetg node)
+    public void caseTAccoladeg(@SuppressWarnings("unused") TAccoladeg node)
     {
         this.index = 15;
     }
 
     @Override
-    public void caseTCrochetd(@SuppressWarnings("unused") TCrochetd node)
+    public void caseTAccoladed(@SuppressWarnings("unused") TAccoladed node)
     {
         this.index = 16;
     }
 
     @Override
-    public void caseTBool(@SuppressWarnings("unused") TBool node)
+    public void caseTCrochetg(@SuppressWarnings("unused") TCrochetg node)
     {
         this.index = 17;
     }
 
     @Override
-    public void caseTEntier(@SuppressWarnings("unused") TEntier node)
+    public void caseTCrochetd(@SuppressWarnings("unused") TCrochetd node)
     {
         this.index = 18;
     }
 
     @Override
-    public void caseTSi(@SuppressWarnings("unused") TSi node)
+    public void caseTBool(@SuppressWarnings("unused") TBool node)
     {
         this.index = 19;
     }
 
     @Override
-    public void caseTAlors(@SuppressWarnings("unused") TAlors node)
+    public void caseTEntier(@SuppressWarnings("unused") TEntier node)
     {
         this.index = 20;
     }
 
     @Override
-    public void caseTTantque(@SuppressWarnings("unused") TTantque node)
+    public void caseTSi(@SuppressWarnings("unused") TSi node)
     {
         this.index = 21;
     }
 
     @Override
-    public void caseTFaire(@SuppressWarnings("unused") TFaire node)
+    public void caseTAlors(@SuppressWarnings("unused") TAlors node)
     {
         this.index = 22;
     }
 
     @Override
-    public void caseTSinon(@SuppressWarnings("unused") TSinon node)
+    public void caseTTantque(@SuppressWarnings("unused") TTantque node)
     {
         this.index = 23;
     }
 
     @Override
-    public void caseTRetourner(@SuppressWarnings("unused") TRetourner node)
+    public void caseTFaire(@SuppressWarnings("unused") TFaire node)
     {
         this.index = 24;
     }
 
     @Override
-    public void caseTLire(@SuppressWarnings("unused") TLire node)
+    public void caseTSinon(@SuppressWarnings("unused") TSinon node)
     {
         this.index = 25;
     }
 
     @Override
-    public void caseTEcrire(@SuppressWarnings("unused") TEcrire node)
+    public void caseTRetourner(@SuppressWarnings("unused") TRetourner node)
     {
         this.index = 26;
     }
 
     @Override
-    public void caseTNombre(@SuppressWarnings("unused") TNombre node)
+    public void caseTLire(@SuppressWarnings("unused") TLire node)
     {
         this.index = 27;
     }
 
     @Override
-    public void caseTVrai(@SuppressWarnings("unused") TVrai node)
+    public void caseTEcrire(@SuppressWarnings("unused") TEcrire node)
     {
         this.index = 28;
     }
 
     @Override
-    public void caseTFaux(@SuppressWarnings("unused") TFaux node)
+    public void caseTNombre(@SuppressWarnings("unused") TNombre node)
     {
         this.index = 29;
     }
 
     @Override
-    public void caseTId(@SuppressWarnings("unused") TId node)
+    public void caseTVrai(@SuppressWarnings("unused") TVrai node)
     {
         this.index = 30;
     }
 
     @Override
-    public void caseEOF(@SuppressWarnings("unused") EOF node)
+    public void caseTFaux(@SuppressWarnings("unused") TFaux node)
     {
         this.index = 31;
     }
+
+    @Override
+    public void caseTId(@SuppressWarnings("unused") TId node)
+    {
+        this.index = 32;
+    }
+
+    @Override
+    public void caseEOF(@SuppressWarnings("unused") EOF node)
+    {
+        this.index = 33;
+    }
 }
diff --git a/src/lParser/parser/parser.dat b/src/lParser/parser/parser.dat
index 9dbabdb8133515e879ff42809b35f9ed019ff33c..95f7cf6812ca2d7d1ef5b6136166c1adbe5aa50a 100644
GIT binary patch
literal 9914
zcmZQzU}$AvU|{+G|Nnmm1_nk31_o;e1_ogU2mtX#AWQ}(1_lNND4Q9i7D<mD8egA*
zfq@As4^j)lyimQIXmTtJ3=E1$VlaImyDb?Q7+9hDxRBI<%wt1x4-Xam0J0Aj4j}VE
z?&O2o&5tKcn34PmawD#=gP9GohuAQNnGMpT!@$4*3qw$x2twT^iWV*)HL!RRLyH$H
zq;LZH5#%or1{o!e$B)Fu3CK+_yQPub1#&-nTrxt#4I~G$9~M3!cY*u|3wv22+y&AD
z3I~u{kXiCbc7x<V;Q$I3kQ~TtHYB@M85kHqdO>m^w}Zj~#0I5FDG-B!fkBCZfk6h!
zRz^y9Drn(rj$|*$U+8{@g(JvKAhTh9)I`$<ifd3<f~*9&4LPhV(Bcr}XKKbFDC~ql
z7Bes~=rS-ca6rQf<YrL#fYLZf8kFZ@VG7Fcp!f!f8!#|1fZPOP8!|93$blFP3=BpL
z3=AN%L0n^`Ff>840~GGGwgVKOw6Fs?enII37Cw#)3=GJ5SqmvIJ25aYz~b7Ofq{XV
zX%pE!Y77hv0-(TWU|?`XN^hWeRR`G%m2*Rr(_mm=Ku%xC`4p6Hk>zleeaPw849R>#
zc?6UXV0pwFEw7=cO;CEIMVun1e^5H7g&oN81j;|KbmNESXHYqY9G0N63Yjl~C!P7D
zr88K11jWB8NFOx*0~i<>K=y#RfoO3BQVXiDL2^MLJ<zfN6px^K8dN8P<boL(7}!A!
z1_p)@G<6(MaS#;>G9ScXU|<LXv60N<W?*0dVUTn<ni-(*fteG*z`y{it3m1_(aZp)
zcTn2^Bo~DimY^~YIqX370x};|J|l;bJ;)6pgBTbXKw$(5YY;aYBo1{qD1011_JAZ9
z7#Lzea!@u%4{}-pl?k*+OE5b?aRSQMw6p`{Ur?Dv3p<eG0==FEm8~#;g4_TqvuN!G
zP#!^c6Q~Y@<y%l#<E!hv@RXsTa*fn76jaV4r%hk9bOtLk(~$B5D4am$2}~{>son*-
zpB`xilm}=LPq26Z`4LoRA%`b&Isuhgw6Gu94p7-gYdb(?Dy{7RmCdxa161bI+73|N
zL2Elebr7xX0M%`@wgXg0(!vhp{0XWrk@F{VnF{J(AeU>gILftBkT|r?1(jW(b|@(C
zgQ{9k83SsIfY@bd<zGAl0|Tu5t3WaXq&ES?2Wf)V@1XVph+7E~huQ^FmxxrqSApa}
zilBOs{h5ST<|F$P)aOCwgZf4=y&(Uf*Cohm(ffmvXnxE<@?$NM9LQYI7!Gp#4cSgm
zKMiCS$UAi)e?k2W(g)H*Oxq5o24n`P`~cYpVuSKIEM7t8!P<r(IdpZ%ZUVLIklTRB
za-ejIEQf49sLh9~eTW>EptOL@2c=77KB!-Y%m?*rVQv7W1yDK!`3K~WdZhXkBnL`+
zAUA^KKz$QXn-#<c^&u$fD<iuH)Tcvs4=7E;+|vk3r$}+Ajm8I!XCRve>Z>E0Rf8w}
zg4~a+7L;B<VF&UbdY=T;pGS@xe0dewJ)k~1G9T10Lgs_U5|H_zekyX_0Hs+@sQ=@j
z;|-uT9LPPOwmisuP+J`oAE5RVs67rUZ$Rx?P+0(KQ-bn3C>|S-@)4;23MykVk;Fjb
zKA^TmHd4L;jnjbI0y)q=P%e@jD1U>}eIB&mlaFK;Xp9b2XB8mD7iheY73voo1_lOD
zdh%glU;x!Sg$xV~pt_-mfq?;3eitL@vqfTq#<{qmW`O!GptKAchX93}I|Bm)C|*1m
z7#Kip)no<+22i^+g@J(q)Sk*>U|;~1+a(MP44`tYnt_1<ls=jm7#Kit-;CsbP?`kU
z<$@#zDtAHsPf*zeOE={V3=E)fZ9xhbI|c>@Q2GJ2ML}kOXjt0{RHlQ<15lq1l&?VL
zGbqi0$}CXd4OD)C`~*tpAisD*{g8?@UIxm~pfn09r$A*8C{KdQ5D*PZOCWKWogg`o
zeW1P|$Uab>0oex%Gmw3t@d=Q9pfCg32MQaIeW0*`rFl>}1Tqs;)_}|dwcSDbRTxqk
zDi{hFQW=sNN*FR3@)*(?tQZs+)ESZ(@)`0Oav0PZbin*nhCHx}RE8p`SSCXXSk9Hf
zp8=Fkd2yHpQU|K>aM`56019C~9J*nqYvPaxxetWNbF%_YQ#GN!Boq=14AMBwz#oPT
z48}Nh>cDLWg$^VJqTyor%>}6jg*k|Zg&uByRugF|Xg&s43?f_$3N_;V1yTuep*jPx
zE&!=U_m?1!5X@u9XUJtpVklw&<pgsas?-^3;l3|s$b_>?7!tv$y^x`lAr&qPGOL6k
zpP>|<1JuF!ridXEY!4(Af?P;kSb_YFFJFK{h=IWZr`u6O9TYmqVM$49(Zgvc$W7=r
zk)9fH<#lz2Sa4Z@JH8a*v4O}JIVj<e9P<#DmN67DBqGIb8bcyODMJO+BuIQo;PkOA
zRGm5l!bVWo;)^*@s=_A^G83OXBxNMwbdxsRP1bOhE}T^ZXQ{zih_nK-8xk%ya9J%l
zOCQcsg|oC75PA^t4~i*>If)E84EYR248?FApb&=T2?mCoLFf-eTq1k~idBe@i1(W~
zPQM{y0Xcja7%Xw>K*S|NFSZy&xR`i%I#X;bA`KwY4LL6H#px1ir)qLs7eqJLA@UbF
z?u?<EJMotd<hY%fJcC+-2;=lEYMx<Wu)(PkTg`!RJvHi(aGZ97>H|p0Lb$F}XCT}X
z0jU7hb9wL*m-w~`$Q`g&A?|QRlt7>`Vqm~sKO$5j>KKR~VoV2>U<?cnM1&m3&yW_D
zIs^9h8At`Wp@OeA2Bk5`3MEjl4K%U=!k|$l&<G2thY#X|<Uo8-4-wR}1MxvUE|45Z
z9Ml5?^&CNbP|p!022u;^je*PpjTV9QfO>(TUK*%Z3F`I1^nrSfpxz%0gY<xUaUgx5
zo+oJ30W@O@Qjcs7$S!0(pq?!ZgL>ego+PMe2^viS^(;ZXS5U7KrUpiXMmj(vqad?D
zqZc3=WG`q01H=Z|3Bn-v!`uPV3z{VZ`3I&4BnMJY2!qst{07nwnt2160qTu|+yIgT
z*#*KN`#|=9Fh~u^FQDE(%s((c!TbgC8wi8cgUko@Jwa{(=>@T2;vlm@_JH^x8l)EF
L4iF8J1JQf{B-^$n

literal 9162
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

diff --git a/src/sa/Sc2sa.java b/src/sa/Sc2sa.java
index 7b3d648..d8f0662 100644
--- a/src/sa/Sc2sa.java
+++ b/src/sa/Sc2sa.java
@@ -1,6 +1,7 @@
 package sa;
 import lParser.analysis.*;
 import lParser.node.*;
+import saParser.node.AModuloExp;
 import util.Type;
 
 public class Sc2sa extends DepthFirstAdapter
@@ -152,7 +153,7 @@ public class Sc2sa extends DepthFirstAdapter
 
         node.getAdd().apply(this);
         op1=(SaExp) this.returnValue ;
-        node.getMult().apply(this);
+        node.getMod().apply(this);
         op2=(SaExp) this.returnValue ;
         this.returnValue = new SaExpAdd(op1,op2);
 
@@ -167,13 +168,35 @@ public class Sc2sa extends DepthFirstAdapter
 
         node.getAdd().apply(this);
         op1=(SaExp) this.returnValue ;
-        node.getMult().apply(this);
+        node.getMod().apply(this);
         op2=(SaExp) this.returnValue ;
         this.returnValue = new SaExpSub(op1,op2);
         outAMoinsAdd(node);
     }
 
+    public void caseAAddtoAdd(AAddtoAddto node){
+        SaExp op2 = null;
+        SaVar op1= null ;
+
+        node.getAddto().apply(this);
+        op1 = (SaVar) this.returnValue;
+        this.returnValue = new SaIncr(op1,null);
+
+    }
 
+    public void caseAmodmod(AModMod node){
+        SaExp op1 = null ;
+        node.getMod().apply(this);
+        op1 = (SaExp) this.returnValue;
+        SaExp op2 = null ;
+        node.getMult().apply(this);
+        op2 = (SaExp) this.returnValue;
+
+        this.returnValue = new SaExpModulo(op1,op2);
+
+    }
+
+/*
     @Override
     public void caseAMultAdd(AMultAdd node)
     {
@@ -181,7 +204,7 @@ public class Sc2sa extends DepthFirstAdapter
         node.getMult().apply(this);
         outAMultAdd(node);
     }
-
+*/
     @Override
     public void caseAFoisMult(AFoisMult node)
     {
@@ -214,17 +237,18 @@ public class Sc2sa extends DepthFirstAdapter
         this.returnValue = new SaExpDiv(op1, op2);
         outADiviserMult(node);
     }
-
+/*
     public void inANegMult(ANegMult node)
     {
         defaultIn(node);
     }
 
-    public void outANegMult(ANegMult node)
+     public void outANegMult(ANegMult node)
     {
         defaultOut(node);
     }
 
+
     @Override
     public void caseANegMult(ANegMult node)
     {
@@ -233,6 +257,7 @@ public class Sc2sa extends DepthFirstAdapter
         outANegMult(node);
     }
 
+  */
     public void inANonNeg(ANonNeg node)
     {
         defaultIn(node);
diff --git a/src/saParser/analysis/Analysis.java b/src/saParser/analysis/Analysis.java
index 3e31ebf..98d490e 100644
--- a/src/saParser/analysis/Analysis.java
+++ b/src/saParser/analysis/Analysis.java
@@ -19,6 +19,7 @@ public interface Analysis extends Switch
     void caseAEqualExp(AEqualExp node);
     void caseAInfExp(AInfExp node);
     void caseAMultExp(AMultExp node);
+    void caseAModuloExp(AModuloExp node);
     void caseAOrExp(AOrExp node);
     void caseASubExp(ASubExp node);
     void caseANotExp(ANotExp node);
@@ -29,6 +30,7 @@ public interface Analysis extends Switch
     void caseAIntExp(AIntExp node);
     void caseALireExp(ALireExp node);
     void caseAAffectInst(AAffectInst node);
+    void caseAIncrInst(AIncrInst node);
     void caseABlocInst(ABlocInst node);
     void caseAEcritureInst(AEcritureInst node);
     void caseARetourInst(ARetourInst node);
@@ -73,12 +75,14 @@ public interface Analysis extends Switch
     void caseTSaexpint(TSaexpint node);
     void caseTSaexplire(TSaexplire node);
     void caseTSaexpmult(TSaexpmult node);
+    void caseTSaexpmodulo(TSaexpmodulo node);
     void caseTSaexpnot(TSaexpnot node);
     void caseTSaexpor(TSaexpor node);
     void caseTSaexpsub(TSaexpsub node);
     void caseTSaexpvar(TSaexpvar node);
     void caseTSaexpvrai(TSaexpvrai node);
     void caseTSainstaffect(TSainstaffect node);
+    void caseTSaincr(TSaincr node);
     void caseTSainstbloc(TSainstbloc node);
     void caseTSainstecriture(TSainstecriture node);
     void caseTSainstretour(TSainstretour node);
diff --git a/src/saParser/analysis/AnalysisAdapter.java b/src/saParser/analysis/AnalysisAdapter.java
index 2d1be4a..6f315c6 100644
--- a/src/saParser/analysis/AnalysisAdapter.java
+++ b/src/saParser/analysis/AnalysisAdapter.java
@@ -116,6 +116,12 @@ public class AnalysisAdapter implements Analysis
         defaultCase(node);
     }
 
+    @Override
+    public void caseAModuloExp(AModuloExp node)
+    {
+        defaultCase(node);
+    }
+
     @Override
     public void caseAOrExp(AOrExp node)
     {
@@ -176,6 +182,12 @@ public class AnalysisAdapter implements Analysis
         defaultCase(node);
     }
 
+    @Override
+    public void caseAIncrInst(AIncrInst node)
+    {
+        defaultCase(node);
+    }
+
     @Override
     public void caseABlocInst(ABlocInst node)
     {
@@ -434,6 +446,12 @@ public class AnalysisAdapter implements Analysis
         defaultCase(node);
     }
 
+    @Override
+    public void caseTSaexpmodulo(TSaexpmodulo node)
+    {
+        defaultCase(node);
+    }
+
     @Override
     public void caseTSaexpnot(TSaexpnot node)
     {
@@ -470,6 +488,12 @@ public class AnalysisAdapter implements Analysis
         defaultCase(node);
     }
 
+    @Override
+    public void caseTSaincr(TSaincr node)
+    {
+        defaultCase(node);
+    }
+
     @Override
     public void caseTSainstbloc(TSainstbloc node)
     {
diff --git a/src/saParser/analysis/DepthFirstAdapter.java b/src/saParser/analysis/DepthFirstAdapter.java
index 80c2ee4..c5dd2b2 100644
--- a/src/saParser/analysis/DepthFirstAdapter.java
+++ b/src/saParser/analysis/DepthFirstAdapter.java
@@ -295,6 +295,43 @@ public class DepthFirstAdapter extends AnalysisAdapter
         outAMultExp(node);
     }
 
+    public void inAModuloExp(AModuloExp node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAModuloExp(AModuloExp node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAModuloExp(AModuloExp node)
+    {
+        inAModuloExp(node);
+        if(node.getPo() != null)
+        {
+            node.getPo().apply(this);
+        }
+        if(node.getSaexpmodulo() != null)
+        {
+            node.getSaexpmodulo().apply(this);
+        }
+        if(node.getOp1() != null)
+        {
+            node.getOp1().apply(this);
+        }
+        if(node.getOp2() != null)
+        {
+            node.getOp2().apply(this);
+        }
+        if(node.getPf() != null)
+        {
+            node.getPf().apply(this);
+        }
+        outAModuloExp(node);
+    }
+
     public void inAOrExp(AOrExp node)
     {
         defaultIn(node);
@@ -589,6 +626,43 @@ public class DepthFirstAdapter extends AnalysisAdapter
         outAAffectInst(node);
     }
 
+    public void inAIncrInst(AIncrInst node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAIncrInst(AIncrInst node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAIncrInst(AIncrInst node)
+    {
+        inAIncrInst(node);
+        if(node.getPo() != null)
+        {
+            node.getPo().apply(this);
+        }
+        if(node.getSaincr() != null)
+        {
+            node.getSaincr().apply(this);
+        }
+        if(node.getVar() != null)
+        {
+            node.getVar().apply(this);
+        }
+        if(node.getExp() != null)
+        {
+            node.getExp().apply(this);
+        }
+        if(node.getPf() != null)
+        {
+            node.getPf().apply(this);
+        }
+        outAIncrInst(node);
+    }
+
     public void inABlocInst(ABlocInst node)
     {
         defaultIn(node);
diff --git a/src/saParser/analysis/ReversedDepthFirstAdapter.java b/src/saParser/analysis/ReversedDepthFirstAdapter.java
index 598cce6..9e9deb2 100644
--- a/src/saParser/analysis/ReversedDepthFirstAdapter.java
+++ b/src/saParser/analysis/ReversedDepthFirstAdapter.java
@@ -295,6 +295,43 @@ public class ReversedDepthFirstAdapter extends AnalysisAdapter
         outAMultExp(node);
     }
 
+    public void inAModuloExp(AModuloExp node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAModuloExp(AModuloExp node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAModuloExp(AModuloExp node)
+    {
+        inAModuloExp(node);
+        if(node.getPf() != null)
+        {
+            node.getPf().apply(this);
+        }
+        if(node.getOp2() != null)
+        {
+            node.getOp2().apply(this);
+        }
+        if(node.getOp1() != null)
+        {
+            node.getOp1().apply(this);
+        }
+        if(node.getSaexpmodulo() != null)
+        {
+            node.getSaexpmodulo().apply(this);
+        }
+        if(node.getPo() != null)
+        {
+            node.getPo().apply(this);
+        }
+        outAModuloExp(node);
+    }
+
     public void inAOrExp(AOrExp node)
     {
         defaultIn(node);
@@ -589,6 +626,43 @@ public class ReversedDepthFirstAdapter extends AnalysisAdapter
         outAAffectInst(node);
     }
 
+    public void inAIncrInst(AIncrInst node)
+    {
+        defaultIn(node);
+    }
+
+    public void outAIncrInst(AIncrInst node)
+    {
+        defaultOut(node);
+    }
+
+    @Override
+    public void caseAIncrInst(AIncrInst node)
+    {
+        inAIncrInst(node);
+        if(node.getPf() != null)
+        {
+            node.getPf().apply(this);
+        }
+        if(node.getExp() != null)
+        {
+            node.getExp().apply(this);
+        }
+        if(node.getVar() != null)
+        {
+            node.getVar().apply(this);
+        }
+        if(node.getSaincr() != null)
+        {
+            node.getSaincr().apply(this);
+        }
+        if(node.getPo() != null)
+        {
+            node.getPo().apply(this);
+        }
+        outAIncrInst(node);
+    }
+
     public void inABlocInst(ABlocInst node)
     {
         defaultIn(node);
diff --git a/src/saParser/lexer/Lexer.java b/src/saParser/lexer/Lexer.java
index 648ecb5..5529221 100644
--- a/src/saParser/lexer/Lexer.java
+++ b/src/saParser/lexer/Lexer.java
@@ -619,7 +619,6 @@ public class Lexer
                     case 44:
                         {
                             @SuppressWarnings("hiding") Token token = new44(
-                                getText(accept_length),
                                 start_line + 1,
                                 start_pos + 1);
                             pushBack(accept_length);
@@ -630,6 +629,27 @@ public class Lexer
                     case 45:
                         {
                             @SuppressWarnings("hiding") Token token = new45(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 46:
+                        {
+                            @SuppressWarnings("hiding") Token token = new46(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 47:
+                        {
+                            @SuppressWarnings("hiding") Token token = new47(
                                 getText(accept_length),
                                 start_line + 1,
                                 start_pos + 1);
@@ -678,33 +698,35 @@ public class Lexer
     Token new16(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpint(line, pos); }
     Token new17(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexplire(line, pos); }
     Token new18(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpmult(line, pos); }
-    Token new19(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpnot(line, pos); }
-    Token new20(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpor(line, pos); }
-    Token new21(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpsub(line, pos); }
-    Token new22(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpvar(line, pos); }
-    Token new23(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpvrai(line, pos); }
-    Token new24(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstaffect(line, pos); }
-    Token new25(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstbloc(line, pos); }
-    Token new26(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstecriture(line, pos); }
-    Token new27(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstretour(line, pos); }
-    Token new28(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstsi(line, pos); }
-    Token new29(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainsttantque(line, pos); }
-    Token new30(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaldecfonc(line, pos); }
-    Token new31(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaldecvar(line, pos); }
-    Token new32(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSalexp(line, pos); }
-    Token new33(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSalinst(line, pos); }
-    Token new34(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaprog(line, pos); }
-    Token new35(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSavarindicee(line, pos); }
-    Token new36(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSavarsimple(line, pos); }
-    Token new37(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFaux(line, pos); }
-    Token new38(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TVrai(line, pos); }
-    Token new39(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLire(line, pos); }
-    Token new40(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNull(line, pos); }
-    Token new41(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEntier(line, pos); }
-    Token new42(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TBool(line, pos); }
-    Token new43(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNul(line, pos); }
-    Token new44(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TInteger(text, line, pos); }
-    Token new45(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TId(text, line, pos); }
+    Token new19(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpmodulo(line, pos); }
+    Token new20(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpnot(line, pos); }
+    Token new21(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpor(line, pos); }
+    Token new22(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpsub(line, pos); }
+    Token new23(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpvar(line, pos); }
+    Token new24(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaexpvrai(line, pos); }
+    Token new25(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstaffect(line, pos); }
+    Token new26(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaincr(line, pos); }
+    Token new27(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstbloc(line, pos); }
+    Token new28(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstecriture(line, pos); }
+    Token new29(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstretour(line, pos); }
+    Token new30(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainstsi(line, pos); }
+    Token new31(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSainsttantque(line, pos); }
+    Token new32(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaldecfonc(line, pos); }
+    Token new33(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaldecvar(line, pos); }
+    Token new34(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSalexp(line, pos); }
+    Token new35(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSalinst(line, pos); }
+    Token new36(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSaprog(line, pos); }
+    Token new37(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSavarindicee(line, pos); }
+    Token new38(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSavarsimple(line, pos); }
+    Token new39(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TFaux(line, pos); }
+    Token new40(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TVrai(line, pos); }
+    Token new41(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLire(line, pos); }
+    Token new42(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNull(line, pos); }
+    Token new43(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEntier(line, pos); }
+    Token new44(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TBool(line, pos); }
+    Token new45(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNul(line, pos); }
+    Token new46(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TInteger(text, line, pos); }
+    Token new47(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TId(text, line, pos); }
 
     private int getChar() throws IOException
     {
@@ -809,150 +831,157 @@ public class Lexer
             {{48, 111, -31}, {112, 112, 57}, {113, 122, 20}, },
             {{48, 90, -8}, {97, 98, 20}, {99, 99, 58}, {100, 122, 20}, },
             {{48, 111, -31}, {112, 112, 59}, {113, 122, 20}, },
-            {{48, 90, -8}, {97, 114, 20}, {115, 115, 60}, {116, 122, 20}, },
-            {{48, 100, -32}, {101, 101, 61}, {102, 122, 20}, },
-            {{48, 119, -33}, {120, 120, 62}, {121, 122, 20}, },
-            {{48, 109, -14}, {110, 110, 63}, {111, 122, 20}, },
-            {{48, 110, -13}, {111, 111, 64}, {112, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 65}, {115, 122, 20}, },
-            {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 66}, {102, 122, 20}, },
-            {{48, 122, -8}, },
+            {{48, 98, -45}, {99, 99, 60}, {100, 114, 20}, {115, 115, 61}, {116, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 62}, {102, 122, 20}, },
+            {{48, 119, -33}, {120, 120, 63}, {121, 122, 20}, },
+            {{48, 109, -14}, {110, 110, 64}, {111, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 65}, {112, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 66}, {115, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 100, -32}, {101, 101, 67}, {102, 122, 20}, },
             {{48, 122, -8}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 67}, {102, 122, 20}, },
-            {{48, 57, 20}, {65, 69, 20}, {70, 70, 68}, {71, 83, 20}, {84, 84, 69}, {85, 85, 20}, {86, 86, 70}, {87, 122, -23}, },
-            {{48, 57, 20}, {65, 65, 71}, {66, 67, 20}, {68, 68, 72}, {69, 69, 73}, {70, 70, 74}, {71, 72, 20}, {73, 73, 75}, {74, 75, 20}, {76, 76, 76}, {77, 77, 77}, {78, 78, 78}, {79, 79, 79}, {80, 82, 20}, {83, 83, 80}, {84, 85, 20}, {86, 86, 81}, {87, 122, -23}, },
-            {{48, 115, -25}, {116, 116, 82}, {117, 122, 20}, },
-            {{48, 98, -45}, {99, 99, 83}, {100, 122, 20}, },
-            {{48, 111, -31}, {112, 112, 84}, {113, 122, 20}, },
-            {{48, 114, -47}, {115, 115, 85}, {116, 122, 20}, },
-            {{48, 90, -8}, {97, 102, 20}, {103, 103, 86}, {104, 122, 20}, },
-            {{48, 57, 20}, {65, 72, 20}, {73, 73, 87}, {74, 82, 20}, {83, 83, 88}, {84, 90, 20}, {97, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 89}, {115, 122, 20}, },
-            {{48, 107, -28}, {108, 108, 90}, {109, 122, 20}, },
-            {{48, 110, -13}, {111, 111, 91}, {112, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 92}, {98, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 93}, {98, 122, 20}, },
-            {{48, 90, -8}, {97, 99, 20}, {100, 100, 94}, {101, 109, 20}, {110, 110, 95}, {111, 111, 20}, {112, 112, 96}, {113, 122, 20}, },
-            {{48, 104, -16}, {105, 105, 97}, {106, 122, 20}, },
-            {{48, 90, -8}, {97, 112, 20}, {113, 113, 98}, {114, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 99}, {98, 122, 20}, },
-            {{48, 109, -14}, {110, 110, 100}, {111, 122, 20}, },
-            {{48, 104, -16}, {105, 105, 101}, {106, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 102}, {118, 122, 20}, },
-            {{48, 110, -13}, {111, 111, 103}, {112, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 104}, {115, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 105}, {118, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 106}, {98, 113, 20}, {114, 114, 107}, {115, 122, 20}, },
-            {{48, 57, 20}, {65, 65, 108}, {66, 66, 109}, {67, 68, 20}, {69, 69, 110}, {70, 81, 20}, {82, 82, 111}, {83, 83, 112}, {84, 84, 113}, {85, 90, 20}, {97, 122, 20}, },
-            {{48, 69, -60}, {70, 70, 114}, {71, 85, 20}, {86, 86, 115}, {87, 122, -23}, },
             {{48, 122, -8}, },
-            {{48, 115, -25}, {116, 116, 116}, {117, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 109, -14}, {110, 110, 117}, {111, 122, 20}, },
-            {{48, 104, -16}, {105, 105, 118}, {106, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 68}, {102, 122, 20}, },
+            {{48, 57, 20}, {65, 69, 20}, {70, 70, 69}, {71, 83, 20}, {84, 84, 70}, {85, 85, 20}, {86, 86, 71}, {87, 122, -23}, },
+            {{48, 57, 20}, {65, 65, 72}, {66, 67, 20}, {68, 68, 73}, {69, 69, 74}, {70, 70, 75}, {71, 72, 20}, {73, 73, 76}, {74, 75, 20}, {76, 76, 77}, {77, 77, 78}, {78, 78, 79}, {79, 79, 80}, {80, 82, 20}, {83, 83, 81}, {84, 85, 20}, {86, 86, 82}, {87, 122, -23}, },
+            {{48, 113, -18}, {114, 114, 83}, {115, 122, 20}, },
+            {{48, 115, -25}, {116, 116, 84}, {117, 122, 20}, },
+            {{48, 98, -45}, {99, 99, 85}, {100, 122, 20}, },
+            {{48, 111, -31}, {112, 112, 86}, {113, 122, 20}, },
+            {{48, 90, -8}, {97, 114, 20}, {115, 115, 87}, {116, 122, 20}, },
+            {{48, 90, -8}, {97, 102, 20}, {103, 103, 88}, {104, 122, 20}, },
+            {{48, 57, 20}, {65, 72, 20}, {73, 73, 89}, {74, 82, 20}, {83, 83, 90}, {84, 90, 20}, {97, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 91}, {115, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 92}, {109, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 93}, {112, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 94}, {98, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 95}, {98, 122, 20}, },
+            {{48, 90, -8}, {97, 99, 20}, {100, 100, 96}, {101, 109, 20}, {110, 110, 97}, {111, 111, 20}, {112, 112, 98}, {113, 122, 20}, },
+            {{48, 104, -16}, {105, 105, 99}, {106, 122, 20}, },
+            {{48, 90, -8}, {97, 112, 20}, {113, 113, 100}, {114, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 101}, {98, 122, 20}, },
+            {{48, 109, -14}, {110, 110, 102}, {111, 122, 20}, },
+            {{48, 104, -16}, {105, 105, 103}, {106, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 104}, {112, 116, 20}, {117, 117, 105}, {118, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 106}, {112, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 107}, {115, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 108}, {118, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 109}, {98, 113, 20}, {114, 114, 110}, {115, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 57, 20}, {65, 65, 111}, {66, 66, 112}, {67, 68, 20}, {69, 69, 113}, {70, 81, 20}, {82, 82, 114}, {83, 83, 115}, {84, 84, 116}, {85, 90, 20}, {97, 122, 20}, },
+            {{48, 69, -60}, {70, 70, 117}, {71, 85, 20}, {86, 86, 118}, {87, 122, -23}, },
             {{48, 122, -8}, },
-            {{48, 109, -14}, {110, 110, 119}, {111, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 20}, {98, 98, 120}, {99, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 121}, {115, 122, 20}, },
-            {{48, 99, -73}, {100, 100, 122}, {101, 122, 20}, },
-            {{48, 99, -73}, {100, 100, 123}, {101, 122, 20}, },
-            {{48, 111, -31}, {112, 112, 124}, {113, 122, 20}, },
-            {{48, 90, -8}, {97, 117, 20}, {118, 118, 125}, {119, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 126}, {118, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 127}, {118, 122, 20}, },
-            {{48, 90, -8}, {97, 101, 20}, {102, 102, 128}, {103, 115, 20}, {116, 116, 129}, {117, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 130}, {115, 122, 20}, },
-            {{48, 107, -28}, {108, 108, 131}, {109, 122, 20}, },
-            {{48, 115, -25}, {116, 116, 132}, {117, 122, 20}, },
+            {{48, 115, -25}, {116, 116, 119}, {117, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 97, -94}, {98, 98, 133}, {99, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 134}, {115, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 135}, {98, 122, 20}, },
-            {{48, 101, -102}, {102, 102, 136}, {103, 122, 20}, },
-            {{48, 107, -28}, {108, 108, 137}, {109, 122, 20}, },
-            {{48, 98, -45}, {99, 99, 138}, {100, 122, 20}, },
-            {{48, 100, -32}, {101, 101, 139}, {102, 122, 20}, },
-            {{48, 104, -16}, {105, 105, 140}, {106, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 141}, {98, 122, 20}, },
-            {{48, 110, -13}, {111, 111, 142}, {112, 122, 20}, },
-            {{48, 90, -8}, {97, 97, 143}, {98, 122, 20}, },
+            {{48, 109, -14}, {110, 110, 120}, {111, 122, 20}, },
+            {{48, 104, -16}, {105, 105, 121}, {106, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 99, -73}, {100, 100, 144}, {101, 122, 20}, },
-            {{48, 90, -8}, {97, 108, 20}, {109, 109, 145}, {110, 122, 20}, },
-            {{48, 98, -45}, {99, 99, 146}, {100, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 57, 20}, {65, 82, 20}, {83, 83, 147}, {84, 122, -67}, },
+            {{48, 109, -14}, {110, 110, 122}, {111, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 20}, {98, 98, 123}, {99, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 124}, {115, 122, 20}, },
+            {{48, 99, -74}, {100, 100, 125}, {101, 122, 20}, },
+            {{48, 99, -74}, {100, 100, 126}, {101, 122, 20}, },
+            {{48, 111, -31}, {112, 112, 127}, {113, 122, 20}, },
+            {{48, 90, -8}, {97, 117, 20}, {118, 118, 128}, {119, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 129}, {118, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 130}, {118, 122, 20}, },
+            {{48, 90, -8}, {97, 101, 20}, {102, 102, 131}, {103, 115, 20}, {116, 116, 132}, {117, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 133}, {115, 122, 20}, },
+            {{48, 99, -74}, {100, 100, 134}, {101, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 135}, {109, 122, 20}, },
+            {{48, 115, -25}, {116, 116, 136}, {117, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 97, -96}, {98, 98, 137}, {99, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 138}, {115, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 139}, {98, 122, 20}, },
+            {{48, 101, -104}, {102, 102, 140}, {103, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 141}, {109, 122, 20}, },
+            {{48, 98, -45}, {99, 99, 142}, {100, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 143}, {102, 122, 20}, },
+            {{48, 104, -16}, {105, 105, 144}, {106, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 145}, {98, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 146}, {112, 122, 20}, },
+            {{48, 90, -8}, {97, 97, 147}, {98, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 148}, {102, 122, 20}, },
+            {{48, 99, -74}, {100, 100, 148}, {101, 122, 20}, },
+            {{48, 90, -8}, {97, 108, 20}, {109, 109, 149}, {110, 122, 20}, },
+            {{48, 98, -45}, {99, 99, 150}, {100, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 90, -8}, {97, 97, 149}, {98, 122, 20}, },
-            {{48, 119, -33}, {120, 120, 150}, {121, 122, 20}, },
+            {{48, 57, 20}, {65, 82, 20}, {83, 83, 151}, {84, 122, -68}, },
             {{48, 122, -8}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 151}, {102, 122, 20}, },
-            {{48, 115, -25}, {116, 116, 152}, {117, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 152}, {102, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 90, -8}, {97, 97, 153}, {98, 122, 20}, },
+            {{48, 119, -33}, {120, 120, 154}, {121, 122, 20}, },
             {{48, 122, -8}, },
             {{48, 122, -8}, },
-            {{48, 104, -16}, {105, 105, 153}, {106, 122, 20}, },
-            {{48, 101, -102}, {102, 102, 154}, {103, 122, 20}, },
-            {{48, 110, -13}, {111, 111, 155}, {112, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 156}, {115, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 155}, {102, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 156}, {118, 122, 20}, },
             {{48, 115, -25}, {116, 116, 157}, {117, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 109, -14}, {110, 110, 158}, {111, 122, 20}, },
-            {{48, 109, -14}, {110, 110, 159}, {111, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 160}, {115, 122, 20}, },
-            {{48, 104, -16}, {105, 105, 161}, {106, 122, 20}, },
-            {{48, 111, -31}, {112, 112, 162}, {113, 122, 20}, },
-            {{48, 122, -8}, },
-            {{48, 104, -16}, {105, 105, 163}, {106, 122, 20}, },
-            {{48, 107, -28}, {108, 108, 164}, {109, 122, 20}, },
-            {{48, 107, -28}, {108, 108, 165}, {109, 122, 20}, },
             {{48, 122, -8}, },
             {{48, 122, -8}, },
+            {{48, 104, -16}, {105, 105, 158}, {106, 122, 20}, },
+            {{48, 101, -104}, {102, 102, 159}, {103, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 160}, {112, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 161}, {115, 122, 20}, },
+            {{48, 115, -25}, {116, 116, 162}, {117, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 109, -14}, {110, 110, 163}, {111, 122, 20}, },
+            {{48, 109, -14}, {110, 110, 164}, {111, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 165}, {115, 122, 20}, },
+            {{48, 104, -16}, {105, 105, 166}, {106, 122, 20}, },
+            {{48, 111, -31}, {112, 112, 167}, {113, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 166}, {102, 122, 20}, },
-            {{48, 98, -45}, {99, 99, 167}, {100, 122, 20}, },
             {{48, 104, -16}, {105, 105, 168}, {106, 122, 20}, },
-            {{48, 110, -13}, {111, 111, 169}, {112, 122, 20}, },
-            {{48, 115, -25}, {116, 116, 170}, {117, 122, 20}, },
-            {{48, 98, -45}, {99, 99, 171}, {100, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 169}, {109, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 170}, {109, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 98, -45}, {99, 99, 172}, {100, 122, 20}, },
-            {{48, 107, -28}, {108, 108, 173}, {109, 122, 20}, },
-            {{48, 108, -120}, {109, 109, 174}, {110, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 107, -28}, {108, 108, 171}, {109, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 98, -45}, {99, 99, 175}, {100, 122, 20}, },
             {{48, 122, -8}, },
+            {{48, 100, -32}, {101, 101, 172}, {102, 122, 20}, },
+            {{48, 98, -45}, {99, 99, 173}, {100, 122, 20}, },
+            {{48, 104, -16}, {105, 105, 174}, {106, 122, 20}, },
+            {{48, 110, -13}, {111, 111, 175}, {112, 122, 20}, },
             {{48, 115, -25}, {116, 116, 176}, {117, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 177}, {118, 122, 20}, },
-            {{48, 57, 20}, {65, 80, 20}, {81, 81, 178}, {82, 90, 20}, {97, 122, 20}, },
+            {{48, 98, -45}, {99, 99, 177}, {100, 122, 20}, },
+            {{48, 122, -8}, },
+            {{48, 98, -45}, {99, 99, 178}, {100, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 179}, {109, 122, 20}, },
+            {{48, 108, -123}, {109, 109, 180}, {110, 122, 20}, },
+            {{48, 122, -8}, },
+            {{48, 122, -8}, },
+            {{48, 110, -13}, {111, 111, 181}, {112, 122, 20}, },
+            {{48, 98, -45}, {99, 99, 182}, {100, 122, 20}, },
+            {{48, 122, -8}, },
+            {{48, 115, -25}, {116, 116, 183}, {117, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 184}, {118, 122, 20}, },
+            {{48, 57, 20}, {65, 80, 20}, {81, 81, 185}, {82, 90, 20}, {97, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 179}, {102, 122, 20}, },
-            {{48, 100, -32}, {101, 101, 180}, {102, 122, 20}, },
-            {{48, 111, -31}, {112, 112, 181}, {113, 122, 20}, },
-            {{48, 115, -25}, {116, 116, 182}, {117, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 183}, {118, 122, 20}, },
-            {{48, 113, -18}, {114, 114, 184}, {115, 122, 20}, },
-            {{48, 116, -17}, {117, 117, 185}, {118, 122, 20}, },
             {{48, 100, -32}, {101, 101, 186}, {102, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 187}, {102, 122, 20}, },
+            {{48, 111, -31}, {112, 112, 188}, {113, 122, 20}, },
+            {{48, 122, -8}, },
+            {{48, 115, -25}, {116, 116, 189}, {117, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 190}, {118, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 191}, {115, 122, 20}, },
+            {{48, 116, -17}, {117, 117, 192}, {118, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 193}, {102, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 107, -28}, {108, 108, 187}, {109, 122, 20}, },
+            {{48, 107, -28}, {108, 108, 194}, {109, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 113, -18}, {114, 114, 188}, {115, 122, 20}, },
+            {{48, 113, -18}, {114, 114, 195}, {115, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 189}, {102, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 196}, {102, 122, 20}, },
             {{48, 122, -8}, },
-            {{48, 100, -32}, {101, 101, 190}, {102, 122, 20}, },
-            {{48, 100, -32}, {101, 101, 191}, {102, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 197}, {102, 122, 20}, },
+            {{48, 100, -32}, {101, 101, 198}, {102, 122, 20}, },
             {{48, 122, -8}, },
             {{48, 122, -8}, },
             {{48, 122, -8}, },
@@ -962,7 +991,7 @@ public class Lexer
     private static int[][] accept;
 /*  {
         // INITIAL
-        {-1, 0, 0, 0, 0, -1, 45, 2, 3, 44, 45, 45, 45, 45, 45, 45, 45, -1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 42, 45, 37, 39, 40, 38, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 32, 45, 34, 45, 45, 41, 4, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 20, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 33, 45, 45, 45, 6, 7, 9, 10, 45, 12, 45, 45, 15, 16, 45, 45, 19, 21, 22, 45, 45, 45, 45, 45, 28, 45, 45, 45, 45, 45, 5, 45, 45, 45, 14, 17, 18, 23, 45, 45, 45, 45, 45, 45, 31, 45, 45, 45, 11, 13, 45, 25, 45, 45, 45, 30, 45, 45, 45, 45, 45, 45, 45, 45, 36, 45, 24, 45, 27, 45, 35, 45, 45, 29, 8, 26, },
+        {-1, 0, 0, 0, 0, -1, 47, 2, 3, 46, 47, 47, 47, 47, 47, 47, 47, -1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 44, 47, 39, 41, 42, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 26, 47, 47, 34, 47, 36, 47, 47, 43, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 21, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 35, 47, 47, 47, 6, 7, 9, 10, 47, 12, 47, 47, 15, 16, 47, 47, 47, 20, 22, 23, 47, 47, 47, 47, 47, 30, 47, 47, 47, 47, 47, 5, 47, 47, 47, 14, 17, 47, 18, 24, 47, 47, 47, 47, 47, 47, 33, 47, 47, 47, 11, 13, 47, 47, 27, 47, 47, 47, 32, 47, 47, 47, 19, 47, 47, 47, 47, 47, 38, 47, 25, 47, 29, 47, 37, 47, 47, 31, 8, 28, },
 
     };*/
 
diff --git a/src/saParser/lexer/lexer.dat b/src/saParser/lexer/lexer.dat
index a1bd028415b0ad63a549525ba6dc4d3836c69934..5472df88c0000d4ff6e2f219d449246eb770387c 100644
GIT binary patch
delta 2287
zcmbQ^bisv#fq{XMfq~)pMh<NbM%Kv&QsS~U3=9k@3=9lK3=9k+3=9m#P;AS<z)&(-
zhh3S`ZgK;MI;%Yc14HHH2fWIR4wEl%s53fFHV{{5begQdX+C*Br@-X<G6IwTOL#E4
zOg_MAZ0O3sz~Iinzz_^IHH3kI0fgNc7#KpK7-U-*0|NsHyH8f(QV;cDU|?`!U|?{D
z>T+RVU;trH1_lO@i6HF7z`y`91%$n!wt)13OarL{VIKwt29P?CyvXDwT*i|xbBRa>
zLfrteAEX*&F9-)s;ufELoJD{!c(Q<?_~iXU0*oP(4P?Y8+j9#rhE5LPR%Zn%E1WFA
zEI-+uLx3@S@&ayS#)!#RxQ!(vp;iS!oec6Y2uDp;;4x;5p4=d$&KNVfKuUaayodl}
z?BoIwb;h{K8`#7r&u0^0jGz34$5=9ffq@~Ffq@|xYDOLd0|N*rPIllGXH8;YU?`k?
zhfSF=d2$1<F)KK-CO0rCGp2&g+0P-sm^S$Whxp|8YyyJm3=9le3=9laP_tMkKj0AO
z&0t_)C;&w$NObZ6KIzH(SvbHh$^u2>WNv<e$^9}Cj5(7Xq{Sz@3kyhs+yb^4qyw5f
zKuIKTvI3{PDmMcIg8>5rgC$hfk%55$g!7>h2#Uml$qxMDhK11R0tG%O&_Uq@!XUFi
z;RM2<BnL_yAY3xJgWp)P6dJMUQB^ki3copH`Q!$1bH)mopBXDB=Lop7f_$70j-%@W
z0<6^x3=GMW4S19pYbFZ_O7m`mCUa2e)lN<j6c<eX|NlR-Xx-!lL3P%8aA<>KdbOYc
zYXbuVL-}L_K4r$n$s1V2C(maQU~HPqBV^3jJlR1=oUsL*PWU+m7+W!HX#?3Z`MiVx
zV>>whLFuYv@&zGn!37Kq44|+D;ZC?ayCxe5t21_k;#4s8|Ns9p7#JARptxspgRnYd
zFW4MVs_dJ5L0Fx!e{ujjIMx{_OjZz4XPgMq3y#%EpmfGM8D!670Rd$UzfPHaLByDK
zDkz;z*5OuWoHkiNN`A7ps0#0NXeO!p|NsA<$u*+Zj58)*kWrs}UsQl`=Hw5e>a4TC
z1wny;@#OWK0*tf4ZUBYL9B>HbiyKV-FQG8mo|9wpc`*UTd6OTAN%JE6W&Y#_VMuOR
z07`p|3*otL5jb8KgX0yHs+UZDAg<216fFOqO@MLP<OS^Ntji%WB%lm3fAVxm32+#%
z1cwbMv{y}jAfZ3`y^I9oYB0;5Q-W~~*p;A=TRXWxQk`+#BzA}s)=xelsXkd;S^}Ke
zH%=CiGH2X0Ie=RnZ0P361ya(2t<bCq$`V_^K?d@CHlG0F*2x7TkYZxn<OfpbjN2z0
z$fz^!nCu{J%(!!MiL~?N^D+XH_sdE!?w<TWTAg(d-08ph1sL~&Rqva;fkmBh|KtW4
zb;bkWAhc%}U_3baf{Z!ip~(*<<iSCyFDt-!7*y6W9sx%ODCmz)-XN>acx>_o8TrZo
zB~%!XPnMCBuGeQ^U|?ckU|?ooV9;Y=U;y#4;{X5u|A*EGpgIAo8YKP1sL^L&sE1pq
zi=>&5;W|*Y>I@7FnhXpKS_}*f8c;DpdQs);@%R{zfl^3vN>H{6lm=O#&A`CGg2V@j
zVa1^G1Dk{>F`ALoC?l~!=CLs_Ft9T)FmN(3FmOTTc%U>$o}Yn%L4bjQ0UZAz0T2ci
zxMB<p4B|)%LE<nhheMndO`MN`fk6-|Cd9zNAOU5=%t4~-85GeZL3IT$l9)6S8>CSI
gjW3MG2dM#JHK@2Gl$M3ks!$rFMjjMKpjM6y0Hu3>kpKVy

delta 2177
zcmccMGRKL7fq{XMfq~(`Mh<O`$^QjKCZFdPV6|ajU?`ca!>-I|J2`+|e6l#Z0IMAX
z14HFx1wLg)`^g0o;*;Nt2rxQK5*44kURZ$9ak37lIiu6$4|2|vPm8HAI!`{sY0T&{
ziA!A4m4SgF6pBR{7#PB!*ln@_m%67r0|SE-0|SFI0|Ns{)`fwA0fapm7#Ki0LD-Xl
zfx!)my%-o6Kzcy(AoU<Q5cZzDfJ=PxW-cAmAgD>f3=9k)9KgW95Q4@2Kn4bea0Uj3
zs{jB0zntvAEzKA-`GAo4WPcF>#^A{bBI1+p3kqn0bQXeCK}}_5U|=v{U|=Zv|Ns9*
z1_p*=C=Q+cfZLccY_bTCu_VY;kUP;`5-~Y}$Cxp4@&RG-$?=i`j8T&dBq8A#JxNrZ
zF=p}xHu1^x*#sD4C!6pZOU5xUFr+dtFyun5&SPL;0O9z_4ZPy42@DJjg_Ac3C^IHb
zKEP|tngnvx<OU{X#$>QLuUQ2cQy>w=Ccv0FiCuj1d=>%5w8<M-Aa<t1;w}U1p!qBU
zlUMTzOg841;LT!SU;vp1^0>(44}8*-oB1VFbD&WLiY}0wKv4#YDo`|lq6viaCLiDz
zm&}I-Jt+7KpurCg$jKl0jU|hqQ3y&DAib~zQ9Rj3z?`vUa)Pk><ah}I#!{H;S<4t0
z7_ufCa7s^>7n1<Xl~0xtG-j-r93ZI9SP62!VDkU}|F<(RFr+|n)#L?&(!9tb)sq(p
zf+Ll&X7UF?W7b**28QxU{K|}V;4lG&PW|K(A!Eq~1_p+7XuN_PSOUro3=9m7lMe`~
zGd6*&1IJ%8IR5;F1sGc<CkSivE`kOdDCk<jPHUTdKv<oz9TXvgssI1~pT)qykOsva
zlLbW789O0nhzKxtO->L|XY2;&xA$xUj6IV#h^RC6g7kv(THhp5b=H266_X7(l`;G~
zVRC|~G3!K78kwBHt;{%S@&_sT$+tyScqc<+0F==8PJSSuJ^8+v0OOR&6Xet<=Zgt2
zPMzE!rp`JIoV_7otid=P><p0CW=wVv4`-Y?iCrAS2eT$05LaiM4NFIJCJRWYPqr6V
zm|QQ+0gk14lM5u&8RvuJ5mZVnn0!D&opIsh1?=jKizW+5nlmm2rAts=STealQk`+>
z<Oh=aljFrTz)oBSafFBf<MPP?QtFf4B_+Tiv2yYPDRstG@Z7q3@&_q%#x>wP3o>i%
z<N#@D!47EF0VUOS;9!AxPGa(EQ31yFlRrqQPv(~qn0#DH0-Q58PWF&7X52KnM#h<O
z^W+0E>Wo{!_TLv2VBHGNY&OEmjN2wF$fz@JpS*!ZopA>^C4kb+&dCR4)hF+l5tuw*
zPGa(TNdd;)lNIF58TWvT#l4d!$eA<l1Dm-YR7BPv`2YX^e+D!F71L#4U|?ckU;vdg
zIt&a9AU;+MRSzn?K^UtVB>hNg>Tw&2q(K{rO~`O9s9IG91_pHo1_liV1_m{#7^dEO
zJifxIiLf38s9q%~4YF91fq{Vqi4PLftw$HY!3Sl2um&9R=yHl^>ev_<7}yyY7&sXi
z7`UKvJPZsB^)QY63=9kcPzjKjFaraFC<6n77?K!B9EN3Zh_j-J^D!_m2r@7*2r)1)
zh@;8rGB6<GUmi`8n}LCW7b+$RrD2xKq48nj$g~PnjRcgIhSJJV8l+Yh6egf{hZF!{
CgnqmL

diff --git a/src/saParser/parser/Parser.java b/src/saParser/parser/Parser.java
index 92c63c8..efde8a1 100644
--- a/src/saParser/parser/Parser.java
+++ b/src/saParser/parser/Parser.java
@@ -240,210 +240,222 @@ public class Parser
                 push(goTo(1), list, false);
             }
             break;
-            case 7: /* reduce AOrExp */
+            case 7: /* reduce AModuloExp */
             {
                 ArrayList<Object> list = new7();
                 push(goTo(1), list, false);
             }
             break;
-            case 8: /* reduce ASubExp */
+            case 8: /* reduce AOrExp */
             {
                 ArrayList<Object> list = new8();
                 push(goTo(1), list, false);
             }
             break;
-            case 9: /* reduce ANotExp */
+            case 9: /* reduce ASubExp */
             {
                 ArrayList<Object> list = new9();
                 push(goTo(1), list, false);
             }
             break;
-            case 10: /* reduce AAppelExp */
+            case 10: /* reduce ANotExp */
             {
                 ArrayList<Object> list = new10();
                 push(goTo(1), list, false);
             }
             break;
-            case 11: /* reduce AVarExp */
+            case 11: /* reduce AAppelExp */
             {
                 ArrayList<Object> list = new11();
                 push(goTo(1), list, false);
             }
             break;
-            case 12: /* reduce AFauxExp */
+            case 12: /* reduce AVarExp */
             {
                 ArrayList<Object> list = new12();
                 push(goTo(1), list, false);
             }
             break;
-            case 13: /* reduce AVraiExp */
+            case 13: /* reduce AFauxExp */
             {
                 ArrayList<Object> list = new13();
                 push(goTo(1), list, false);
             }
             break;
-            case 14: /* reduce AIntExp */
+            case 14: /* reduce AVraiExp */
             {
                 ArrayList<Object> list = new14();
                 push(goTo(1), list, false);
             }
             break;
-            case 15: /* reduce ALireExp */
+            case 15: /* reduce AIntExp */
             {
                 ArrayList<Object> list = new15();
                 push(goTo(1), list, false);
             }
             break;
-            case 16: /* reduce AAffectInst */
+            case 16: /* reduce ALireExp */
             {
                 ArrayList<Object> list = new16();
-                push(goTo(2), list, false);
+                push(goTo(1), list, false);
             }
             break;
-            case 17: /* reduce ABlocInst */
+            case 17: /* reduce AAffectInst */
             {
                 ArrayList<Object> list = new17();
                 push(goTo(2), list, false);
             }
             break;
-            case 18: /* reduce AEcritureInst */
+            case 18: /* reduce AIncrInst */
             {
                 ArrayList<Object> list = new18();
                 push(goTo(2), list, false);
             }
             break;
-            case 19: /* reduce ARetourInst */
+            case 19: /* reduce ABlocInst */
             {
                 ArrayList<Object> list = new19();
                 push(goTo(2), list, false);
             }
             break;
-            case 20: /* reduce ASiInst */
+            case 20: /* reduce AEcritureInst */
             {
                 ArrayList<Object> list = new20();
                 push(goTo(2), list, false);
             }
             break;
-            case 21: /* reduce ASi2Inst */
+            case 21: /* reduce ARetourInst */
             {
                 ArrayList<Object> list = new21();
                 push(goTo(2), list, false);
             }
             break;
-            case 22: /* reduce ATantqueInst */
+            case 22: /* reduce ASiInst */
             {
                 ArrayList<Object> list = new22();
                 push(goTo(2), list, false);
             }
             break;
-            case 23: /* reduce AAppelInst */
+            case 23: /* reduce ASi2Inst */
             {
                 ArrayList<Object> list = new23();
                 push(goTo(2), list, false);
             }
             break;
-            case 24: /* reduce ARecLdecfonc */
+            case 24: /* reduce ATantqueInst */
             {
                 ArrayList<Object> list = new24();
-                push(goTo(3), list, false);
+                push(goTo(2), list, false);
             }
             break;
-            case 25: /* reduce AFinLdecfonc */
+            case 25: /* reduce AAppelInst */
             {
                 ArrayList<Object> list = new25();
-                push(goTo(3), list, false);
+                push(goTo(2), list, false);
             }
             break;
-            case 26: /* reduce ARecLdecvar */
+            case 26: /* reduce ARecLdecfonc */
             {
                 ArrayList<Object> list = new26();
-                push(goTo(4), list, false);
+                push(goTo(3), list, false);
             }
             break;
-            case 27: /* reduce AFinLdecvar */
+            case 27: /* reduce AFinLdecfonc */
             {
                 ArrayList<Object> list = new27();
-                push(goTo(4), list, false);
+                push(goTo(3), list, false);
             }
             break;
-            case 28: /* reduce ARecLexp */
+            case 28: /* reduce ARecLdecvar */
             {
                 ArrayList<Object> list = new28();
-                push(goTo(5), list, false);
+                push(goTo(4), list, false);
             }
             break;
-            case 29: /* reduce AFinLexp */
+            case 29: /* reduce AFinLdecvar */
             {
                 ArrayList<Object> list = new29();
-                push(goTo(5), list, false);
+                push(goTo(4), list, false);
             }
             break;
-            case 30: /* reduce ARecLinst */
+            case 30: /* reduce ARecLexp */
             {
                 ArrayList<Object> list = new30();
-                push(goTo(6), list, false);
+                push(goTo(5), list, false);
             }
             break;
-            case 31: /* reduce AFinLinst */
+            case 31: /* reduce AFinLexp */
             {
                 ArrayList<Object> list = new31();
-                push(goTo(6), list, false);
+                push(goTo(5), list, false);
             }
             break;
-            case 32: /* reduce ADecfonc */
+            case 32: /* reduce ARecLinst */
             {
                 ArrayList<Object> list = new32();
-                push(goTo(7), list, false);
+                push(goTo(6), list, false);
             }
             break;
-            case 33: /* reduce ATabDecvar */
+            case 33: /* reduce AFinLinst */
             {
                 ArrayList<Object> list = new33();
-                push(goTo(8), list, false);
+                push(goTo(6), list, false);
             }
             break;
-            case 34: /* reduce ASimpleDecvar */
+            case 34: /* reduce ADecfonc */
             {
                 ArrayList<Object> list = new34();
-                push(goTo(8), list, false);
+                push(goTo(7), list, false);
             }
             break;
-            case 35: /* reduce AIndiceeVar */
+            case 35: /* reduce ATabDecvar */
             {
                 ArrayList<Object> list = new35();
-                push(goTo(9), list, false);
+                push(goTo(8), list, false);
             }
             break;
-            case 36: /* reduce ASimpleVar */
+            case 36: /* reduce ASimpleDecvar */
             {
                 ArrayList<Object> list = new36();
-                push(goTo(9), list, false);
+                push(goTo(8), list, false);
             }
             break;
-            case 37: /* reduce AAppel */
+            case 37: /* reduce AIndiceeVar */
             {
                 ArrayList<Object> list = new37();
-                push(goTo(10), list, false);
+                push(goTo(9), list, false);
             }
             break;
-            case 38: /* reduce AEntierType */
+            case 38: /* reduce ASimpleVar */
             {
                 ArrayList<Object> list = new38();
-                push(goTo(11), list, false);
+                push(goTo(9), list, false);
             }
             break;
-            case 39: /* reduce ABoolType */
+            case 39: /* reduce AAppel */
             {
                 ArrayList<Object> list = new39();
-                push(goTo(11), list, false);
+                push(goTo(10), list, false);
             }
             break;
-            case 40: /* reduce ANullType */
+            case 40: /* reduce AEntierType */
             {
                 ArrayList<Object> list = new40();
                 push(goTo(11), list, false);
             }
             break;
+            case 41: /* reduce ABoolType */
+            {
+                ArrayList<Object> list = new41();
+                push(goTo(11), list, false);
+            }
+            break;
+            case 42: /* reduce ANullType */
+            {
+                ArrayList<Object> list = new42();
+                push(goTo(11), list, false);
+            }
+            break;
         }
     }
 
@@ -674,7 +686,39 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new7() /* reduce AOrExp */
+    ArrayList<Object> new7() /* reduce AModuloExp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PExp pexpNode1;
+        {
+            // Block
+        TPo tpoNode2;
+        TSaexpmodulo tsaexpmoduloNode3;
+        PExp pexpNode4;
+        PExp pexpNode5;
+        TPf tpfNode6;
+        tpoNode2 = (TPo)nodeArrayList1.get(0);
+        tsaexpmoduloNode3 = (TSaexpmodulo)nodeArrayList2.get(0);
+        pexpNode4 = (PExp)nodeArrayList3.get(0);
+        pexpNode5 = (PExp)nodeArrayList4.get(0);
+        tpfNode6 = (TPf)nodeArrayList5.get(0);
+
+        pexpNode1 = new AModuloExp(tpoNode2, tsaexpmoduloNode3, pexpNode4, pexpNode5, tpfNode6);
+        }
+	nodeList.add(pexpNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new8() /* reduce AOrExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -706,7 +750,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new8() /* reduce ASubExp */
+    ArrayList<Object> new9() /* reduce ASubExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -738,7 +782,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new9() /* reduce ANotExp */
+    ArrayList<Object> new10() /* reduce ANotExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -767,7 +811,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new10() /* reduce AAppelExp */
+    ArrayList<Object> new11() /* reduce AAppelExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -796,7 +840,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new11() /* reduce AVarExp */
+    ArrayList<Object> new12() /* reduce AVarExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -825,7 +869,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new12() /* reduce AFauxExp */
+    ArrayList<Object> new13() /* reduce AFauxExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -845,7 +889,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new13() /* reduce AVraiExp */
+    ArrayList<Object> new14() /* reduce AVraiExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -865,7 +909,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new14() /* reduce AIntExp */
+    ArrayList<Object> new15() /* reduce AIntExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -885,7 +929,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new15() /* reduce ALireExp */
+    ArrayList<Object> new16() /* reduce ALireExp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -905,7 +949,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new16() /* reduce AAffectInst */
+    ArrayList<Object> new17() /* reduce AAffectInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -937,7 +981,39 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new17() /* reduce ABlocInst */
+    ArrayList<Object> new18() /* reduce AIncrInst */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PInst pinstNode1;
+        {
+            // Block
+        TPo tpoNode2;
+        TSaincr tsaincrNode3;
+        PVar pvarNode4;
+        PExp pexpNode5;
+        TPf tpfNode6;
+        tpoNode2 = (TPo)nodeArrayList1.get(0);
+        tsaincrNode3 = (TSaincr)nodeArrayList2.get(0);
+        pvarNode4 = (PVar)nodeArrayList3.get(0);
+        pexpNode5 = (PExp)nodeArrayList4.get(0);
+        tpfNode6 = (TPf)nodeArrayList5.get(0);
+
+        pinstNode1 = new AIncrInst(tpoNode2, tsaincrNode3, pvarNode4, pexpNode5, tpfNode6);
+        }
+	nodeList.add(pinstNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new19() /* reduce ABlocInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -966,7 +1042,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new18() /* reduce AEcritureInst */
+    ArrayList<Object> new20() /* reduce AEcritureInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -995,7 +1071,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new19() /* reduce ARetourInst */
+    ArrayList<Object> new21() /* reduce ARetourInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1024,7 +1100,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new20() /* reduce ASiInst */
+    ArrayList<Object> new22() /* reduce ASiInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1059,7 +1135,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new21() /* reduce ASi2Inst */
+    ArrayList<Object> new23() /* reduce ASi2Inst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1094,7 +1170,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new22() /* reduce ATantqueInst */
+    ArrayList<Object> new24() /* reduce ATantqueInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1126,7 +1202,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new23() /* reduce AAppelInst */
+    ArrayList<Object> new25() /* reduce AAppelInst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1146,7 +1222,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new24() /* reduce ARecLdecfonc */
+    ArrayList<Object> new26() /* reduce ARecLdecfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1178,7 +1254,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new25() /* reduce AFinLdecfonc */
+    ArrayList<Object> new27() /* reduce AFinLdecfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1198,7 +1274,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new26() /* reduce ARecLdecvar */
+    ArrayList<Object> new28() /* reduce ARecLdecvar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1230,7 +1306,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new27() /* reduce AFinLdecvar */
+    ArrayList<Object> new29() /* reduce AFinLdecvar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1250,7 +1326,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new28() /* reduce ARecLexp */
+    ArrayList<Object> new30() /* reduce ARecLexp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1282,7 +1358,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new29() /* reduce AFinLexp */
+    ArrayList<Object> new31() /* reduce AFinLexp */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1302,7 +1378,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new30() /* reduce ARecLinst */
+    ArrayList<Object> new32() /* reduce ARecLinst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1334,7 +1410,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new31() /* reduce AFinLinst */
+    ArrayList<Object> new33() /* reduce AFinLinst */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1354,7 +1430,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new32() /* reduce ADecfonc */
+    ArrayList<Object> new34() /* reduce ADecfonc */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1395,7 +1471,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new33() /* reduce ATabDecvar */
+    ArrayList<Object> new35() /* reduce ATabDecvar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1430,7 +1506,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new34() /* reduce ASimpleDecvar */
+    ArrayList<Object> new36() /* reduce ASimpleDecvar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1462,7 +1538,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new35() /* reduce AIndiceeVar */
+    ArrayList<Object> new37() /* reduce AIndiceeVar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1494,7 +1570,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new36() /* reduce ASimpleVar */
+    ArrayList<Object> new38() /* reduce ASimpleVar */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1523,7 +1599,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new37() /* reduce AAppel */
+    ArrayList<Object> new39() /* reduce AAppel */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1555,7 +1631,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new38() /* reduce AEntierType */
+    ArrayList<Object> new40() /* reduce AEntierType */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1575,7 +1651,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new39() /* reduce ABoolType */
+    ArrayList<Object> new41() /* reduce ABoolType */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1595,7 +1671,7 @@ public class Parser
 
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    ArrayList<Object> new40() /* reduce ANullType */
+    ArrayList<Object> new42() /* reduce ANullType */
     {
         @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
@@ -1617,133 +1693,140 @@ public class Parser
     private static int[][][] actionTable;
 /*      {
 			{{-1, ERROR, 0}, {0, SHIFT, 1}, },
-			{{-1, ERROR, 1}, {32, SHIFT, 3}, },
-			{{-1, ERROR, 2}, {44, ACCEPT, -1}, },
-			{{-1, ERROR, 3}, {0, SHIFT, 4}, {38, SHIFT, 5}, },
-			{{-1, ERROR, 4}, {29, SHIFT, 7}, },
-			{{-1, REDUCE, 27}, },
-			{{-1, ERROR, 6}, {0, SHIFT, 8}, {38, SHIFT, 9}, },
+			{{-1, ERROR, 1}, {34, SHIFT, 3}, },
+			{{-1, ERROR, 2}, {46, ACCEPT, -1}, },
+			{{-1, ERROR, 3}, {0, SHIFT, 4}, {40, SHIFT, 5}, },
+			{{-1, ERROR, 4}, {31, SHIFT, 7}, },
+			{{-1, REDUCE, 29}, },
+			{{-1, ERROR, 6}, {0, SHIFT, 8}, {40, SHIFT, 9}, },
 			{{-1, ERROR, 7}, {0, SHIFT, 11}, },
-			{{-1, ERROR, 8}, {28, SHIFT, 13}, },
-			{{-1, REDUCE, 25}, },
+			{{-1, ERROR, 8}, {30, SHIFT, 13}, },
+			{{-1, REDUCE, 27}, },
 			{{-1, ERROR, 10}, {1, SHIFT, 14}, },
 			{{-1, ERROR, 11}, {4, SHIFT, 15}, {6, SHIFT, 16}, },
-			{{-1, ERROR, 12}, {0, SHIFT, 4}, {38, SHIFT, 5}, },
+			{{-1, ERROR, 12}, {0, SHIFT, 4}, {40, SHIFT, 5}, },
 			{{-1, ERROR, 13}, {0, SHIFT, 18}, },
 			{{-1, REDUCE, 0}, },
-			{{-1, ERROR, 15}, {43, SHIFT, 20}, },
-			{{-1, ERROR, 16}, {43, SHIFT, 21}, },
+			{{-1, ERROR, 15}, {45, SHIFT, 20}, },
+			{{-1, ERROR, 16}, {45, SHIFT, 21}, },
 			{{-1, ERROR, 17}, {1, SHIFT, 22}, },
 			{{-1, ERROR, 18}, {3, SHIFT, 23}, },
-			{{-1, ERROR, 19}, {0, SHIFT, 8}, {38, SHIFT, 9}, },
-			{{-1, ERROR, 20}, {39, SHIFT, 25}, {40, SHIFT, 26}, {41, SHIFT, 27}, },
-			{{-1, ERROR, 21}, {39, SHIFT, 25}, {40, SHIFT, 26}, {41, SHIFT, 27}, },
-			{{-1, REDUCE, 26}, },
-			{{-1, ERROR, 23}, {43, SHIFT, 30}, },
+			{{-1, ERROR, 19}, {0, SHIFT, 8}, {40, SHIFT, 9}, },
+			{{-1, ERROR, 20}, {41, SHIFT, 25}, {42, SHIFT, 26}, {43, SHIFT, 27}, },
+			{{-1, ERROR, 21}, {41, SHIFT, 25}, {42, SHIFT, 26}, {43, SHIFT, 27}, },
+			{{-1, REDUCE, 28}, },
+			{{-1, ERROR, 23}, {45, SHIFT, 30}, },
 			{{-1, ERROR, 24}, {1, SHIFT, 31}, },
-			{{-1, REDUCE, 38}, },
-			{{-1, REDUCE, 39}, },
 			{{-1, REDUCE, 40}, },
-			{{-1, ERROR, 28}, {42, SHIFT, 32}, },
+			{{-1, REDUCE, 41}, },
+			{{-1, REDUCE, 42}, },
+			{{-1, ERROR, 28}, {44, SHIFT, 32}, },
 			{{-1, ERROR, 29}, {1, SHIFT, 33}, },
-			{{-1, ERROR, 30}, {39, SHIFT, 25}, {40, SHIFT, 26}, {41, SHIFT, 27}, },
-			{{-1, REDUCE, 24}, },
+			{{-1, ERROR, 30}, {41, SHIFT, 25}, {42, SHIFT, 26}, {43, SHIFT, 27}, },
+			{{-1, REDUCE, 26}, },
 			{{-1, ERROR, 32}, {1, SHIFT, 35}, },
+			{{-1, REDUCE, 36}, },
+			{{-1, ERROR, 34}, {0, SHIFT, 4}, {40, SHIFT, 5}, },
+			{{-1, REDUCE, 35}, },
+			{{-1, ERROR, 36}, {0, SHIFT, 4}, {40, SHIFT, 5}, },
+			{{-1, ERROR, 37}, {0, SHIFT, 38}, },
+			{{-1, ERROR, 38}, {2, SHIFT, 41}, {23, SHIFT, 42}, {24, SHIFT, 43}, {25, SHIFT, 44}, {26, SHIFT, 45}, {27, SHIFT, 46}, {28, SHIFT, 47}, {29, SHIFT, 48}, },
+			{{-1, ERROR, 39}, {1, SHIFT, 49}, },
+			{{-1, REDUCE, 25}, },
+			{{-1, ERROR, 41}, {45, SHIFT, 50}, },
+			{{-1, ERROR, 42}, {0, SHIFT, 51}, },
+			{{-1, ERROR, 43}, {0, SHIFT, 51}, },
+			{{-1, ERROR, 44}, {0, SHIFT, 54}, {40, SHIFT, 55}, },
+			{{-1, ERROR, 45}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 46}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 47}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 48}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
 			{{-1, REDUCE, 34}, },
-			{{-1, ERROR, 34}, {0, SHIFT, 4}, {38, SHIFT, 5}, },
+			{{-1, ERROR, 50}, {0, SHIFT, 66}, {40, SHIFT, 67}, },
+			{{-1, ERROR, 51}, {35, SHIFT, 69}, {36, SHIFT, 70}, },
+			{{-1, ERROR, 52}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 53}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 54}, {33, SHIFT, 73}, },
 			{{-1, REDUCE, 33}, },
-			{{-1, ERROR, 36}, {0, SHIFT, 4}, {38, SHIFT, 5}, },
-			{{-1, ERROR, 37}, {0, SHIFT, 38}, },
-			{{-1, ERROR, 38}, {2, SHIFT, 41}, {22, SHIFT, 42}, {23, SHIFT, 43}, {24, SHIFT, 44}, {25, SHIFT, 45}, {26, SHIFT, 46}, {27, SHIFT, 47}, },
-			{{-1, ERROR, 39}, {1, SHIFT, 48}, },
-			{{-1, REDUCE, 23}, },
-			{{-1, ERROR, 41}, {43, SHIFT, 49}, },
-			{{-1, ERROR, 42}, {0, SHIFT, 50}, },
-			{{-1, ERROR, 43}, {0, SHIFT, 52}, {38, SHIFT, 53}, },
-			{{-1, ERROR, 44}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 45}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 46}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 47}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, REDUCE, 32}, },
-			{{-1, ERROR, 49}, {0, SHIFT, 64}, {38, SHIFT, 65}, },
-			{{-1, ERROR, 50}, {33, SHIFT, 67}, {34, SHIFT, 68}, },
-			{{-1, ERROR, 51}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 52}, {31, SHIFT, 70}, },
-			{{-1, REDUCE, 31}, },
-			{{-1, ERROR, 54}, {1, SHIFT, 71}, },
-			{{-1, ERROR, 55}, {7, SHIFT, 72}, {8, SHIFT, 73}, {9, SHIFT, 74}, {10, SHIFT, 75}, {11, SHIFT, 76}, {13, SHIFT, 77}, {16, SHIFT, 78}, {17, SHIFT, 79}, {18, SHIFT, 80}, {19, SHIFT, 81}, {20, SHIFT, 82}, },
-			{{-1, REDUCE, 12}, },
+			{{-1, ERROR, 56}, {1, SHIFT, 74}, },
+			{{-1, ERROR, 57}, {7, SHIFT, 75}, {8, SHIFT, 76}, {9, SHIFT, 77}, {10, SHIFT, 78}, {11, SHIFT, 79}, {13, SHIFT, 80}, {16, SHIFT, 81}, {17, SHIFT, 82}, {18, SHIFT, 83}, {19, SHIFT, 84}, {20, SHIFT, 85}, {21, SHIFT, 86}, },
 			{{-1, REDUCE, 13}, },
-			{{-1, REDUCE, 15}, },
 			{{-1, REDUCE, 14}, },
-			{{-1, ERROR, 60}, {1, SHIFT, 83}, },
-			{{-1, ERROR, 61}, {1, SHIFT, 84}, },
-			{{-1, ERROR, 62}, {0, SHIFT, 38}, },
-			{{-1, ERROR, 63}, {0, SHIFT, 38}, },
-			{{-1, ERROR, 64}, {30, SHIFT, 87}, },
-			{{-1, REDUCE, 29}, },
-			{{-1, ERROR, 66}, {1, SHIFT, 88}, },
-			{{-1, ERROR, 67}, {43, SHIFT, 89}, },
-			{{-1, ERROR, 68}, {43, SHIFT, 90}, },
-			{{-1, ERROR, 69}, {1, SHIFT, 91}, },
-			{{-1, ERROR, 70}, {0, SHIFT, 38}, },
+			{{-1, REDUCE, 16}, },
+			{{-1, REDUCE, 15}, },
+			{{-1, ERROR, 62}, {1, SHIFT, 87}, },
+			{{-1, ERROR, 63}, {1, SHIFT, 88}, },
+			{{-1, ERROR, 64}, {0, SHIFT, 38}, },
+			{{-1, ERROR, 65}, {0, SHIFT, 38}, },
+			{{-1, ERROR, 66}, {32, SHIFT, 91}, },
+			{{-1, REDUCE, 31}, },
+			{{-1, ERROR, 68}, {1, SHIFT, 92}, },
+			{{-1, ERROR, 69}, {45, SHIFT, 93}, },
+			{{-1, ERROR, 70}, {45, SHIFT, 94}, },
+			{{-1, ERROR, 71}, {1, SHIFT, 95}, },
+			{{-1, ERROR, 72}, {1, SHIFT, 96}, },
+			{{-1, ERROR, 73}, {0, SHIFT, 38}, },
+			{{-1, REDUCE, 19}, },
+			{{-1, ERROR, 75}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 76}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 77}, {0, SHIFT, 100}, },
+			{{-1, ERROR, 78}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 79}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 80}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 81}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 82}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 83}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 84}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 85}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 86}, {0, SHIFT, 51}, },
+			{{-1, REDUCE, 20}, },
+			{{-1, REDUCE, 21}, },
+			{{-1, ERROR, 89}, {0, SHIFT, 38}, {40, SHIFT, 111}, },
+			{{-1, ERROR, 90}, {1, SHIFT, 113}, },
+			{{-1, ERROR, 91}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, REDUCE, 39}, },
+			{{-1, ERROR, 93}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 94}, {1, SHIFT, 116}, },
 			{{-1, REDUCE, 17}, },
-			{{-1, ERROR, 72}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 73}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 74}, {0, SHIFT, 95}, },
-			{{-1, ERROR, 75}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 76}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 77}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 78}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 79}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 80}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 81}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 82}, {0, SHIFT, 50}, },
 			{{-1, REDUCE, 18}, },
-			{{-1, REDUCE, 19}, },
-			{{-1, ERROR, 85}, {0, SHIFT, 38}, {38, SHIFT, 105}, },
-			{{-1, ERROR, 86}, {1, SHIFT, 107}, },
-			{{-1, ERROR, 87}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, REDUCE, 37}, },
-			{{-1, ERROR, 89}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 90}, {1, SHIFT, 110}, },
-			{{-1, REDUCE, 16}, },
-			{{-1, ERROR, 92}, {0, SHIFT, 52}, {38, SHIFT, 53}, },
-			{{-1, ERROR, 93}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 94}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 95}, {2, SHIFT, 41}, },
-			{{-1, ERROR, 96}, {1, SHIFT, 114}, },
-			{{-1, ERROR, 97}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 98}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 99}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 100}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 101}, {1, SHIFT, 119}, },
-			{{-1, ERROR, 102}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 103}, {0, SHIFT, 55}, {35, SHIFT, 56}, {36, SHIFT, 57}, {37, SHIFT, 58}, {42, SHIFT, 59}, },
-			{{-1, ERROR, 104}, {1, SHIFT, 122}, },
-			{{-1, ERROR, 105}, {1, SHIFT, 123}, },
-			{{-1, ERROR, 106}, {1, SHIFT, 124}, },
-			{{-1, REDUCE, 22}, },
-			{{-1, ERROR, 108}, {0, SHIFT, 64}, {38, SHIFT, 65}, },
-			{{-1, ERROR, 109}, {1, SHIFT, 126}, },
-			{{-1, REDUCE, 36}, },
-			{{-1, ERROR, 111}, {1, SHIFT, 127}, },
-			{{-1, ERROR, 112}, {1, SHIFT, 128}, },
-			{{-1, ERROR, 113}, {1, SHIFT, 129}, },
-			{{-1, REDUCE, 10}, },
-			{{-1, ERROR, 115}, {1, SHIFT, 130}, },
-			{{-1, ERROR, 116}, {1, SHIFT, 131}, },
-			{{-1, ERROR, 117}, {1, SHIFT, 132}, },
-			{{-1, ERROR, 118}, {1, SHIFT, 133}, },
-			{{-1, REDUCE, 9}, },
-			{{-1, ERROR, 120}, {1, SHIFT, 134}, },
-			{{-1, ERROR, 121}, {1, SHIFT, 135}, },
+			{{-1, ERROR, 97}, {0, SHIFT, 54}, {40, SHIFT, 55}, },
+			{{-1, ERROR, 98}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 99}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 100}, {2, SHIFT, 41}, },
+			{{-1, ERROR, 101}, {1, SHIFT, 120}, },
+			{{-1, ERROR, 102}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 103}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 104}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 105}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 106}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 107}, {1, SHIFT, 126}, },
+			{{-1, ERROR, 108}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 109}, {0, SHIFT, 57}, {37, SHIFT, 58}, {38, SHIFT, 59}, {39, SHIFT, 60}, {44, SHIFT, 61}, },
+			{{-1, ERROR, 110}, {1, SHIFT, 129}, },
+			{{-1, ERROR, 111}, {1, SHIFT, 130}, },
+			{{-1, ERROR, 112}, {1, SHIFT, 131}, },
+			{{-1, REDUCE, 24}, },
+			{{-1, ERROR, 114}, {0, SHIFT, 66}, {40, SHIFT, 67}, },
+			{{-1, ERROR, 115}, {1, SHIFT, 133}, },
+			{{-1, REDUCE, 38}, },
+			{{-1, ERROR, 117}, {1, SHIFT, 134}, },
+			{{-1, ERROR, 118}, {1, SHIFT, 135}, },
+			{{-1, ERROR, 119}, {1, SHIFT, 136}, },
 			{{-1, REDUCE, 11}, },
-			{{-1, REDUCE, 21}, },
-			{{-1, REDUCE, 20}, },
-			{{-1, ERROR, 125}, {1, SHIFT, 136}, },
-			{{-1, REDUCE, 35}, },
-			{{-1, REDUCE, 30}, },
+			{{-1, ERROR, 121}, {1, SHIFT, 137}, },
+			{{-1, ERROR, 122}, {1, SHIFT, 138}, },
+			{{-1, ERROR, 123}, {1, SHIFT, 139}, },
+			{{-1, ERROR, 124}, {1, SHIFT, 140}, },
+			{{-1, ERROR, 125}, {1, SHIFT, 141}, },
+			{{-1, REDUCE, 10}, },
+			{{-1, ERROR, 127}, {1, SHIFT, 142}, },
+			{{-1, ERROR, 128}, {1, SHIFT, 143}, },
+			{{-1, REDUCE, 12}, },
+			{{-1, REDUCE, 23}, },
+			{{-1, REDUCE, 22}, },
+			{{-1, ERROR, 132}, {1, SHIFT, 144}, },
+			{{-1, REDUCE, 37}, },
+			{{-1, REDUCE, 32}, },
 			{{-1, REDUCE, 1}, },
 			{{-1, REDUCE, 2}, },
 			{{-1, REDUCE, 3}, },
@@ -1752,21 +1835,22 @@ public class Parser
 			{{-1, REDUCE, 6}, },
 			{{-1, REDUCE, 7}, },
 			{{-1, REDUCE, 8}, },
-			{{-1, REDUCE, 28}, },
+			{{-1, REDUCE, 9}, },
+			{{-1, REDUCE, 30}, },
         };*/
     private static int[][][] gotoTable;
 /*      {
 			{{-1, 2}, },
-			{{-1, 60}, {45, 61}, {46, 62}, {47, 63}, {51, 69}, {72, 93}, {73, 94}, {75, 97}, {76, 98}, {77, 99}, {78, 100}, {79, 101}, {80, 102}, {81, 103}, {87, 108}, {89, 109}, {93, 112}, {94, 113}, {97, 115}, {98, 116}, {99, 117}, {100, 118}, {102, 120}, {103, 121}, },
-			{{-1, 39}, {62, 85}, {63, 86}, {70, 92}, {85, 106}, },
+			{{-1, 62}, {46, 63}, {47, 64}, {48, 65}, {52, 71}, {53, 72}, {75, 98}, {76, 99}, {78, 102}, {79, 103}, {80, 104}, {81, 105}, {82, 106}, {83, 107}, {84, 108}, {85, 109}, {91, 114}, {93, 115}, {98, 118}, {99, 119}, {102, 121}, {103, 122}, {104, 123}, {105, 124}, {106, 125}, {108, 127}, {109, 128}, },
+			{{-1, 39}, {64, 89}, {65, 90}, {73, 97}, {89, 112}, },
 			{{-1, 10}, {19, 24}, },
 			{{-1, 6}, {12, 17}, {34, 36}, {36, 37}, },
-			{{-1, 66}, {108, 125}, },
-			{{-1, 54}, {92, 111}, },
+			{{-1, 68}, {114, 132}, },
+			{{-1, 56}, {97, 117}, },
 			{{-1, 19}, },
 			{{-1, 12}, },
-			{{-1, 51}, {82, 104}, },
-			{{-1, 40}, {74, 96}, },
+			{{-1, 52}, {43, 53}, {86, 110}, },
+			{{-1, 40}, {77, 101}, },
 			{{-1, 28}, {21, 29}, {30, 34}, },
         };*/
     private static String[] errorMessages;
@@ -1785,11 +1869,11 @@ public class Parser
 			"expecting: 'entier', 'bool', 'nul'",
 			"expecting: '(', ')', 'null', integer",
 			"expecting: integer",
-			"expecting: 'SaAppel', 'SaInstAffect', 'SaInstBloc', 'SaInstEcriture', 'SaInstRetour', 'SaInstSi', 'SaInstTantQue'",
+			"expecting: 'SaAppel', 'SaInstAffect', 'SaIncr', 'SaInstBloc', 'SaInstEcriture', 'SaInstRetour', 'SaInstSi', 'SaInstTantQue'",
 			"expecting: '(', 'faux', 'vrai', 'lire', integer",
 			"expecting: 'SaVarIndicee', 'SaVarSimple'",
 			"expecting: 'SaLInst'",
-			"expecting: 'SaExpAdd', 'SaExpAnd', 'SaExpAppel', 'SaExpDiv', 'SaExpEqual', 'SaExpInf', 'SaExpMult', 'SaExpNot', 'SaExpOr', 'SaExpSub', 'SaExpVar'",
+			"expecting: 'SaExpAdd', 'SaExpAnd', 'SaExpAppel', 'SaExpDiv', 'SaExpEqual', 'SaExpInf', 'SaExpMult', 'SaExpModulo', 'SaExpNot', 'SaExpOr', 'SaExpSub', 'SaExpVar'",
 			"expecting: '(', ')', 'faux', 'vrai', 'lire', 'null', integer",
 			"expecting: 'SaLExp'",
 			"expecting: 'SaAppel'",
@@ -1797,7 +1881,7 @@ public class Parser
         };*/
     private static int[] errors;
 /*      {
-			0, 1, 2, 3, 4, 5, 3, 0, 6, 7, 7, 8, 3, 0, 2, 9, 9, 7, 10, 3, 11, 11, 5, 9, 7, 12, 12, 12, 13, 7, 11, 7, 7, 3, 3, 3, 3, 0, 14, 7, 5, 9, 0, 3, 15, 15, 15, 15, 3, 3, 16, 15, 17, 7, 7, 18, 19, 19, 19, 19, 7, 7, 0, 0, 20, 7, 7, 9, 9, 7, 0, 5, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 0, 5, 5, 3, 7, 15, 5, 15, 7, 5, 3, 15, 15, 21, 7, 15, 15, 15, 15, 7, 15, 15, 7, 7, 7, 5, 3, 7, 22, 7, 7, 7, 19, 7, 7, 7, 7, 19, 7, 7, 19, 5, 5, 7, 22, 7, 19, 19, 19, 19, 19, 19, 19, 19, 7, 
+			0, 1, 2, 3, 4, 5, 3, 0, 6, 7, 7, 8, 3, 0, 2, 9, 9, 7, 10, 3, 11, 11, 5, 9, 7, 12, 12, 12, 13, 7, 11, 7, 7, 3, 3, 3, 3, 0, 14, 7, 5, 9, 0, 0, 3, 15, 15, 15, 15, 3, 3, 16, 15, 15, 17, 7, 7, 18, 19, 19, 19, 19, 7, 7, 0, 0, 20, 7, 7, 9, 9, 7, 7, 0, 5, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 5, 5, 3, 7, 15, 5, 15, 7, 5, 5, 3, 15, 15, 21, 7, 15, 15, 15, 15, 15, 7, 15, 15, 7, 7, 7, 5, 3, 7, 22, 7, 7, 7, 19, 7, 7, 7, 7, 7, 19, 7, 7, 19, 5, 5, 7, 22, 7, 19, 19, 19, 19, 19, 19, 19, 19, 19, 7, 
         };*/
 
     static 
diff --git a/src/saParser/parser/TokenIndex.java b/src/saParser/parser/TokenIndex.java
index c7c5f32..9e14b98 100644
--- a/src/saParser/parser/TokenIndex.java
+++ b/src/saParser/parser/TokenIndex.java
@@ -112,170 +112,182 @@ class TokenIndex extends AnalysisAdapter
     }
 
     @Override
-    public void caseTSaexpnot(@SuppressWarnings("unused") TSaexpnot node)
+    public void caseTSaexpmodulo(@SuppressWarnings("unused") TSaexpmodulo node)
     {
         this.index = 17;
     }
 
     @Override
-    public void caseTSaexpor(@SuppressWarnings("unused") TSaexpor node)
+    public void caseTSaexpnot(@SuppressWarnings("unused") TSaexpnot node)
     {
         this.index = 18;
     }
 
     @Override
-    public void caseTSaexpsub(@SuppressWarnings("unused") TSaexpsub node)
+    public void caseTSaexpor(@SuppressWarnings("unused") TSaexpor node)
     {
         this.index = 19;
     }
 
     @Override
-    public void caseTSaexpvar(@SuppressWarnings("unused") TSaexpvar node)
+    public void caseTSaexpsub(@SuppressWarnings("unused") TSaexpsub node)
     {
         this.index = 20;
     }
 
     @Override
-    public void caseTSaexpvrai(@SuppressWarnings("unused") TSaexpvrai node)
+    public void caseTSaexpvar(@SuppressWarnings("unused") TSaexpvar node)
     {
         this.index = 21;
     }
 
     @Override
-    public void caseTSainstaffect(@SuppressWarnings("unused") TSainstaffect node)
+    public void caseTSaexpvrai(@SuppressWarnings("unused") TSaexpvrai node)
     {
         this.index = 22;
     }
 
     @Override
-    public void caseTSainstbloc(@SuppressWarnings("unused") TSainstbloc node)
+    public void caseTSainstaffect(@SuppressWarnings("unused") TSainstaffect node)
     {
         this.index = 23;
     }
 
     @Override
-    public void caseTSainstecriture(@SuppressWarnings("unused") TSainstecriture node)
+    public void caseTSaincr(@SuppressWarnings("unused") TSaincr node)
     {
         this.index = 24;
     }
 
     @Override
-    public void caseTSainstretour(@SuppressWarnings("unused") TSainstretour node)
+    public void caseTSainstbloc(@SuppressWarnings("unused") TSainstbloc node)
     {
         this.index = 25;
     }
 
     @Override
-    public void caseTSainstsi(@SuppressWarnings("unused") TSainstsi node)
+    public void caseTSainstecriture(@SuppressWarnings("unused") TSainstecriture node)
     {
         this.index = 26;
     }
 
     @Override
-    public void caseTSainsttantque(@SuppressWarnings("unused") TSainsttantque node)
+    public void caseTSainstretour(@SuppressWarnings("unused") TSainstretour node)
     {
         this.index = 27;
     }
 
     @Override
-    public void caseTSaldecfonc(@SuppressWarnings("unused") TSaldecfonc node)
+    public void caseTSainstsi(@SuppressWarnings("unused") TSainstsi node)
     {
         this.index = 28;
     }
 
     @Override
-    public void caseTSaldecvar(@SuppressWarnings("unused") TSaldecvar node)
+    public void caseTSainsttantque(@SuppressWarnings("unused") TSainsttantque node)
     {
         this.index = 29;
     }
 
     @Override
-    public void caseTSalexp(@SuppressWarnings("unused") TSalexp node)
+    public void caseTSaldecfonc(@SuppressWarnings("unused") TSaldecfonc node)
     {
         this.index = 30;
     }
 
     @Override
-    public void caseTSalinst(@SuppressWarnings("unused") TSalinst node)
+    public void caseTSaldecvar(@SuppressWarnings("unused") TSaldecvar node)
     {
         this.index = 31;
     }
 
     @Override
-    public void caseTSaprog(@SuppressWarnings("unused") TSaprog node)
+    public void caseTSalexp(@SuppressWarnings("unused") TSalexp node)
     {
         this.index = 32;
     }
 
     @Override
-    public void caseTSavarindicee(@SuppressWarnings("unused") TSavarindicee node)
+    public void caseTSalinst(@SuppressWarnings("unused") TSalinst node)
     {
         this.index = 33;
     }
 
     @Override
-    public void caseTSavarsimple(@SuppressWarnings("unused") TSavarsimple node)
+    public void caseTSaprog(@SuppressWarnings("unused") TSaprog node)
     {
         this.index = 34;
     }
 
     @Override
-    public void caseTFaux(@SuppressWarnings("unused") TFaux node)
+    public void caseTSavarindicee(@SuppressWarnings("unused") TSavarindicee node)
     {
         this.index = 35;
     }
 
     @Override
-    public void caseTVrai(@SuppressWarnings("unused") TVrai node)
+    public void caseTSavarsimple(@SuppressWarnings("unused") TSavarsimple node)
     {
         this.index = 36;
     }
 
     @Override
-    public void caseTLire(@SuppressWarnings("unused") TLire node)
+    public void caseTFaux(@SuppressWarnings("unused") TFaux node)
     {
         this.index = 37;
     }
 
     @Override
-    public void caseTNull(@SuppressWarnings("unused") TNull node)
+    public void caseTVrai(@SuppressWarnings("unused") TVrai node)
     {
         this.index = 38;
     }
 
     @Override
-    public void caseTEntier(@SuppressWarnings("unused") TEntier node)
+    public void caseTLire(@SuppressWarnings("unused") TLire node)
     {
         this.index = 39;
     }
 
     @Override
-    public void caseTBool(@SuppressWarnings("unused") TBool node)
+    public void caseTNull(@SuppressWarnings("unused") TNull node)
     {
         this.index = 40;
     }
 
     @Override
-    public void caseTNul(@SuppressWarnings("unused") TNul node)
+    public void caseTEntier(@SuppressWarnings("unused") TEntier node)
     {
         this.index = 41;
     }
 
     @Override
-    public void caseTInteger(@SuppressWarnings("unused") TInteger node)
+    public void caseTBool(@SuppressWarnings("unused") TBool node)
     {
         this.index = 42;
     }
 
     @Override
-    public void caseTId(@SuppressWarnings("unused") TId node)
+    public void caseTNul(@SuppressWarnings("unused") TNul node)
     {
         this.index = 43;
     }
 
     @Override
-    public void caseEOF(@SuppressWarnings("unused") EOF node)
+    public void caseTInteger(@SuppressWarnings("unused") TInteger node)
     {
         this.index = 44;
     }
+
+    @Override
+    public void caseTId(@SuppressWarnings("unused") TId node)
+    {
+        this.index = 45;
+    }
+
+    @Override
+    public void caseEOF(@SuppressWarnings("unused") EOF node)
+    {
+        this.index = 46;
+    }
 }
diff --git a/src/saParser/parser/parser.dat b/src/saParser/parser/parser.dat
index ab0f40aba3c0985f37bdb0b822ad9f1dfab43c82..e64a05e0052df0e5319065a9509c0f8e150ee0be 100644
GIT binary patch
literal 8160
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
NNDa&kkT@aC4gmUxB`W{`

literal 7678
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
B>-hix

-- 
GitLab