improve resume/return management 63/11563/7
Antoine ELIAS [Wed, 22 May 2013 16:04:32 +0000 (18:04 +0200)]
Change-Id: Id1f07c72607c5e2506e5143beb814b0497c39fe4

34 files changed:
scilab/modules/ast/ast.vcxproj
scilab/modules/ast/includes/returnexp.hxx
scilab/modules/ast/includes/run_AssignExp.hxx
scilab/modules/ast/includes/run_CallExp.hxx
scilab/modules/ast/includes/run_MatrixExp.hxx
scilab/modules/ast/includes/run_OpExp.hxx
scilab/modules/ast/includes/runvisitor.hxx
scilab/modules/ast/src/cpp/visitor_common.cpp
scilab/modules/boolean/src/cpp/boolean_gw.vcxproj
scilab/modules/core/Makefile.am
scilab/modules/core/Makefile.in
scilab/modules/core/core_yasp.vcxproj
scilab/modules/core/includes/core_gw.hxx
scilab/modules/core/sci_gateway/cpp/core_gw.cpp
scilab/modules/core/sci_gateway/cpp/core_gw.vcxproj
scilab/modules/core/sci_gateway/cpp/core_gw.vcxproj.filters
scilab/modules/core/sci_gateway/cpp/sci_resume.cpp [deleted file]
scilab/modules/differential_equations/src/c/differential_equations.vcxproj
scilab/modules/elementary_functions/sci_gateway/cpp/elem_func_gw/elem_func_gw.vcxproj
scilab/modules/fileio/sci_gateway/cpp/fileio_gw.vcxproj
scilab/modules/functions/sci_gateway/cpp/functions_gw.vcxproj
scilab/modules/functions_manager/functions_manager.vcxproj
scilab/modules/graphics/sci_gateway/cpp/graphics_gw.vcxproj
scilab/modules/linear_algebra/sci_gateway/cpp/linear_algebra_gw.vcxproj
scilab/modules/mexlib/src/libmat/libmat.vcxproj
scilab/modules/mexlib/src/libmex/libmex.vcxproj
scilab/modules/output_stream/sci_gateway/cpp/output_stream_gw/output_stream_gw.vcxproj
scilab/modules/parse/src/bison/parsescilab.output
scilab/modules/parse/src/bison/parsescilab.yy
scilab/modules/parse/src/cpp/parsescilab.cpp
scilab/modules/parse/src/cpp/scanscilab.cpp
scilab/modules/parse/src/flex/scanscilab.ll
scilab/modules/polynomials/src/c/polynomials.vcxproj
scilab/modules/string/sci_gateway/cpp/string_gw.vcxproj

index 929ba30..1528db2 100644 (file)
     <ProjectReference Include="..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\types\typesmacro\typesmacro.vcxproj">
       <Project>{9252a034-7f22-4cb1-a634-4577da69f2d0}</Project>
     </ProjectReference>
index a1ea2de..62cce24 100644 (file)
 
 namespace ast
 {
-    /** \brief Abstract a Return Expression node.
-    **
-    ** \b Example: return or return plop */
-    class ReturnExp : public ControlExp
+/** \brief Abstract a Return Expression node.
+**
+** \b Example: return or return plop */
+class ReturnExp : public ControlExp
+{
+    /** \name Ctor & dtor.
+    ** \{ */
+public:
+    /** \brief Construct a Return Expression node.
+    ** \param location scanner position informations
+    ** \param exp the returned exp
+    */
+    ReturnExp (const Location& location, Exp  *exp)
+        : ControlExp (location),
+          _exp (exp),
+          _is_global(true)
     {
-        /** \name Ctor & dtor.
-        ** \{ */
-    public:
-        /** \brief Construct a Return Expression node.
-        ** \param location scanner position informations
-        ** \param exp the returned exp
-        */
-        ReturnExp (const Location& location, Exp  *exp) 
-            : ControlExp (location), 
-            _exp (exp),
-            _is_global(false)
-        {
-            if(exp)
-            {
-                _is_global = false;
-            }
-        }
-
-        ReturnExp (const Location& location) 
-            : ControlExp (location),
-            _exp (NULL),
-            _is_global(true)
+        if (exp)
         {
+            _is_global = false;
         }
+    }
 
-        virtual ~ReturnExp ()
-        {
-            if(_exp != NULL)
-            {
-                delete _exp;
-            }
-        }
+    ReturnExp (const Location& location)
+        : ControlExp (location),
+          _exp (NULL),
+          _is_global(true)
+    {
+    }
 
-        virtual ReturnExp* clone()
+    virtual ~ReturnExp ()
+    {
+        if (_exp != NULL)
         {
-            Location* newloc = const_cast<Location*>(&location_get())->clone();
-            ReturnExp* cloned = NULL;
-            if(is_global())
-            {
-                cloned = new ReturnExp(*newloc);
-            }
-            else
-            {
-                cloned = new ReturnExp(*newloc, exp_get().clone());
-            }
-
-            cloned->set_verbose(is_verbose());
-            return cloned;
+            delete _exp;
         }
+    }
 
-        /** \name Visitors entry point.
-        ** \{ */
-    public:
-        /** \brief Accept a const visitor \a v. */
-        virtual void accept (Visitor& v)
+    virtual ReturnExp* clone()
+    {
+        Location* newloc = const_cast<Location*>(&location_get())->clone();
+        ReturnExp* cloned = NULL;
+        if (is_global())
         {
-            v.visit (*this);
+            cloned = new ReturnExp(*newloc);
         }
-        /** \brief Accept a non-const visitor \a v. */
-        virtual void accept (ConstVisitor& v) const
+        else
         {
-            v.visit (*this);
+            cloned = new ReturnExp(*newloc, exp_get().clone());
         }
-        /** \} */
 
-        /** \name Accessors.
-        ** \{ */
-    public:
-        const Exp &    exp_get() const
-        {
-            return *_exp;
-        }
+        cloned->set_verbose(is_verbose());
+        return cloned;
+    }
 
-        Exp &  exp_get()
-        {
-            return *_exp;
-        }
+    /** \name Visitors entry point.
+    ** \{ */
+public:
+    /** \brief Accept a const visitor \a v. */
+    virtual void accept (Visitor& v)
+    {
+        v.visit (*this);
+    }
+    /** \brief Accept a non-const visitor \a v. */
+    virtual void accept (ConstVisitor& v) const
+    {
+        v.visit (*this);
+    }
+    /** \} */
+
+    /** \name Accessors.
+    ** \{ */
+public:
+    const Exp &        exp_get() const
+    {
+        return *_exp;
+    }
 
-        bool is_global() const
-        {
-            return _is_global;
-        }
-        /** \} */
+    Exp &      exp_get()
+    {
+        return *_exp;
+    }
+
+    bool is_global() const
+    {
+        return _is_global;
+    }
+    /** \} */
 
 
-    protected:
-        Exp            *_exp;
-        bool   _is_global;
-    };
+protected:
+    Exp                *_exp;
+    bool       _is_global;
+};
 
 } // namespace ast
 
index 50c85b8..269cf4e 100644 (file)
@@ -30,7 +30,7 @@ void visitprivate(const AssignExp  &e)
             InternalType *pIT = e.right_val_get();
             if (pIT == NULL)
             {
-                expected_size_set(1);
+                expected_setSize(1);
                 e.right_exp_get().accept(*this);
 
                 if (result_getSize() != 1)
@@ -67,7 +67,7 @@ void visitprivate(const AssignExp  &e)
             {
                 //ReturnExp so, put the value in the previous scope
                 symbol::Context::getInstance()->putInPreviousScope(pVar->name_get(), *pIT);
-                ((AssignExp*)&e)->break_set();
+                ((AssignExp*)&e)->return_set();
             }
             else
             {
@@ -88,7 +88,6 @@ void visitprivate(const AssignExp  &e)
         if (pCell)
         {
             InternalType *pIT;
-            bool bRet           = true;
             bool bNew           = false;
 
             //retrieve variable
@@ -225,7 +224,7 @@ void visitprivate(const AssignExp  &e)
             }
             //            delete piMaxDim;
             //            delete[] piDimSize;
-            for (int iArg = 0 ; iArg < pArgs->size() ; iArg++)
+            for (int iArg = 0 ; iArg < (int)pArgs->size() ; iArg++)
             {
                 if ((*pArgs)[iArg]->isDeletable())
                 {
@@ -400,7 +399,8 @@ void visitprivate(const AssignExp  &e)
                 else if (pIT->isStruct())
                 {
                     // a("b") = [] is not a deletion !!
-                    Struct* pStr = pIT->getAs<Struct>();
+
+                    //Struct* pStr = pIT->getAs<Struct>();
 
                     pOut = pIT->getAs<Struct>()->insert(pArgs, pITR);
                 }
@@ -683,8 +683,8 @@ void visitprivate(const AssignExp  &e)
                         in.push_back(pS);
                         in.push_back(pInsert);
 
-                        Function* pCall = (Function*)symbol::Context::getInstance()->get(symbol::Symbol(L"set"));
-                        Callable::ReturnValue ret =  pCall->call(in, opt, 1, out, this);
+                        Function* pCallSet = (Function*)symbol::Context::getInstance()->get(symbol::Symbol(L"set"));
+                        Callable::ReturnValue ret =  pCallSet->call(in, opt, 1, out, this);
                         if (ret == Callable::OK)
                         {
                             pRet = pIT;
@@ -707,7 +707,7 @@ void visitprivate(const AssignExp  &e)
                     //dest : variable where to insert data
                     //source : data to insert
 
-                    for (int i = 0 ; i < pArgs->size() ; i++)
+                    for (int i = 0 ; i < (int)pArgs->size() ; i++)
                     {
                         (*pArgs)[i]->IncreaseRef();
                         in.push_back((*pArgs)[i]);
@@ -729,7 +729,7 @@ void visitprivate(const AssignExp  &e)
 
                     pIT->DecreaseRef();
                     pInsert->DecreaseRef();
-                    for (int i = 0 ; i < pArgs->size() ; i++)
+                    for (int i = 0 ; i < (int)pArgs->size() ; i++)
                     {
                         (*pArgs)[i]->DecreaseRef();
                     }
@@ -760,10 +760,9 @@ void visitprivate(const AssignExp  &e)
                     {
                         //is not a(x) = y but something like a.b(x) = y
                         //so we have to retrieve struct and children to assign new value
-                        InternalType *pHead     = NULL;
                         InternalType* pMain     = NULL;
                         InternalType* pCurrent  = NULL;
-                        bool bOK = getStructFromExp(&pCall->name_get(), &pMain, &pCurrent, NULL, pOut);
+                        getStructFromExp(&pCall->name_get(), &pMain, &pCurrent, NULL, pOut);
                         //change pOut only to toString call
                         pOut = pMain;
                     }
@@ -800,7 +799,7 @@ void visitprivate(const AssignExp  &e)
             }
             //delete piMaxDim;
             //delete[] piDimSize;
-            for (int iArg = 0 ; iArg < pArgs->size() ; iArg++)
+            for (int iArg = 0 ; iArg < (int)pArgs->size() ; iArg++)
             {
                 if ((*pArgs)[iArg]->isDeletable())
                 {
@@ -820,7 +819,7 @@ void visitprivate(const AssignExp  &e)
 
             /*getting what to assign*/
             T exec;
-            exec.expected_size_set(iLhsCount);
+            exec.expected_setSize(iLhsCount);
             e.right_exp_get().accept(exec);
 
             if (exec.result_getSize() != iLhsCount)
@@ -853,7 +852,7 @@ void visitprivate(const AssignExp  &e)
             //a.b = x
             //a.b can be a struct or a tlist/mlist or a handle
             /*getting what to assign*/
-            expected_size_set(1);
+            expected_setSize(1);
             e.right_exp_get().accept(*this);
             InternalType *pIT = result_get();
             if (pIT->isImplicitList())
index 4778c10..dba08c3 100644 (file)
@@ -62,7 +62,7 @@ void visitprivate(const CallExp &e)
                 continue;
             }
 
-            expected_size_set(1);
+            expected_setSize(1);
             (*itExp)->accept (*this);
 
             if (result_get() == NULL)
@@ -105,7 +105,7 @@ void visitprivate(const CallExp &e)
         try
         {
             int iSaveExpectedSize = iRetCount;
-            expected_size_set(iSaveExpectedSize);
+            expected_setSize(iSaveExpectedSize);
             iRetCount = Max(1, iRetCount);
 
             //reset previous error before call function
@@ -114,7 +114,7 @@ void visitprivate(const CallExp &e)
             ConfigVariable::setVerbose(e.is_verbose());
             //call function
             types::Function::ReturnValue Ret = pCall->call(in, opt, iRetCount, out, this);
-            expected_size_set(iSaveExpectedSize);
+            expected_setSize(iSaveExpectedSize);
             result_clear();
 
             if (Ret == types::Callable::OK)
@@ -196,7 +196,7 @@ void visitprivate(const CallExp &e)
 
             //check if input data are use as output data
             bool bFind = false;
-            for (int i = 0 ; i < out.size() ; i++)
+            for (int i = 0 ; i < (int)out.size() ; i++)
             {
                 if (out[i] == in[k])
                 {
@@ -361,7 +361,7 @@ void visitprivate(const CallExp &e)
                         //create input argument list
 
                         //protect inputs
-                        for (int i = 0 ; i < pArgs->size() ; i++)
+                        for (int i = 0 ; i < (int)pArgs->size() ; i++)
                         {
                             (*pArgs)[i]->IncreaseRef();
                             in.push_back((*pArgs)[i]);
@@ -382,7 +382,7 @@ void visitprivate(const CallExp &e)
                             Overload::call(L"%l_e", in, 1, ResultList, this);
                         }
 
-                        for (int i = 0 ; i < pArgs->size() ; i++)
+                        for (int i = 0 ; i < (int)pArgs->size() ; i++)
                         {
                             (*pArgs)[i]->DecreaseRef();
                         }
@@ -449,7 +449,7 @@ void visitprivate(const CallExp &e)
                         //create input argument list
 
                         //protect inputs
-                        for (int i = 0 ; i < pArgs->size() ; i++)
+                        for (int i = 0 ; i < (int)pArgs->size() ; i++)
                         {
                             (*pArgs)[i]->IncreaseRef();
                             in.push_back((*pArgs)[i]);
@@ -470,7 +470,7 @@ void visitprivate(const CallExp &e)
                             Overload::call(L"%l_e", in, 1, ResultList, this);
                         }
 
-                        for (int i = 0 ; i < pArgs->size() ; i++)
+                        for (int i = 0 ; i < (int)pArgs->size() ; i++)
                         {
                             (*pArgs)[i]->DecreaseRef();
                         }
@@ -582,7 +582,7 @@ void visitprivate(const CallExp &e)
             }
 
             //clean pArgs return by GetArgumentList
-            for (int iArg = 0 ; iArg < pArgs->size() ; iArg++)
+            for (int iArg = 0 ; iArg < (int)pArgs->size() ; iArg++)
             {
                 if ((*pArgs)[iArg]->isDeletable())
                 {
@@ -682,7 +682,7 @@ void visitprivate(const CellCallExp &e)
             }
 
             //clean pArgs return by GetArgumentList
-            for (int iArg = 0 ; iArg < pArgs->size() ; iArg++)
+            for (int iArg = 0 ; iArg < (int)pArgs->size() ; iArg++)
             {
                 if ((*pArgs)[iArg]->isDeletable())
                 {
index 54517b1..13163b5 100644 (file)
@@ -68,12 +68,12 @@ void visitprivate(const MatrixExp &e)
                 if (pGT->isImplicitList() && pGT->getAs<ImplicitList>()->isComputable())
                 {
                     ImplicitList *pIL = pGT->getAs<ImplicitList>();
-                    InternalType* pIT = pIL->extractFullMatrix();
+                    InternalType* pIT2 = pIL->extractFullMatrix();
                     if (pGT->isDeletable())
                     {
                         delete pGT;
                     }
-                    pGT = pIT->getAs<GenericType>();
+                    pGT = pIT2->getAs<GenericType>();
                 }
 
                 if (pGT->isDouble() && pGT->getAs<Double>()->isEmpty())
index 9f87896..bad0c06 100644 (file)
@@ -296,6 +296,9 @@ void visitprivate(const LogicalOpExp &e)
                 pResult = GenericLogicalOr(pITL, pITR);
                 break;
             }
+
+            default :
+                break;
         }
         //overloading
         if (pResult == NULL)
index 2c79b18..ab69eb0 100644 (file)
@@ -132,7 +132,7 @@ public:
         }
     }
 
-    void expected_size_set(int _iSize)
+    void expected_setSize(int _iSize)
     {
         _excepted_result = _iSize;
     }
@@ -766,7 +766,6 @@ public :
 
         if (result_get()->isImplicitList())
         {
-            bool bNeedUpdate = false;
             InternalType* pIL = result_get();
             ImplicitList* pVar = pIL->getAs<ImplicitList>();
 
@@ -881,10 +880,34 @@ public :
 
     void visitprivate(const ReturnExp &e)
     {
-        if (e.is_global() == false)
+        //
+        if (e.is_global())
+        {
+            //return or resume
+            if (ConfigVariable::getPauseLevel() != 0)
+            {
+                ThreadId* pThreadId = ConfigVariable::getLastPausedThread();
+                if (pThreadId == NULL)
+                {
+                    //no paused thread, so just go leave
+                    return;
+                }
+
+                __threadId id = pThreadId->getId();
+                pThreadId->resume();
+                __WaitThreadDie(id);
+                return;
+            }
+        }
+        else
         {
             //return(x)
+
+            //in case of CallExp, we can return only one values
+            int iSaveExpectedSize = expected_getSize();
+            expected_setSize(1);
             e.exp_get().accept(*this);
+            expected_setSize(iSaveExpectedSize);
 
             if (result_getSize() == 1)
             {
@@ -899,21 +922,22 @@ public :
                     result_get(i)->IncreaseRef();
                 }
             }
-        }
 
-        if (result_getSize() == 1)
-        {
-            //unprotect variable
-            result_get()->DecreaseRef();
-        }
-        else
-        {
-            for (int i = 0 ; i < result_getSize() ; i++)
+            if (result_getSize() == 1)
             {
                 //unprotect variable
-                result_get(i)->DecreaseRef();
+                result_get()->DecreaseRef();
+            }
+            else
+            {
+                for (int i = 0 ; i < result_getSize() ; i++)
+                {
+                    //unprotect variable
+                    result_get(i)->DecreaseRef();
+                }
             }
         }
+
         const_cast<ReturnExp*>(&e)->return_set();
     }
 
@@ -1070,7 +1094,7 @@ public :
             {
                 //reset default values
                 result_set(NULL);
-                expected_size_set(-1);
+                expected_setSize(-1);
                 (*itExp)->accept(*this);
 
                 if (result_get() != NULL)
@@ -1087,9 +1111,9 @@ public :
                         {
                             //in this case of calling, we can return only one values
                             int iSaveExpectedSize = expected_getSize();
-                            expected_size_set(1);
+                            expected_setSize(1);
                             Function::ReturnValue Ret = pCall->call(in, opt, expected_getSize(), out, this);
-                            expected_size_set(iSaveExpectedSize);
+                            expected_setSize(iSaveExpectedSize);
 
                             if (Ret == Callable::OK)
                             {
@@ -1257,11 +1281,18 @@ public :
     {
         std::list<Exp *>::const_iterator it;
         int i = 0;
+
+        std::list<InternalType*> lstIT;
         for (it = e.exps_get().begin() ; it != e.exps_get().end() ; it++)
         {
             (*it)->accept(*this);
-            result_set(i, result_get()->clone());
-            i++;
+            lstIT.push_back(result_get()->clone());
+        }
+
+        std::list<InternalType*>::iterator itIT = lstIT.begin();
+        for (; itIT != lstIT.end(); itIT++)
+        {
+            result_set(i++, *itIT);
         }
     }
 
@@ -1368,6 +1399,8 @@ public :
                 case InternalType::RealUInt64 :
                     pReturn = notInt<UInt64, unsigned long long>(pIT->getAs<UInt64>());
                     break;
+                default :
+                    break;
             }
 
             if (result_get()->isDeletable())
@@ -1637,6 +1670,8 @@ public :
                     pReturn = pIntOut;
                     break;
                 }
+                default:
+                    break;
             }
 
             if (pVar->isDeletable())
index 0d5c821..3d29485 100644 (file)
@@ -123,6 +123,8 @@ static bool isIntTrue(InternalType* _pIT)
         {
             return isIntTrue(_pIT->getAs<UInt64>());
         }
+        default:
+            break;
     }
 
     return false;
@@ -697,7 +699,7 @@ bool getStructFromExp(const Exp* _pExp, types::InternalType** _pMain, types::Int
 
                 //create field "x"
                 std::wstring var = pVar->name_get().name_get();
-                bool bOK = pCurStr->addField(pVar->name_get().name_get());
+                pCurStr->addField(pVar->name_get().name_get());
                 if (*_pMain == NULL && _pIT != NULL)
                 {
                     //first stack, assign value to field and return main structure
@@ -705,7 +707,6 @@ bool getStructFromExp(const Exp* _pExp, types::InternalType** _pMain, types::Int
                     if (pArgs != NULL && pArgs->size() != 0)
                     {
                         //args returned by "parent"
-                        std::wstring var = pVar->name_get().name_get();
                         //be careful, extract functions copy values
 
                         Struct *pStr = pCurStr->extractWithoutClone(pArgs)->getAs<Struct>();
@@ -718,14 +719,12 @@ bool getStructFromExp(const Exp* _pExp, types::InternalType** _pMain, types::Int
                     }
                     else if (_pArgs == NULL || *_pArgs == NULL)
                     {
-                        std::wstring var = pVar->name_get().name_get();
                         //std::wcout << var << L" <- " << pIT->getTypeStr() << std::endl;
                         pCurStr->get(0)->set(pVar->name_get().name_get(), pIT);
                     }
                     else
                     {
                         Struct* pStr = new Struct(1, 1);
-                        std::wstring var = pVar->name_get().name_get();
                         pStr->addField(pVar->name_get().name_get());
                         pStr->get(0)->set(pVar->name_get().name_get(), pIT);
                         pCurStr->insertWithoutClone(*_pArgs, pStr->get(0));
@@ -774,8 +773,6 @@ bool getStructFromExp(const Exp* _pExp, types::InternalType** _pMain, types::Int
 
                         if (pArgs != NULL)
                         {
-                            std::wstring var = pVar->name_get().name_get();
-
                             Struct* pStepStr = pCurStr->extractWithoutClone(pArgs)->getAs<Struct>();
                             pStepStr->setCloneInCopyValue(false);
                             SingleStruct* pSS = pStepStr->get(0);
@@ -786,7 +783,6 @@ bool getStructFromExp(const Exp* _pExp, types::InternalType** _pMain, types::Int
                         }
                         else
                         {
-                            std::wstring var = pVar->name_get().name_get();
                             pCurStr->get(0)->set(pVar->name_get().name_get(), pStr);
                         }
                     }
index 6e74600..6e3617f 100644 (file)
     <ProjectReference Include="..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
index c24eada..8e6bed9 100644 (file)
@@ -233,7 +233,6 @@ GATEWAY_CPP_SOURCES =       \
        sci_gateway/cpp/sci_getmd5.cpp \
        sci_gateway/cpp/sci_error.cpp \
        sci_gateway/cpp/sci_pause.cpp \
-       sci_gateway/cpp/sci_resume.cpp \
        sci_gateway/cpp/sci_abort.cpp \
        sci_gateway/cpp/sci_who.cpp \
        sci_gateway/cpp/sci_stacksize.cpp \
index 663a19b..f40d08a 100644 (file)
@@ -324,10 +324,10 @@ am__objects_8 = libscicore_la-core_gw.lo \
        libscicore_la-sci_lasterror.lo libscicore_la-sci_getversion.lo \
        libscicore_la-sci_warning.lo libscicore_la-sci_getmd5.lo \
        libscicore_la-sci_error.lo libscicore_la-sci_pause.lo \
-       libscicore_la-sci_resume.lo libscicore_la-sci_abort.lo \
-       libscicore_la-sci_who.lo libscicore_la-sci_stacksize.lo \
-       libscicore_la-sci_format.lo libscicore_la-sci_sciargs.lo \
-       libscicore_la-sci_ieee.lo libscicore_la-sci_funcprot.lo
+       libscicore_la-sci_abort.lo libscicore_la-sci_who.lo \
+       libscicore_la-sci_stacksize.lo libscicore_la-sci_format.lo \
+       libscicore_la-sci_sciargs.lo libscicore_la-sci_ieee.lo \
+       libscicore_la-sci_funcprot.lo
 am_libscicore_la_OBJECTS = $(am__objects_6) $(am__objects_7) \
        $(am__objects_8)
 libscicore_la_OBJECTS = $(am_libscicore_la_OBJECTS)
@@ -777,7 +777,6 @@ GATEWAY_CPP_SOURCES = \
        sci_gateway/cpp/sci_getmd5.cpp \
        sci_gateway/cpp/sci_error.cpp \
        sci_gateway/cpp/sci_pause.cpp \
-       sci_gateway/cpp/sci_resume.cpp \
        sci_gateway/cpp/sci_abort.cpp \
        sci_gateway/cpp/sci_who.cpp \
        sci_gateway/cpp/sci_stacksize.cpp \
@@ -1172,7 +1171,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_predef.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_quit.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_readgateway.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_resume.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_return.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_sciargs.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscicore_la-sci_setbpt.Plo@am__quote@
@@ -2137,13 +2135,6 @@ libscicore_la-sci_pause.lo: sci_gateway/cpp/sci_pause.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscicore_la-sci_pause.lo `test -f 'sci_gateway/cpp/sci_pause.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_pause.cpp
 
-libscicore_la-sci_resume.lo: sci_gateway/cpp/sci_resume.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscicore_la-sci_resume.lo -MD -MP -MF $(DEPDIR)/libscicore_la-sci_resume.Tpo -c -o libscicore_la-sci_resume.lo `test -f 'sci_gateway/cpp/sci_resume.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_resume.cpp
-@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscicore_la-sci_resume.Tpo $(DEPDIR)/libscicore_la-sci_resume.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_resume.cpp' object='libscicore_la-sci_resume.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscicore_la-sci_resume.lo `test -f 'sci_gateway/cpp/sci_resume.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_resume.cpp
-
 libscicore_la-sci_abort.lo: sci_gateway/cpp/sci_abort.cpp
 @am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscicore_la-sci_abort.lo -MD -MP -MF $(DEPDIR)/libscicore_la-sci_abort.Tpo -c -o libscicore_la-sci_abort.lo `test -f 'sci_gateway/cpp/sci_abort.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_abort.cpp
 @am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscicore_la-sci_abort.Tpo $(DEPDIR)/libscicore_la-sci_abort.Plo
index 6cd425b..46038f6 100644 (file)
       <Project>{c456d5b8-8a32-496a-a2ee-164b0d734126}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
+    <ProjectReference Include="..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
index 89ecc4f..fbd81e9 100644 (file)
@@ -46,7 +46,6 @@ CPP_GATEWAY_PROTOTYPE(sci_warning);
 CPP_GATEWAY_PROTOTYPE(sci_getmd5);
 CPP_GATEWAY_PROTOTYPE(sci_error);
 CPP_GATEWAY_PROTOTYPE(sci_pause);
-CPP_GATEWAY_PROTOTYPE(sci_resume);
 CPP_GATEWAY_PROTOTYPE(sci_abort);
 CPP_GATEWAY_PROTOTYPE(sci_who);
 CPP_GATEWAY_PROTOTYPE(sci_stacksize);
index 6fe13fa..75ea4d3 100644 (file)
@@ -45,7 +45,6 @@ int CoreModule::Load()
     symbol::Context::getInstance()->addFunction(Function::createFunction(L"getmd5", &sci_getmd5, MODULE_NAME));
     symbol::Context::getInstance()->addFunction(Function::createFunction(L"error", &sci_error, MODULE_NAME));
     symbol::Context::getInstance()->addFunction(Function::createFunction(L"pause", &sci_pause, MODULE_NAME));
-    symbol::Context::getInstance()->addFunction(Function::createFunction(L"resume", &sci_resume, MODULE_NAME));
     symbol::Context::getInstance()->addFunction(Function::createFunction(L"abort", &sci_abort, MODULE_NAME));
     symbol::Context::getInstance()->addFunction(Function::createFunction(L"who", &sci_who, MODULE_NAME));
     symbol::Context::getInstance()->addFunction(Function::createFunction(L"stacksize", &sci_stacksize, MODULE_NAME));
index 6be576a..84398d0 100644 (file)
     <ClCompile Include="sci_lasterror.cpp" />
     <ClCompile Include="sci_pause.cpp" />
     <ClCompile Include="sci_quit.cpp" />
-    <ClCompile Include="sci_resume.cpp" />
     <ClCompile Include="sci_stacksize.cpp" />
     <ClCompile Include="sci_warning.cpp" />
     <ClCompile Include="sci_who.cpp" />
index b937564..e1886d4 100644 (file)
@@ -93,9 +93,6 @@
     <ClCompile Include="sci_quit.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="sci_resume.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="sci_stacksize.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/scilab/modules/core/sci_gateway/cpp/sci_resume.cpp b/scilab/modules/core/sci_gateway/cpp/sci_resume.cpp
deleted file mode 100644 (file)
index 9bf803e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- *  Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
- *
- *  This file must be used under the terms of the CeCILL.
- *  This source file is licensed as described in the file COPYING, which
- *  you should have received as part of this distribution.  The terms
- *  are also available at
- *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-#include "core_gw.hxx"
-#include "function.hxx"
-#include "runner.hxx"
-#include "threadId.hxx"
-#include "configvariable.hxx"
-
-extern "C"
-{
-#include "charEncoding.h"
-#include "localization.h"
-#include "Scierror.h"
-
-#include "Thread_Wrapper.h"
-}
-
-types::Function::ReturnValue sci_resume(types::typed_list &in, int _iRetCount, types::typed_list &out)
-{
-    if(in.size() != 0)
-    {
-        Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "resume", 0);
-        return types::Function::Error;
-    }
-
-    if(_iRetCount > 1)
-    {
-        Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "resume", 0, 1);
-        return types::Function::Error;
-    }
-
-    ThreadId* pThreadId = ConfigVariable::getLastPausedThread();
-    if (pThreadId == NULL)
-    {//no paused thread, so just go leave
-        return types::Function::OK;
-    }
-
-    __threadId id = pThreadId->getId();
-    pThreadId->resume();
-    __WaitThreadDie(id);
-
-    return types::Function::OK;
-}
index aa35244..5e318a8 100644 (file)
@@ -263,6 +263,9 @@ lib /DEF:"$(ProjectDir)differential_equations_f_Import.def" /SUBSYSTEM:WINDOWS /
     <ProjectReference Include="..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
     </ProjectReference>
index bf9ae1e..199894e 100644 (file)
@@ -324,6 +324,9 @@ lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACH
     <ProjectReference Include="..\..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -339,4 +342,4 @@ lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACH
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 56a2aac..f26750e 100644 (file)
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
index a5f31c0..5cd3c9e 100644 (file)
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
index f0adacb..fac6d39 100644 (file)
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
+    <ProjectReference Include="..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\time\sci_gateway\cpp\time_gw.vcxproj">
       <Project>{28305722-6486-481d-bd0f-b4398d8a09c5}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
index 86803aa..a87c16b 100644 (file)
@@ -67,6 +67,9 @@
     <ProjectReference Include="..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
     </ProjectReference>
index 4acf1bc..726acc1 100644 (file)
     <ProjectReference Include="..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
     </ProjectReference>
index 57e01c8..9607b20 100644 (file)
@@ -292,6 +292,9 @@ cd ..
     <ProjectReference Include="..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
     </ProjectReference>
index d00b843..2c8e1b1 100644 (file)
@@ -299,6 +299,9 @@ cd ..
     <ProjectReference Include="..\..\..\system_env\system_env.vcxproj">
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
     </ProjectReference>
index c091d85..2c4218c 100644 (file)
       <Project>{7ca60aef-9afa-4d06-af28-613c0aa27640}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\..\threads\threads.vcxproj">
+      <Project>{50a1ffc8-adc2-4d9e-a2d0-5dcd63188ae9}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\..\types\types.vcxproj">
       <Project>{64e090da-dcb5-4f4d-93d7-e88ddec9c2ef}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
index 2d601ad..b47608d 100644 (file)
@@ -1,22 +1,23 @@
-Terminals unused in grammar
+Terminaux inutilisés dans la grammaire
 
    "line break"
+   "spaces"
    "block comment"
    FUNCTIONCALL
 
 
-State 171 conflicts: 1 shift/reduce
-State 368 conflicts: 1 shift/reduce
+État 171 conflits: 1 décalage/réduction
+État 367 conflits: 1 décalage/réduction
 
 
-Grammar
+Grammaire
 
     0 $accept: program "end of file"
 
     1 program: expressions
     2        | "end of line" expressions
     3        | expressionLineBreak
-    4        | /* empty */
+    4        | /* vide */
 
     5 expressions: recursiveExpression
     6            | recursiveExpression expression
@@ -88,381 +89,381 @@ Grammar
    63             | ":"
    64             | variableDeclaration
    65             | ","
-   66             | "," "spaces"
-   67             | functionArgs "," variable
-   68             | functionArgs "," functionCall
-   69             | functionArgs "," ":"
-   70             | functionArgs "," variableDeclaration
-   71             | functionArgs ","
-   72             | "," functionArgs
-
-   73 functionDeclaration: "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   74                    | "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   75                    | "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   76                    | "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   77                    | "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   78                    | "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   79                    | "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   80                    | "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   81                    | "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   82                    | "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   83                    | "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   84                    | "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   85                    | "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   86                    | "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   87                    | "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   88                    | "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   89                    | "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   90                    | "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   91                    | "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   92                    | "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   93                    | "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   94                    | "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   95                    | "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   96                    | "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-
-   97 functionDeclarationReturns: idList
-
-   98 functionDeclarationArguments: "(" idList ")"
-   99                             | "(" ")"
-  100                             | /* empty */
-
-  101 idList: idList "," "identifier"
-  102       | "identifier"
-
-  103 functionDeclarationBreak: lineEnd
-  104                         | ";"
-  105                         | ";" "end of line"
-  106                         | ","
-  107                         | "," "end of line"
-
-  108 functionBody: expressions
-  109             | /* empty */
-
-  110 condition: functionCall
-  111          | variable
-
-  112 comparison: variable rightComparable
-  113           | functionCall rightComparable
-
-  114 rightComparable: "&" variable
-  115                | "&" functionCall
-  116                | "&" ":"
-  117                | "&&" variable
-  118                | "&&" functionCall
-  119                | "&&" ":"
-  120                | "|" variable
-  121                | "|" functionCall
-  122                | "|" ":"
-  123                | "||" variable
-  124                | "||" functionCall
-  125                | "||" ":"
-  126                | "==" variable
-  127                | "==" functionCall
-  128                | "==" ":"
-  129                | "<> or ~=" variable
-  130                | "<> or ~=" functionCall
-  131                | "<> or ~=" ":"
-  132                | ">" variable
-  133                | ">" functionCall
-  134                | ">" ":"
-  135                | "<" variable
-  136                | "<" functionCall
-  137                | "<" ":"
-  138                | ">=" variable
-  139                | ">=" functionCall
-  140                | ">=" ":"
-  141                | "<=" variable
-  142                | "<=" functionCall
-  143                | "<=" ":"
-
-  144 operation: variable rightOperand
-  145          | functionCall rightOperand
-  146          | "-" variable
-  147          | "-" functionCall
-  148          | "+" variable
-  149          | "+" functionCall
-  150          | variable "** or ^" variable
-  151          | variable "** or ^" functionCall
-  152          | functionCall "** or ^" variable
-  153          | functionCall "** or ^" functionCall
-  154          | variable ".^" variable
-  155          | variable ".^" functionCall
-  156          | functionCall ".^" variable
-  157          | functionCall ".^" functionCall
-  158          | variable "'"
-  159          | variable ".'"
-  160          | functionCall "'"
-  161          | functionCall ".'"
-
-  162 rightOperand: "+" variable
-  163             | "+" functionCall
-  164             | "-" variable
-  165             | "-" functionCall
-  166             | "*" variable
-  167             | "*" functionCall
-  168             | ".*" variable
-  169             | ".*" functionCall
-  170             | ".*." variable
-  171             | ".*." functionCall
-  172             | "*." variable
-  173             | "*." functionCall
-  174             | "/" variable
-  175             | "/" functionCall
-  176             | "./" variable
-  177             | "./" functionCall
-  178             | "./." variable
-  179             | "./." functionCall
-  180             | "/." variable
-  181             | "/." functionCall
-  182             | "\\" variable
-  183             | "\\" functionCall
-  184             | ".\\" variable
-  185             | ".\\" functionCall
-  186             | ".\\." variable
-  187             | ".\\." functionCall
-  188             | "\\." variable
-  189             | "\\." functionCall
-
-  190 listableBegin: ":" variable
-  191              | ":" functionCall
-
-  192 listableEnd: listableBegin ":" variable
-  193            | listableBegin ":" functionCall
-  194            | listableBegin
-
-  195 variable: "~ or @" variable
-  196         | "~ or @" functionCall
-  197         | variable "." "identifier"
-  198         | variable "." keywords
-  199         | variable "." functionCall
-  200         | functionCall "." variable
-  201         | functionCall "." keywords
-  202         | functionCall "." functionCall
-  203         | variable listableEnd
-  204         | functionCall listableEnd
-  205         | matrix
-  206         | cell
-  207         | operation
-  208         | "identifier"
-  209         | "integer"
-  210         | "number"
-  211         | "float"
-  212         | "string"
-  213         | "$"
-  214         | "%t or %T"
-  215         | "%f or %F"
-  216         | "(" variable ")"
-  217         | "(" variableFields ")"
-  218         | comparison
-  219         | variable "(" functionArgs ")"
-  220         | functionCall "(" functionArgs ")"
-
-  221 variableFields: variableFields "," variable
-  222               | variableFields "," functionCall
-  223               | variable "," variable
-  224               | functionCall "," functionCall
-  225               | functionCall "," variable
-  226               | variable "," functionCall
-
-  227 cell: "{" matrixOrCellLines "}"
-  228     | "{" "end of line" matrixOrCellLines "}"
-  229     | "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | "{" matrixOrCellColumns "}"
-  232     | "{" "end of line" matrixOrCellColumns "}"
-  233     | "{" "end of line" "}"
-  234     | "{" "}"
-
-  235 matrix: "[" matrixOrCellLines "]"
-  236       | "[" "end of line" matrixOrCellLines "]"
-  237       | "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | "[" matrixOrCellColumns "]"
-  240       | "[" "end of line" matrixOrCellColumns "]"
-  241       | "[" "end of line" "]"
-  242       | "[" "]"
-
-  243 matrixOrCellLines: matrixOrCellLines matrixOrCellLine
-  244                  | matrixOrCellLine
-
-  245 matrixOrCellLineBreak: ";"
-  246                      | "end of line"
-  247                      | matrixOrCellLineBreak "end of line"
-  248                      | matrixOrCellLineBreak ";"
-
-  249 matrixOrCellLine: matrixOrCellColumns matrixOrCellLineBreak
-  250                 | matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-
-  251 matrixOrCellColumns: matrixOrCellColumns matrixOrCellColumnsBreak variable
-  252                    | matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  253                    | matrixOrCellColumns variable
-  254                    | matrixOrCellColumns functionCall
-  255                    | matrixOrCellColumns "line comment"
-  256                    | variable
-  257                    | functionCall
-  258                    | "line comment"
-
-  259 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak ","
-  260                         | ","
-
-  261 variableDeclaration: assignable "=" variable
-  262                    | assignable "=" functionCall
-  263                    | functionCall "=" variable
-  264                    | functionCall "=" functionCall
-  265                    | assignable "=" ":"
-  266                    | functionCall "=" ":"
-  267                    | assignable "=" returnControl
-  268                    | functionCall "=" returnControl
-
-  269 assignable: variable "." "identifier"
-  270           | variable "." keywords
-  271           | variable "." functionCall
-  272           | functionCall "." variable
-  273           | functionCall "." keywords
-  274           | functionCall "." functionCall
-  275           | "identifier"
-  276           | multipleResults
-  277           | variable "(" functionArgs ")"
-  278           | functionCall "(" functionArgs ")"
-
-  279 multipleResults: "[" matrixOrCellColumns "]"
-
-  280 ifControl: "if" condition then thenBody "end"
-  281          | "if" condition then thenBody else elseBody "end"
-  282          | "if" condition then thenBody elseIfControl "end"
-
-  283 thenBody: expressions
-  284         | /* empty */
-
-  285 elseBody: expressions
-  286         | /* empty */
-
-  287 ifConditionBreak: ";"
-  288                 | ";" "end of line"
-  289                 | ","
-  290                 | "," "end of line"
-  291                 | "end of line"
-
-  292 then: "then"
-  293     | ifConditionBreak "then"
-  294     | ifConditionBreak "then" "end of line"
-  295     | "then" ifConditionBreak
-  296     | ifConditionBreak
-  297     | /* empty */
-
-  298 else: "else"
-  299     | "else" ","
-  300     | "else" ";"
-  301     | "else" "end of line"
-  302     | "else" "," "end of line"
-  303     | "else" ";" "end of line"
-
-  304 elseIfControl: "elseif" condition then thenBody
-  305              | "elseif" condition then thenBody else elseBody
-  306              | "elseif" condition then thenBody elseIfControl
-
-  307 selectControl: select selectable selectConditionBreak casesControl "end"
-  308              | select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  309              | select selectable "line comment" selectConditionBreak casesControl "end"
-  310              | select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-
-  311 select: "select"
-  312       | "switch"
-
-  313 defaultCase: else
-  314            | "otherwise"
-  315            | "otherwise" ","
-  316            | "otherwise" ";"
-  317            | "otherwise" "end of line"
-  318            | "otherwise" "," "end of line"
-  319            | "otherwise" ";" "end of line"
-
-  320 selectable: variable
-  321           | functionCall
-
-  322 selectConditionBreak: "end of line"
-  323                     | "," "end of line"
-  324                     | ";" "end of line"
-  325                     | ","
-  326                     | ";"
-
-  327 casesControl: "case" variable caseControlBreak caseBody
-  328             | "case" functionCall caseControlBreak caseBody
-  329             | comments "case" variable caseControlBreak caseBody
-  330             | comments "case" functionCall caseControlBreak caseBody
-  331             | casesControl "case" variable caseControlBreak caseBody
-  332             | casesControl "case" functionCall caseControlBreak caseBody
-
-  333 caseBody: expressions
-  334         | /* empty */
-
-  335 caseControlBreak: "then"
-  336                 | ","
-  337                 | ";"
-  338                 | "end of line"
-  339                 | "then" "end of line"
-  340                 | "," "end of line"
-  341                 | ";" "end of line"
-  342                 | "then" ","
-  343                 | "then" "," "end of line"
-  344                 | "then" ";"
-  345                 | "then" ";" "end of line"
-  346                 | /* empty */
-
-  347 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  348           | "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-
-  349 forIterator: functionCall
-  350            | variable
-
-  351 forConditionBreak: "end of line"
-  352                  | ";"
-  353                  | ";" "end of line"
-  354                  | ","
-  355                  | "," "end of line"
-  356                  | "do"
-  357                  | "do" "end of line"
-  358                  | /* empty */
-
-  359 forBody: expressions
-  360        | /* empty */
-
-  361 whileControl: "while" condition whileConditionBreak whileBody "end"
-
-  362 whileBody: expressions
-  363          | /* empty */
-
-  364 whileConditionBreak: ","
-  365                    | ";"
-  366                    | "do"
-  367                    | "do" ","
-  368                    | "do" ";"
-  369                    | "then"
-  370                    | "then" ","
-  371                    | "then" ";"
-  372                    | "line comment" "end of line"
-  373                    | "end of line"
-  374                    | "," "end of line"
-  375                    | ";" "end of line"
-  376                    | "do" "end of line"
-  377                    | "do" "," "end of line"
-  378                    | "do" ";" "end of line"
-  379                    | "then" "end of line"
-  380                    | "then" "," "end of line"
-  381                    | "then" ";" "end of line"
-
-  382 tryControl: "try" catchBody "catch" catchBody "end"
-  383           | "try" catchBody "end"
-
-  384 catchBody: expressions
-  385          | "end of line" expressions
-  386          | "," expressions
-  387          | "end of line"
-  388          | /* empty */
-
-  389 returnControl: "return"
-  390              | "return" variable
+   66             | functionArgs "," variable
+   67             | functionArgs "," functionCall
+   68             | functionArgs "," ":"
+   69             | functionArgs "," variableDeclaration
+   70             | functionArgs ","
+   71             | "," functionArgs
+
+   72 functionDeclaration: "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   73                    | "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   74                    | "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   75                    | "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   76                    | "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   77                    | "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   78                    | "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   79                    | "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   80                    | "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   81                    | "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   82                    | "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   83                    | "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   84                    | "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   85                    | "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   86                    | "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   87                    | "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   88                    | "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   89                    | "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   90                    | "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   91                    | "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   92                    | "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   93                    | "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   94                    | "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   95                    | "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+
+   96 functionDeclarationReturns: idList
+
+   97 functionDeclarationArguments: "(" idList ")"
+   98                             | "(" ")"
+   99                             | /* vide */
+
+  100 idList: idList "," "identifier"
+  101       | "identifier"
+
+  102 functionDeclarationBreak: lineEnd
+  103                         | ";"
+  104                         | ";" "end of line"
+  105                         | ","
+  106                         | "," "end of line"
+
+  107 functionBody: expressions
+  108             | /* vide */
+
+  109 condition: functionCall
+  110          | variable
+
+  111 comparison: variable rightComparable
+  112           | functionCall rightComparable
+
+  113 rightComparable: "&" variable
+  114                | "&" functionCall
+  115                | "&" ":"
+  116                | "&&" variable
+  117                | "&&" functionCall
+  118                | "&&" ":"
+  119                | "|" variable
+  120                | "|" functionCall
+  121                | "|" ":"
+  122                | "||" variable
+  123                | "||" functionCall
+  124                | "||" ":"
+  125                | "==" variable
+  126                | "==" functionCall
+  127                | "==" ":"
+  128                | "<> or ~=" variable
+  129                | "<> or ~=" functionCall
+  130                | "<> or ~=" ":"
+  131                | ">" variable
+  132                | ">" functionCall
+  133                | ">" ":"
+  134                | "<" variable
+  135                | "<" functionCall
+  136                | "<" ":"
+  137                | ">=" variable
+  138                | ">=" functionCall
+  139                | ">=" ":"
+  140                | "<=" variable
+  141                | "<=" functionCall
+  142                | "<=" ":"
+
+  143 operation: variable rightOperand
+  144          | functionCall rightOperand
+  145          | "-" variable
+  146          | "-" functionCall
+  147          | "+" variable
+  148          | "+" functionCall
+  149          | variable "** or ^" variable
+  150          | variable "** or ^" functionCall
+  151          | functionCall "** or ^" variable
+  152          | functionCall "** or ^" functionCall
+  153          | variable ".^" variable
+  154          | variable ".^" functionCall
+  155          | functionCall ".^" variable
+  156          | functionCall ".^" functionCall
+  157          | variable "'"
+  158          | variable ".'"
+  159          | functionCall "'"
+  160          | functionCall ".'"
+
+  161 rightOperand: "+" variable
+  162             | "+" functionCall
+  163             | "-" variable
+  164             | "-" functionCall
+  165             | "*" variable
+  166             | "*" functionCall
+  167             | ".*" variable
+  168             | ".*" functionCall
+  169             | ".*." variable
+  170             | ".*." functionCall
+  171             | "*." variable
+  172             | "*." functionCall
+  173             | "/" variable
+  174             | "/" functionCall
+  175             | "./" variable
+  176             | "./" functionCall
+  177             | "./." variable
+  178             | "./." functionCall
+  179             | "/." variable
+  180             | "/." functionCall
+  181             | "\\" variable
+  182             | "\\" functionCall
+  183             | ".\\" variable
+  184             | ".\\" functionCall
+  185             | ".\\." variable
+  186             | ".\\." functionCall
+  187             | "\\." variable
+  188             | "\\." functionCall
+
+  189 listableBegin: ":" variable
+  190              | ":" functionCall
+
+  191 listableEnd: listableBegin ":" variable
+  192            | listableBegin ":" functionCall
+  193            | listableBegin
+
+  194 variable: "~ or @" variable
+  195         | "~ or @" functionCall
+  196         | variable "." "identifier"
+  197         | variable "." keywords
+  198         | variable "." functionCall
+  199         | functionCall "." variable
+  200         | functionCall "." keywords
+  201         | functionCall "." functionCall
+  202         | variable listableEnd
+  203         | functionCall listableEnd
+  204         | matrix
+  205         | cell
+  206         | operation
+  207         | "identifier"
+  208         | "integer"
+  209         | "number"
+  210         | "float"
+  211         | "string"
+  212         | "$"
+  213         | "%t or %T"
+  214         | "%f or %F"
+  215         | "(" variable ")"
+  216         | "(" variableFields ")"
+  217         | comparison
+  218         | variable "(" functionArgs ")"
+  219         | functionCall "(" functionArgs ")"
+
+  220 variableFields: variableFields "," variable
+  221               | variableFields "," functionCall
+  222               | variable "," variable
+  223               | functionCall "," functionCall
+  224               | functionCall "," variable
+  225               | variable "," functionCall
+
+  226 cell: "{" matrixOrCellLines "}"
+  227     | "{" "end of line" matrixOrCellLines "}"
+  228     | "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | "{" matrixOrCellColumns "}"
+  231     | "{" "end of line" matrixOrCellColumns "}"
+  232     | "{" "end of line" "}"
+  233     | "{" "}"
+
+  234 matrix: "[" matrixOrCellLines "]"
+  235       | "[" "end of line" matrixOrCellLines "]"
+  236       | "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | "[" matrixOrCellColumns "]"
+  239       | "[" "end of line" matrixOrCellColumns "]"
+  240       | "[" "end of line" "]"
+  241       | "[" "]"
+
+  242 matrixOrCellLines: matrixOrCellLines matrixOrCellLine
+  243                  | matrixOrCellLine
+
+  244 matrixOrCellLineBreak: ";"
+  245                      | "end of line"
+  246                      | matrixOrCellLineBreak "end of line"
+  247                      | matrixOrCellLineBreak ";"
+
+  248 matrixOrCellLine: matrixOrCellColumns matrixOrCellLineBreak
+  249                 | matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+
+  250 matrixOrCellColumns: matrixOrCellColumns matrixOrCellColumnsBreak variable
+  251                    | matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  252                    | matrixOrCellColumns variable
+  253                    | matrixOrCellColumns functionCall
+  254                    | matrixOrCellColumns "line comment"
+  255                    | variable
+  256                    | functionCall
+  257                    | "line comment"
+
+  258 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak ","
+  259                         | ","
+
+  260 variableDeclaration: assignable "=" variable
+  261                    | assignable "=" functionCall
+  262                    | functionCall "=" variable
+  263                    | functionCall "=" functionCall
+  264                    | assignable "=" ":"
+  265                    | functionCall "=" ":"
+  266                    | assignable "=" returnControl
+  267                    | functionCall "=" returnControl
+
+  268 assignable: variable "." "identifier"
+  269           | variable "." keywords
+  270           | variable "." functionCall
+  271           | functionCall "." variable
+  272           | functionCall "." keywords
+  273           | functionCall "." functionCall
+  274           | "identifier"
+  275           | multipleResults
+  276           | variable "(" functionArgs ")"
+  277           | functionCall "(" functionArgs ")"
+
+  278 multipleResults: "[" matrixOrCellColumns "]"
+
+  279 ifControl: "if" condition then thenBody "end"
+  280          | "if" condition then thenBody else elseBody "end"
+  281          | "if" condition then thenBody elseIfControl "end"
+
+  282 thenBody: expressions
+  283         | /* vide */
+
+  284 elseBody: expressions
+  285         | /* vide */
+
+  286 ifConditionBreak: ";"
+  287                 | ";" "end of line"
+  288                 | ","
+  289                 | "," "end of line"
+  290                 | "end of line"
+
+  291 then: "then"
+  292     | ifConditionBreak "then"
+  293     | ifConditionBreak "then" "end of line"
+  294     | "then" ifConditionBreak
+  295     | ifConditionBreak
+  296     | /* vide */
+
+  297 else: "else"
+  298     | "else" ","
+  299     | "else" ";"
+  300     | "else" "end of line"
+  301     | "else" "," "end of line"
+  302     | "else" ";" "end of line"
+
+  303 elseIfControl: "elseif" condition then thenBody
+  304              | "elseif" condition then thenBody else elseBody
+  305              | "elseif" condition then thenBody elseIfControl
+
+  306 selectControl: select selectable selectConditionBreak casesControl "end"
+  307              | select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  308              | select selectable "line comment" selectConditionBreak casesControl "end"
+  309              | select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+
+  310 select: "select"
+  311       | "switch"
+
+  312 defaultCase: else
+  313            | "otherwise"
+  314            | "otherwise" ","
+  315            | "otherwise" ";"
+  316            | "otherwise" "end of line"
+  317            | "otherwise" "," "end of line"
+  318            | "otherwise" ";" "end of line"
+
+  319 selectable: variable
+  320           | functionCall
+
+  321 selectConditionBreak: "end of line"
+  322                     | "," "end of line"
+  323                     | ";" "end of line"
+  324                     | ","
+  325                     | ";"
+
+  326 casesControl: "case" variable caseControlBreak caseBody
+  327             | "case" functionCall caseControlBreak caseBody
+  328             | comments "case" variable caseControlBreak caseBody
+  329             | comments "case" functionCall caseControlBreak caseBody
+  330             | casesControl "case" variable caseControlBreak caseBody
+  331             | casesControl "case" functionCall caseControlBreak caseBody
+
+  332 caseBody: expressions
+  333         | /* vide */
+
+  334 caseControlBreak: "then"
+  335                 | ","
+  336                 | ";"
+  337                 | "end of line"
+  338                 | "then" "end of line"
+  339                 | "," "end of line"
+  340                 | ";" "end of line"
+  341                 | "then" ","
+  342                 | "then" "," "end of line"
+  343                 | "then" ";"
+  344                 | "then" ";" "end of line"
+  345                 | /* vide */
+
+  346 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  347           | "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+
+  348 forIterator: functionCall
+  349            | variable
+
+  350 forConditionBreak: "end of line"
+  351                  | ";"
+  352                  | ";" "end of line"
+  353                  | ","
+  354                  | "," "end of line"
+  355                  | "do"
+  356                  | "do" "end of line"
+  357                  | /* vide */
+
+  358 forBody: expressions
+  359        | /* vide */
+
+  360 whileControl: "while" condition whileConditionBreak whileBody "end"
+
+  361 whileBody: expressions
+  362          | /* vide */
+
+  363 whileConditionBreak: ","
+  364                    | ";"
+  365                    | "do"
+  366                    | "do" ","
+  367                    | "do" ";"
+  368                    | "then"
+  369                    | "then" ","
+  370                    | "then" ";"
+  371                    | "line comment" "end of line"
+  372                    | "end of line"
+  373                    | "," "end of line"
+  374                    | ";" "end of line"
+  375                    | "do" "end of line"
+  376                    | "do" "," "end of line"
+  377                    | "do" ";" "end of line"
+  378                    | "then" "end of line"
+  379                    | "then" "," "end of line"
+  380                    | "then" ";" "end of line"
+
+  381 tryControl: "try" catchBody "catch" catchBody "end"
+  382           | "try" catchBody "end"
+
+  383 catchBody: expressions
+  384          | "end of line" expressions
+  385          | "," expressions
+  386          | "end of line"
+  387          | /* vide */
+
+  388 returnControl: "return"
+  389              | "return" variable
+  390              | "return" functionCall
 
   391 comments: "line comment" "end of line"
   392         | comments "line comment" "end of line"
@@ -492,98 +493,98 @@ Grammar
   414         | "return"
 
 
-Terminals, with rules where they appear
+Terminaux, suivis des règles où ils apparaissent
 
 "end of file" (0) 0
 error (256) 34
 "line break" (258)
-"end of line" (259) 2 16 19 105 107 228 230 232 233 236 238 240 241
-    246 247 288 290 291 294 301 302 303 317 318 319 322 323 324 338
-    339 340 341 343 345 351 353 355 357 372 373 374 375 376 377 378
-    379 380 381 385 387 391 392 393 394
-"spaces" (260) 66
-"%t or %T" (261) 43 53 56 214
-"%f or %F" (262) 44 54 55 215
-"'" (263) 158 160
-"~ or @" (264) 195 196
-"$" (265) 42 213
-"," (266) 15 18 65 66 67 68 69 70 71 72 101 106 107 221 222 223 224
-    225 226 259 260 289 290 299 302 315 318 323 325 336 340 342 343
-    354 355 364 367 370 374 377 380 386
-":" (267) 63 69 116 119 122 125 128 131 134 137 140 143 190 191 192
-    193 265 266
-";" (268) 14 17 104 105 245 248 287 288 300 303 316 319 324 326 337
-    341 344 345 352 353 365 368 371 375 378 381
-"(" (269) 52 53 54 55 56 57 59 98 99 216 217 219 220 277 278 348
-")" (270) 52 53 54 55 56 57 59 98 99 216 217 219 220 277 278 348
-"[" (271) 74 75 78 79 82 83 86 87 90 91 94 95 235 236 237 238 239 240
-    241 242 279
-"]" (272) 74 75 78 79 82 83 86 87 90 91 94 95 235 236 237 238 239 240
-    241 242 279
-"{" (273) 58 60 227 228 229 230 231 232 233 234
-"}" (274) 58 60 227 228 229 230 231 232 233 234
-"." (275) 45 46 197 198 199 200 201 202 269 270 271 272 273 274
-".'" (276) 159 161
-"+" (277) 148 149 162 163
-"-" (278) 146 147 164 165
-"*" (279) 166 167
-".*" (280) 168 169
-".*." (281) 170 171
-"*." (282) 172 173
-"/" (283) 174 175
-"./" (284) 176 177
-"/." (285) 180 181
-"./." (286) 178 179
-"\\" (287) 182 183
-".\\" (288) 184 185
-"\\." (289) 188 189
-".\\." (290) 186 187
-"** or ^" (291) 150 151 152 153
-".^" (292) 154 155 156 157
-"==" (293) 126 127 128
-"<> or ~=" (294) 129 130 131
-"<" (295) 135 136 137
-"<=" (296) 141 142 143
-">" (297) 132 133 134
-">=" (298) 138 139 140
-"&" (299) 114 115 116
-"&&" (300) 117 118 119
-"|" (301) 120 121 122
-"||" (302) 123 124 125
-"=" (303) 73 74 75 77 78 79 81 82 83 85 86 87 89 90 91 93 94 95 261
-    262 263 264 265 266 267 268 347 348
-"if" (304) 280 281 282 395
-"then" (305) 292 293 294 295 335 339 342 343 344 345 369 370 371 379
-    380 381 396
-"else" (306) 298 299 300 301 302 303 397
-"elseif" (307) 304 305 306 398
-"end" (308) 77 78 79 80 85 86 87 88 93 94 95 96 280 281 282 307 308
-    309 310 347 348 361 382 383 399
-"select" (309) 311 400
-"switch" (310) 312 401
-"case" (311) 327 328 329 330 331 332 403
-"otherwise" (312) 314 315 316 317 318 319 402
-"function" (313) 73 74 75 76 77 78 79 80 89 90 91 92 93 94 95 96 404
-"endfunction" (314) 73 74 75 76 81 82 83 84 89 90 91 92 405
-"#function" (315) 81 82 83 84 85 86 87 88 406
-"hidden" (316) 89 90 91 92 93 94 95 96 407
-"for" (317) 347 348 408
-"while" (318) 361 409
-"do" (319) 356 357 366 367 368 376 377 378 410
+"end of line" (259) 2 16 19 104 106 227 229 231 232 235 237 239 240
+    245 246 287 289 290 293 300 301 302 316 317 318 321 322 323 337
+    338 339 340 342 344 350 352 354 356 371 372 373 374 375 376 377
+    378 379 380 384 386 391 392 393 394
+"spaces" (260)
+"%t or %T" (261) 43 53 56 213
+"%f or %F" (262) 44 54 55 214
+"'" (263) 157 159
+"~ or @" (264) 194 195
+"$" (265) 42 212
+"," (266) 15 18 65 66 67 68 69 70 71 100 105 106 220 221 222 223 224
+    225 258 259 288 289 298 301 314 317 322 324 335 339 341 342 353
+    354 363 366 369 373 376 379 385
+":" (267) 63 68 115 118 121 124 127 130 133 136 139 142 189 190 191
+    192 264 265
+";" (268) 14 17 103 104 244 247 286 287 299 302 315 318 323 325 336
+    340 343 344 351 352 364 367 370 374 377 380
+"(" (269) 52 53 54 55 56 57 59 97 98 215 216 218 219 276 277 347
+")" (270) 52 53 54 55 56 57 59 97 98 215 216 218 219 276 277 347
+"[" (271) 73 74 77 78 81 82 85 86 89 90 93 94 234 235 236 237 238 239
+    240 241 278
+"]" (272) 73 74 77 78 81 82 85 86 89 90 93 94 234 235 236 237 238 239
+    240 241 278
+"{" (273) 58 60 226 227 228 229 230 231 232 233
+"}" (274) 58 60 226 227 228 229 230 231 232 233
+"." (275) 45 46 196 197 198 199 200 201 268 269 270 271 272 273
+".'" (276) 158 160
+"+" (277) 147 148 161 162
+"-" (278) 145 146 163 164
+"*" (279) 165 166
+".*" (280) 167 168
+".*." (281) 169 170
+"*." (282) 171 172
+"/" (283) 173 174
+"./" (284) 175 176
+"/." (285) 179 180
+"./." (286) 177 178
+"\\" (287) 181 182
+".\\" (288) 183 184
+"\\." (289) 187 188
+".\\." (290) 185 186
+"** or ^" (291) 149 150 151 152
+".^" (292) 153 154 155 156
+"==" (293) 125 126 127
+"<> or ~=" (294) 128 129 130
+"<" (295) 134 135 136
+"<=" (296) 140 141 142
+">" (297) 131 132 133
+">=" (298) 137 138 139
+"&" (299) 113 114 115
+"&&" (300) 116 117 118
+"|" (301) 119 120 121
+"||" (302) 122 123 124
+"=" (303) 72 73 74 76 77 78 80 81 82 84 85 86 88 89 90 92 93 94 260
+    261 262 263 264 265 266 267 346 347
+"if" (304) 279 280 281 395
+"then" (305) 291 292 293 294 334 338 341 342 343 344 368 369 370 378
+    379 380 396
+"else" (306) 297 298 299 300 301 302 397
+"elseif" (307) 303 304 305 398
+"end" (308) 76 77 78 79 84 85 86 87 92 93 94 95 279 280 281 306 307
+    308 309 346 347 360 381 382 399
+"select" (309) 310 400
+"switch" (310) 311 401
+"case" (311) 326 327 328 329 330 331 403
+"otherwise" (312) 313 314 315 316 317 318 402
+"function" (313) 72 73 74 75 76 77 78 79 88 89 90 91 92 93 94 95 404
+"endfunction" (314) 72 73 74 75 80 81 82 83 88 89 90 91 405
+"#function" (315) 80 81 82 83 84 85 86 87 406
+"hidden" (316) 88 89 90 91 92 93 94 95 407
+"for" (317) 346 347 408
+"while" (318) 360 409
+"do" (319) 355 356 365 366 367 375 376 377 410
 "break" (320) 30 411
 "continue" (321) 31
-"try" (322) 382 383 412
-"catch" (323) 382 413
-"return" (324) 389 390 414
-"string" (325) 41 212
-"identifier" (326) 36 37 45 57 58 59 60 73 74 75 76 77 78 79 80 81
-    82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 101 102 197 208 269
-    275 347 348
-"integer" (327) 38 209
-"float" (328) 40 211
-"number" (329) 39 210
+"try" (322) 381 382 412
+"catch" (323) 381 413
+"return" (324) 388 389 390 414
+"string" (325) 41 211
+"identifier" (326) 36 37 45 57 58 59 60 72 73 74 75 76 77 78 79 80
+    81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 100 101 196 207 268
+    274 346 347
+"integer" (327) 38 208
+"float" (328) 40 210
+"number" (329) 39 209
 "path" (330) 49
-"line comment" (331) 7 9 11 12 33 255 258 309 310 372 391 392 394
+"line comment" (331) 7 9 11 12 33 254 257 308 309 371 391 392 394
 "block comment" (332)
 TOPLEVEL (333)
 HIGHLEVEL (334)
@@ -593,171 +594,173 @@ CONTROLBREAK (337)
 FUNCTIONCALL (338)
 
 
-Nonterminals, with rules where they appear
+Non-terminaux, suivis des règles où ils apparaissent
 
 $accept (84)
-    on left: 0
+    à gauche: 0
 program (85)
-    on left: 1 2 3 4, on right: 0
+    à gauche: 1 2 3 4, à droite: 0
 expressions (86)
-    on left: 5 6 7 8 9, on right: 1 2 108 283 285 333 359 362 384 385
-    386
+    à gauche: 5 6 7 8 9, à droite: 1 2 107 282 284 332 358 361 383
+    384 385
 recursiveExpression (87)
-    on left: 10 11 12 13, on right: 5 6 7 10 11
+    à gauche: 10 11 12 13, à droite: 5 6 7 10 11
 expressionLineBreak (88)
-    on left: 14 15 16 17 18 19, on right: 3 10 11 12 13 17 18 19
+    à gauche: 14 15 16 17 18 19, à droite: 3 10 11 12 13 17 18 19
 expression (89)
-    on left: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34, on right:
+    à gauche: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34, à droite:
     6 7 8 9 10 11 12 13
 implicitFunctionCall (90)
-    on left: 35 36, on right: 29 35
+    à gauche: 35 36, à droite: 29 35
 implicitCallable (91)
-    on left: 37 38 39 40 41 42 43 44 45 46 47 48 49, on right: 35 36
-    45 46 48
+    à gauche: 37 38 39 40 41 42 43 44 45 46 47 48 49, à droite: 35
+    36 45 46 48
 functionCall (92)
-    on left: 50 51 52, on right: 21 46 52 62 68 110 113 115 118 121
-    124 127 130 133 136 139 142 145 147 149 151 152 153 155 156 157
-    160 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189
-    191 193 196 199 200 201 202 204 220 222 224 225 226 252 254 257
-    262 263 264 266 268 271 272 273 274 278 321 328 330 332 349
+    à gauche: 50 51 52, à droite: 21 46 52 62 67 109 112 114 117
+    120 123 126 129 132 135 138 141 144 146 148 150 151 152 154 155
+    156 159 160 162 164 166 168 170 172 174 176 178 180 182 184 186
+    188 190 192 195 198 199 200 201 203 219 221 223 224 225 251 253
+    256 261 262 263 265 267 270 271 272 273 277 320 327 329 331 348
+    390
 specificFunctionCall (93)
-    on left: 53 54 55 56, on right: 51
+    à gauche: 53 54 55 56, à droite: 51
 simpleFunctionCall (94)
-    on left: 57 58 59 60, on right: 47 50
+    à gauche: 57 58 59 60, à droite: 47 50
 functionArgs (95)
-    on left: 61 62 63 64 65 66 67 68 69 70 71 72, on right: 53 54 57
-    58 67 68 69 70 71 72 219 220 277 278
+    à gauche: 61 62 63 64 65 66 67 68 69 70 71, à droite: 53 54 57
+    58 66 67 68 69 70 71 218 219 276 277
 functionDeclaration (96)
-    on left: 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
-    91 92 93 94 95 96, on right: 20
+    à gauche: 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
+    90 91 92 93 94 95, à droite: 20
 functionDeclarationReturns (97)
-    on left: 97, on right: 74 78 82 86 90 94
+    à gauche: 96, à droite: 73 77 81 85 89 93
 functionDeclarationArguments (98)
-    on left: 98 99 100, on right: 73 74 75 76 77 78 79 80 81 82 83
-    84 85 86 87 88 89 90 91 92 93 94 95 96
+    à gauche: 97 98 99, à droite: 72 73 74 75 76 77 78 79 80 81 82
+    83 84 85 86 87 88 89 90 91 92 93 94 95
 idList (99)
-    on left: 101 102, on right: 97 98 101
+    à gauche: 100 101, à droite: 96 97 100
 functionDeclarationBreak (100)
-    on left: 103 104 105 106 107, on right: 73 74 75 76 77 78 79 80
-    81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
+    à gauche: 102 103 104 105 106, à droite: 72 73 74 75 76 77 78
+    79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
 functionBody (101)
-    on left: 108 109, on right: 73 74 75 76 77 78 79 80 81 82 83 84
-    85 86 87 88 89 90 91 92 93 94 95 96
+    à gauche: 107 108, à droite: 72 73 74 75 76 77 78 79 80 81 82
+    83 84 85 86 87 88 89 90 91 92 93 94 95
 condition (102)
-    on left: 110 111, on right: 280 281 282 304 305 306 361
+    à gauche: 109 110, à droite: 279 280 281 303 304 305 360
 comparison (103)
-    on left: 112 113, on right: 218
+    à gauche: 111 112, à droite: 217
 rightComparable (104)
-    on left: 114 115 116 117 118 119 120 121 122 123 124 125 126 127
-    128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143,
-    on right: 112 113
+    à gauche: 113 114 115 116 117 118 119 120 121 122 123 124 125
+    126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
+    142, à droite: 111 112
 operation (105)
-    on left: 144 145 146 147 148 149 150 151 152 153 154 155 156 157
-    158 159 160 161, on right: 207
+    à gauche: 143 144 145 146 147 148 149 150 151 152 153 154 155
+    156 157 158 159 160, à droite: 206
 rightOperand (106)
-    on left: 162 163 164 165 166 167 168 169 170 171 172 173 174 175
-    176 177 178 179 180 181 182 183 184 185 186 187 188 189, on right:
-    48 144 145
+    à gauche: 161 162 163 164 165 166 167 168 169 170 171 172 173
+    174 175 176 177 178 179 180 181 182 183 184 185 186 187 188, à droite:
+    48 143 144
 listableBegin (107)
-    on left: 190 191, on right: 192 193 194
+    à gauche: 189 190, à droite: 191 192 193
 listableEnd (108)
-    on left: 192 193 194, on right: 203 204
+    à gauche: 191 192 193, à droite: 202 203
 variable (109)
-    on left: 195 196 197 198 199 200 201 202 203 204 205 206 207 208
-    209 210 211 212 213 214 215 216 217 218 219 220, on right: 28 61
-    67 111 112 114 117 120 123 126 129 132 135 138 141 144 146 148
-    150 151 152 154 155 156 158 159 162 164 166 168 170 172 174 176
-    178 180 182 184 186 188 190 192 195 197 198 199 200 203 216 219
-    221 223 225 226 251 253 256 261 263 269 270 271 272 277 320 327
-    329 331 350 390
+    à gauche: 194 195 196 197 198 199 200 201 202 203 204 205 206
+    207 208 209 210 211 212 213 214 215 216 217 218 219, à droite:
+    28 61 66 110 111 113 116 119 122 125 128 131 134 137 140 143 145
+    147 149 150 151 153 154 155 157 158 161 163 165 167 169 171 173
+    175 177 179 181 183 185 187 189 191 194 196 197 198 199 202 215
+    218 220 222 224 225 250 252 255 260 262 268 269 270 271 276 319
+    326 328 330 349 389
 variableFields (110)
-    on left: 221 222 223 224 225 226, on right: 217 221 222
+    à gauche: 220 221 222 223 224 225, à droite: 216 220 221
 cell (111)
-    on left: 227 228 229 230 231 232 233 234, on right: 206
+    à gauche: 226 227 228 229 230 231 232 233, à droite: 205
 matrix (112)
-    on left: 235 236 237 238 239 240 241 242, on right: 205
+    à gauche: 234 235 236 237 238 239 240 241, à droite: 204
 matrixOrCellLines (113)
-    on left: 243 244, on right: 227 228 229 230 235 236 237 238 243
+    à gauche: 242 243, à droite: 226 227 228 229 234 235 236 237
+    242
 matrixOrCellLineBreak (114)
-    on left: 245 246 247 248, on right: 247 248 249 250
+    à gauche: 244 245 246 247, à droite: 246 247 248 249
 matrixOrCellLine (115)
-    on left: 249 250, on right: 243 244
+    à gauche: 248 249, à droite: 242 243
 matrixOrCellColumns (116)
-    on left: 251 252 253 254 255 256 257 258, on right: 229 230 231
-    232 237 238 239 240 249 250 251 252 253 254 255 279
+    à gauche: 250 251 252 253 254 255 256 257, à droite: 228 229
+    230 231 236 237 238 239 248 249 250 251 252 253 254 278
 matrixOrCellColumnsBreak (117)
-    on left: 259 260, on right: 250 251 252 259
+    à gauche: 258 259, à droite: 249 250 251 258
 variableDeclaration (118)
-    on left: 261 262 263 264 265 266 267 268, on right: 22 64 70
+    à gauche: 260 261 262 263 264 265 266 267, à droite: 22 64 69
 assignable (119)
-    on left: 269 270 271 272 273 274 275 276 277 278, on right: 261
-    262 265 267
+    à gauche: 268 269 270 271 272 273 274 275 276 277, à droite:
+    260 261 264 266
 multipleResults (120)
-    on left: 279, on right: 276
+    à gauche: 278, à droite: 275
 ifControl (121)
-    on left: 280 281 282, on right: 23
+    à gauche: 279 280 281, à droite: 23
 thenBody (122)
-    on left: 283 284, on right: 280 281 282 304 305 306
+    à gauche: 282 283, à droite: 279 280 281 303 304 305
 elseBody (123)
-    on left: 285 286, on right: 281 305 308 310
+    à gauche: 284 285, à droite: 280 304 307 309
 ifConditionBreak (124)
-    on left: 287 288 289 290 291, on right: 293 294 295 296
+    à gauche: 286 287 288 289 290, à droite: 292 293 294 295
 then (125)
-    on left: 292 293 294 295 296 297, on right: 280 281 282 304 305
-    306
+    à gauche: 291 292 293 294 295 296, à droite: 279 280 281 303
+    304 305
 else (126)
-    on left: 298 299 300 301 302 303, on right: 281 305 313
+    à gauche: 297 298 299 300 301 302, à droite: 280 304 312
 elseIfControl (127)
-    on left: 304 305 306, on right: 282 306
+    à gauche: 303 304 305, à droite: 281 305
 selectControl (128)
-    on left: 307 308 309 310, on right: 24
+    à gauche: 306 307 308 309, à droite: 24
 select (129)
-    on left: 311 312, on right: 307 308 309 310
+    à gauche: 310 311, à droite: 306 307 308 309
 defaultCase (130)
-    on left: 313 314 315 316 317 318 319, on right: 308 310
+    à gauche: 312 313 314 315 316 317 318, à droite: 307 309
 selectable (131)
-    on left: 320 321, on right: 307 308 309 310
+    à gauche: 319 320, à droite: 306 307 308 309
 selectConditionBreak (132)
-    on left: 322 323 324 325 326, on right: 307 308 309 310
+    à gauche: 321 322 323 324 325, à droite: 306 307 308 309
 casesControl (133)
-    on left: 327 328 329 330 331 332, on right: 307 308 309 310 331
-    332
+    à gauche: 326 327 328 329 330 331, à droite: 306 307 308 309
+    330 331
 caseBody (134)
-    on left: 333 334, on right: 327 328 329 330 331 332
+    à gauche: 332 333, à droite: 326 327 328 329 330 331
 caseControlBreak (135)
-    on left: 335 336 337 338 339 340 341 342 343 344 345 346, on right:
-    327 328 329 330 331 332
+    à gauche: 334 335 336 337 338 339 340 341 342 343 344 345, à droite:
+    326 327 328 329 330 331
 forControl (136)
-    on left: 347 348, on right: 25
+    à gauche: 346 347, à droite: 25
 forIterator (137)
-    on left: 349 350, on right: 347 348
+    à gauche: 348 349, à droite: 346 347
 forConditionBreak (138)
-    on left: 351 352 353 354 355 356 357 358, on right: 347 348
+    à gauche: 350 351 352 353 354 355 356 357, à droite: 346 347
 forBody (139)
-    on left: 359 360, on right: 347 348
+    à gauche: 358 359, à droite: 346 347
 whileControl (140)
-    on left: 361, on right: 26
+    à gauche: 360, à droite: 26
 whileBody (141)
-    on left: 362 363, on right: 361
+    à gauche: 361 362, à droite: 360
 whileConditionBreak (142)
-    on left: 364 365 366 367 368 369 370 371 372 373 374 375 376 377
-    378 379 380 381, on right: 361
+    à gauche: 363 364 365 366 367 368 369 370 371 372 373 374 375
+    376 377 378 379 380, à droite: 360
 tryControl (143)
-    on left: 382 383, on right: 27
+    à gauche: 381 382, à droite: 27
 catchBody (144)
-    on left: 384 385 386 387 388, on right: 382 383
+    à gauche: 383 384 385 386 387, à droite: 381 382
 returnControl (145)
-    on left: 389 390, on right: 32 267 268
+    à gauche: 388 389 390, à droite: 32 266 267
 comments (146)
-    on left: 391 392, on right: 329 330 392
+    à gauche: 391 392, à droite: 328 329 392
 lineEnd (147)
-    on left: 393 394, on right: 103
+    à gauche: 393 394, à droite: 102
 keywords (148)
-    on left: 395 396 397 398 399 400 401 402 403 404 405 406 407 408
-    409 410 411 412 413 414, on right: 198 201 270 273
+    à gauche: 395 396 397 398 399 400 401 402 403 404 405 406 407
+    408 409 410 411 412 413 414, à droite: 197 200 269 272
 
 
-state 0
+état 0
 
     0 $accept: . program "end of file"
     1 program: . expressions
@@ -807,197 +810,198 @@ state 0
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-   73 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   74                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   75                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   76                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   77                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   78                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   79                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   80                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   81                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   82                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   83                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   84                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   85                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   86                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   87                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   88                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   89                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   90                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   91                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   92                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   93                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   94                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   95                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   96                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  261 variableDeclaration: . assignable "=" variable
-  262                    | . assignable "=" functionCall
-  263                    | . functionCall "=" variable
-  264                    | . functionCall "=" functionCall
-  265                    | . assignable "=" ":"
-  266                    | . functionCall "=" ":"
-  267                    | . assignable "=" returnControl
-  268                    | . functionCall "=" returnControl
-  269 assignable: . variable "." "identifier"
-  270           | . variable "." keywords
-  271           | . variable "." functionCall
-  272           | . functionCall "." variable
-  273           | . functionCall "." keywords
-  274           | . functionCall "." functionCall
-  275           | . "identifier"
-  276           | . multipleResults
-  277           | . variable "(" functionArgs ")"
-  278           | . functionCall "(" functionArgs ")"
-  279 multipleResults: . "[" matrixOrCellColumns "]"
-  280 ifControl: . "if" condition then thenBody "end"
-  281          | . "if" condition then thenBody else elseBody "end"
-  282          | . "if" condition then thenBody elseIfControl "end"
-  307 selectControl: . select selectable selectConditionBreak casesControl "end"
-  308              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  309              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  310              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  311 select: . "select"
-  312       | . "switch"
-  347 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  348           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  361 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  382 tryControl: . "try" catchBody "catch" catchBody "end"
-  383           | . "try" catchBody "end"
-  389 returnControl: . "return"
-  390              | . "return" variable
-
-    error           shift, and go to state 1
-    "end of line"   shift, and go to state 2
-    "%t or %T"      shift, and go to state 3
-    "%f or %F"      shift, and go to state 4
-    "~ or @"        shift, and go to state 5
-    "$"             shift, and go to state 6
-    ","             shift, and go to state 7
-    ";"             shift, and go to state 8
-    "("             shift, and go to state 9
-    "["             shift, and go to state 10
-    "{"             shift, and go to state 11
-    "+"             shift, and go to state 12
-    "-"             shift, and go to state 13
-    "if"            shift, and go to state 14
-    "select"        shift, and go to state 15
-    "switch"        shift, and go to state 16
-    "function"      shift, and go to state 17
-    "#function"     shift, and go to state 18
-    "hidden"        shift, and go to state 19
-    "for"           shift, and go to state 20
-    "while"         shift, and go to state 21
-    "break"         shift, and go to state 22
-    "continue"      shift, and go to state 23
-    "try"           shift, and go to state 24
-    "return"        shift, and go to state 25
-    "string"        shift, and go to state 26
-    "identifier"    shift, and go to state 27
-    "integer"       shift, and go to state 28
-    "float"         shift, and go to state 29
-    "number"        shift, and go to state 30
-    "line comment"  shift, and go to state 31
-
-    "end of file"  reduce using rule 4 (program)
-
-    program               go to state 32
-    expressions           go to state 33
-    recursiveExpression   go to state 34
-    expressionLineBreak   go to state 35
-    expression            go to state 36
-    implicitFunctionCall  go to state 37
-    functionCall          go to state 38
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    functionDeclaration   go to state 41
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 44
-    cell                  go to state 45
-    matrix                go to state 46
-    variableDeclaration   go to state 47
-    assignable            go to state 48
-    multipleResults       go to state 49
-    ifControl             go to state 50
-    selectControl         go to state 51
-    select                go to state 52
-    forControl            go to state 53
-    whileControl          go to state 54
-    tryControl            go to state 55
-    returnControl         go to state 56
-
-
-state 1
+   72 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   73                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   74                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   75                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   76                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   77                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   78                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   79                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   80                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   81                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   82                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   83                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   84                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   85                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   86                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   87                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   88                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   89                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   90                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   91                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   92                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   93                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   94                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   95                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  260 variableDeclaration: . assignable "=" variable
+  261                    | . assignable "=" functionCall
+  262                    | . functionCall "=" variable
+  263                    | . functionCall "=" functionCall
+  264                    | . assignable "=" ":"
+  265                    | . functionCall "=" ":"
+  266                    | . assignable "=" returnControl
+  267                    | . functionCall "=" returnControl
+  268 assignable: . variable "." "identifier"
+  269           | . variable "." keywords
+  270           | . variable "." functionCall
+  271           | . functionCall "." variable
+  272           | . functionCall "." keywords
+  273           | . functionCall "." functionCall
+  274           | . "identifier"
+  275           | . multipleResults
+  276           | . variable "(" functionArgs ")"
+  277           | . functionCall "(" functionArgs ")"
+  278 multipleResults: . "[" matrixOrCellColumns "]"
+  279 ifControl: . "if" condition then thenBody "end"
+  280          | . "if" condition then thenBody else elseBody "end"
+  281          | . "if" condition then thenBody elseIfControl "end"
+  306 selectControl: . select selectable selectConditionBreak casesControl "end"
+  307              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  308              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  309              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  310 select: . "select"
+  311       | . "switch"
+  346 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  347           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  360 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  381 tryControl: . "try" catchBody "catch" catchBody "end"
+  382           | . "try" catchBody "end"
+  388 returnControl: . "return"
+  389              | . "return" variable
+  390              | . "return" functionCall
+
+    error           décalage et aller à l'état 1
+    "end of line"   décalage et aller à l'état 2
+    "%t or %T"      décalage et aller à l'état 3
+    "%f or %F"      décalage et aller à l'état 4
+    "~ or @"        décalage et aller à l'état 5
+    "$"             décalage et aller à l'état 6
+    ","             décalage et aller à l'état 7
+    ";"             décalage et aller à l'état 8
+    "("             décalage et aller à l'état 9
+    "["             décalage et aller à l'état 10
+    "{"             décalage et aller à l'état 11
+    "+"             décalage et aller à l'état 12
+    "-"             décalage et aller à l'état 13
+    "if"            décalage et aller à l'état 14
+    "select"        décalage et aller à l'état 15
+    "switch"        décalage et aller à l'état 16
+    "function"      décalage et aller à l'état 17
+    "#function"     décalage et aller à l'état 18
+    "hidden"        décalage et aller à l'état 19
+    "for"           décalage et aller à l'état 20
+    "while"         décalage et aller à l'état 21
+    "break"         décalage et aller à l'état 22
+    "continue"      décalage et aller à l'état 23
+    "try"           décalage et aller à l'état 24
+    "return"        décalage et aller à l'état 25
+    "string"        décalage et aller à l'état 26
+    "identifier"    décalage et aller à l'état 27
+    "integer"       décalage et aller à l'état 28
+    "float"         décalage et aller à l'état 29
+    "number"        décalage et aller à l'état 30
+    "line comment"  décalage et aller à l'état 31
+
+    "end of file"  réduction par utilisation de la règle 4 (program)
+
+    program               aller à l'état 32
+    expressions           aller à l'état 33
+    recursiveExpression   aller à l'état 34
+    expressionLineBreak   aller à l'état 35
+    expression            aller à l'état 36
+    implicitFunctionCall  aller à l'état 37
+    functionCall          aller à l'état 38
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    functionDeclaration   aller à l'état 41
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 44
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+    variableDeclaration   aller à l'état 47
+    assignable            aller à l'état 48
+    multipleResults       aller à l'état 49
+    ifControl             aller à l'état 50
+    selectControl         aller à l'état 51
+    select                aller à l'état 52
+    forControl            aller à l'état 53
+    whileControl          aller à l'état 54
+    tryControl            aller à l'état 55
+    returnControl         aller à l'état 56
+
+
+état 1
 
    34 expression: error .
 
-    $default  reduce using rule 34 (expression)
+    $défaut  réduction par utilisation de la règle 34 (expression)
 
 
-state 2
+état 2
 
     2 program: "end of line" . expressions
     5 expressions: . recursiveExpression
@@ -1038,214 +1042,215 @@ state 2
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-   73 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   74                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   75                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   76                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   77                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   78                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   79                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   80                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   81                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   82                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   83                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   84                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   85                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   86                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   87                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   88                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   89                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   90                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   91                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   92                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   93                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   94                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   95                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   96                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  261 variableDeclaration: . assignable "=" variable
-  262                    | . assignable "=" functionCall
-  263                    | . functionCall "=" variable
-  264                    | . functionCall "=" functionCall
-  265                    | . assignable "=" ":"
-  266                    | . functionCall "=" ":"
-  267                    | . assignable "=" returnControl
-  268                    | . functionCall "=" returnControl
-  269 assignable: . variable "." "identifier"
-  270           | . variable "." keywords
-  271           | . variable "." functionCall
-  272           | . functionCall "." variable
-  273           | . functionCall "." keywords
-  274           | . functionCall "." functionCall
-  275           | . "identifier"
-  276           | . multipleResults
-  277           | . variable "(" functionArgs ")"
-  278           | . functionCall "(" functionArgs ")"
-  279 multipleResults: . "[" matrixOrCellColumns "]"
-  280 ifControl: . "if" condition then thenBody "end"
-  281          | . "if" condition then thenBody else elseBody "end"
-  282          | . "if" condition then thenBody elseIfControl "end"
-  307 selectControl: . select selectable selectConditionBreak casesControl "end"
-  308              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  309              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  310              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  311 select: . "select"
-  312       | . "switch"
-  347 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  348           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  361 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  382 tryControl: . "try" catchBody "catch" catchBody "end"
-  383           | . "try" catchBody "end"
-  389 returnControl: . "return"
-  390              | . "return" variable
-
-    error           shift, and go to state 1
-    "%t or %T"      shift, and go to state 3
-    "%f or %F"      shift, and go to state 4
-    "~ or @"        shift, and go to state 5
-    "$"             shift, and go to state 6
-    "("             shift, and go to state 9
-    "["             shift, and go to state 10
-    "{"             shift, and go to state 11
-    "+"             shift, and go to state 12
-    "-"             shift, and go to state 13
-    "if"            shift, and go to state 14
-    "select"        shift, and go to state 15
-    "switch"        shift, and go to state 16
-    "function"      shift, and go to state 17
-    "#function"     shift, and go to state 18
-    "hidden"        shift, and go to state 19
-    "for"           shift, and go to state 20
-    "while"         shift, and go to state 21
-    "break"         shift, and go to state 22
-    "continue"      shift, and go to state 23
-    "try"           shift, and go to state 24
-    "return"        shift, and go to state 25
-    "string"        shift, and go to state 26
-    "identifier"    shift, and go to state 27
-    "integer"       shift, and go to state 28
-    "float"         shift, and go to state 29
-    "number"        shift, and go to state 30
-    "line comment"  shift, and go to state 31
-
-    "end of file"  reduce using rule 16 (expressionLineBreak)
-    "end of line"  reduce using rule 16 (expressionLineBreak)
-    ","            reduce using rule 16 (expressionLineBreak)
-    ";"            reduce using rule 16 (expressionLineBreak)
-
-    expressions           go to state 57
-    recursiveExpression   go to state 34
-    expression            go to state 36
-    implicitFunctionCall  go to state 37
-    functionCall          go to state 38
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    functionDeclaration   go to state 41
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 44
-    cell                  go to state 45
-    matrix                go to state 46
-    variableDeclaration   go to state 47
-    assignable            go to state 48
-    multipleResults       go to state 49
-    ifControl             go to state 50
-    selectControl         go to state 51
-    select                go to state 52
-    forControl            go to state 53
-    whileControl          go to state 54
-    tryControl            go to state 55
-    returnControl         go to state 56
-
-
-state 3
+   72 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   73                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   74                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   75                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   76                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   77                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   78                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   79                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   80                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   81                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   82                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   83                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   84                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   85                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   86                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   87                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   88                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   89                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   90                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   91                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   92                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   93                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   94                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   95                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  260 variableDeclaration: . assignable "=" variable
+  261                    | . assignable "=" functionCall
+  262                    | . functionCall "=" variable
+  263                    | . functionCall "=" functionCall
+  264                    | . assignable "=" ":"
+  265                    | . functionCall "=" ":"
+  266                    | . assignable "=" returnControl
+  267                    | . functionCall "=" returnControl
+  268 assignable: . variable "." "identifier"
+  269           | . variable "." keywords
+  270           | . variable "." functionCall
+  271           | . functionCall "." variable
+  272           | . functionCall "." keywords
+  273           | . functionCall "." functionCall
+  274           | . "identifier"
+  275           | . multipleResults
+  276           | . variable "(" functionArgs ")"
+  277           | . functionCall "(" functionArgs ")"
+  278 multipleResults: . "[" matrixOrCellColumns "]"
+  279 ifControl: . "if" condition then thenBody "end"
+  280          | . "if" condition then thenBody else elseBody "end"
+  281          | . "if" condition then thenBody elseIfControl "end"
+  306 selectControl: . select selectable selectConditionBreak casesControl "end"
+  307              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  308              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  309              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  310 select: . "select"
+  311       | . "switch"
+  346 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  347           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  360 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  381 tryControl: . "try" catchBody "catch" catchBody "end"
+  382           | . "try" catchBody "end"
+  388 returnControl: . "return"
+  389              | . "return" variable
+  390              | . "return" functionCall
+
+    error           décalage et aller à l'état 1
+    "%t or %T"      décalage et aller à l'état 3
+    "%f or %F"      décalage et aller à l'état 4
+    "~ or @"        décalage et aller à l'état 5
+    "$"             décalage et aller à l'état 6
+    "("             décalage et aller à l'état 9
+    "["             décalage et aller à l'état 10
+    "{"             décalage et aller à l'état 11
+    "+"             décalage et aller à l'état 12
+    "-"             décalage et aller à l'état 13
+    "if"            décalage et aller à l'état 14
+    "select"        décalage et aller à l'état 15
+    "switch"        décalage et aller à l'état 16
+    "function"      décalage et aller à l'état 17
+    "#function"     décalage et aller à l'état 18
+    "hidden"        décalage et aller à l'état 19
+    "for"           décalage et aller à l'état 20
+    "while"         décalage et aller à l'état 21
+    "break"         décalage et aller à l'état 22
+    "continue"      décalage et aller à l'état 23
+    "try"           décalage et aller à l'état 24
+    "return"        décalage et aller à l'état 25
+    "string"        décalage et aller à l'état 26
+    "identifier"    décalage et aller à l'état 27
+    "integer"       décalage et aller à l'état 28
+    "float"         décalage et aller à l'état 29
+    "number"        décalage et aller à l'état 30
+    "line comment"  décalage et aller à l'état 31
+
+    "end of file"  réduction par utilisation de la règle 16 (expressionLineBreak)
+    "end of line"  réduction par utilisation de la règle 16 (expressionLineBreak)
+    ","            réduction par utilisation de la règle 16 (expressionLineBreak)
+    ";"            réduction par utilisation de la règle 16 (expressionLineBreak)
+
+    expressions           aller à l'état 57
+    recursiveExpression   aller à l'état 34
+    expression            aller à l'état 36
+    implicitFunctionCall  aller à l'état 37
+    functionCall          aller à l'état 38
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    functionDeclaration   aller à l'état 41
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 44
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+    variableDeclaration   aller à l'état 47
+    assignable            aller à l'état 48
+    multipleResults       aller à l'état 49
+    ifControl             aller à l'état 50
+    selectControl         aller à l'état 51
+    select                aller à l'état 52
+    forControl            aller à l'état 53
+    whileControl          aller à l'état 54
+    tryControl            aller à l'état 55
+    returnControl         aller à l'état 56
+
+
+état 3
 
    53 specificFunctionCall: "%t or %T" . "(" functionArgs ")"
    56                     | "%t or %T" . "(" ")"
-  214 variable: "%t or %T" .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "#function", "hidden", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "path", "line comment"]
+  213 variable: "%t or %T" .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "#function", "hidden", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "path", "line comment"]
 
-    "("  shift, and go to state 58
+    "("  décalage et aller à l'état 58
 
-    $default  reduce using rule 214 (variable)
+    $défaut  réduction par utilisation de la règle 213 (variable)
 
-    Conflict between rule 214 and token "(" resolved as shift (BOOLTRUE < "(").
+    Conflit entre la règle 213 et le jeton "(" résolu par décalage (BOOLTRUE < "(").
 
 
-state 4
+état 4
 
    54 specificFunctionCall: "%f or %F" . "(" functionArgs ")"
    55                     | "%f or %F" . "(" ")"
-  215 variable: "%f or %F" .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "#function", "hidden", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "path", "line comment"]
+  214 variable: "%f or %F" .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "#function", "hidden", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "path", "line comment"]
 
-    "("  shift, and go to state 59
+    "("  décalage et aller à l'état 59
 
-    $default  reduce using rule 215 (variable)
+    $défaut  réduction par utilisation de la règle 214 (variable)
 
-    Conflict between rule 215 and token "(" resolved as shift (BOOLFALSE < "(").
+    Conflit entre la règle 214 et le jeton "(" résolu par décalage (BOOLFALSE < "(").
 
 
-state 5
+état 5
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1258,118 +1263,118 @@ state 5
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  195         | "~ or @" . variable
-  196         | . "~ or @" functionCall
-  196         | "~ or @" . functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    functionCall          go to state 62
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 63
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 6
-
-  213 variable: "$" .
-
-    $default  reduce using rule 213 (variable)
-
-
-state 7
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  194         | "~ or @" . variable
+  195         | . "~ or @" functionCall
+  195         | "~ or @" . functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    functionCall          aller à l'état 62
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 63
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 6
+
+  212 variable: "$" .
+
+    $défaut  réduction par utilisation de la règle 212 (variable)
+
+
+état 7
 
    15 expressionLineBreak: "," .
 
-    $default  reduce using rule 15 (expressionLineBreak)
+    $défaut  réduction par utilisation de la règle 15 (expressionLineBreak)
 
 
-state 8
+état 8
 
    14 expressionLineBreak: ";" .
 
-    $default  reduce using rule 14 (expressionLineBreak)
+    $défaut  réduction par utilisation de la règle 14 (expressionLineBreak)
 
 
-state 9
+état 9
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1383,104 +1388,104 @@ state 9
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  216         | "(" . variable ")"
-  217         | . "(" variableFields ")"
-  217         | "(" . variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  221 variableFields: . variableFields "," variable
-  222               | . variableFields "," functionCall
-  223               | . variable "," variable
-  224               | . functionCall "," functionCall
-  225               | . functionCall "," variable
-  226               | . variable "," functionCall
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    functionCall          go to state 64
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 65
-    variableFields        go to state 66
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 10
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  215         | "(" . variable ")"
+  216         | . "(" variableFields ")"
+  216         | "(" . variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  220 variableFields: . variableFields "," variable
+  221               | . variableFields "," functionCall
+  222               | . variable "," variable
+  223               | . functionCall "," functionCall
+  224               | . functionCall "," variable
+  225               | . variable "," functionCall
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    functionCall          aller à l'état 64
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 65
+    variableFields        aller à l'état 66
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 10
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1493,122 +1498,122 @@ state 10
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  235       | "[" . matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  236       | "[" . "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  237       | "[" . matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  238       | "[" . "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  239       | "[" . matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  240       | "[" . "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  241       | "[" . "end of line" "]"
-  242       | . "[" "]"
-  242       | "[" . "]"
-  243 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  244                  | . matrixOrCellLine
-  249 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  250                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  251 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  252                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  253                    | . matrixOrCellColumns variable
-  254                    | . matrixOrCellColumns functionCall
-  255                    | . matrixOrCellColumns "line comment"
-  256                    | . variable
-  257                    | . functionCall
-  258                    | . "line comment"
-  279 multipleResults: "[" . matrixOrCellColumns "]"
-
-    "end of line"   shift, and go to state 67
-    "%t or %T"      shift, and go to state 3
-    "%f or %F"      shift, and go to state 4
-    "~ or @"        shift, and go to state 5
-    "$"             shift, and go to state 6
-    "("             shift, and go to state 9
-    "["             shift, and go to state 60
-    "]"             shift, and go to state 68
-    "{"             shift, and go to state 11
-    "+"             shift, and go to state 12
-    "-"             shift, and go to state 13
-    "string"        shift, and go to state 26
-    "identifier"    shift, and go to state 61
-    "integer"       shift, and go to state 28
-    "float"         shift, and go to state 29
-    "number"        shift, and go to state 30
-    "line comment"  shift, and go to state 69
-
-    functionCall          go to state 70
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 71
-    cell                  go to state 45
-    matrix                go to state 46
-    matrixOrCellLines     go to state 72
-    matrixOrCellLine      go to state 73
-    matrixOrCellColumns   go to state 74
-
-
-state 11
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  234       | "[" . matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  235       | "[" . "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  236       | "[" . matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  237       | "[" . "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  238       | "[" . matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  239       | "[" . "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  240       | "[" . "end of line" "]"
+  241       | . "[" "]"
+  241       | "[" . "]"
+  242 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  243                  | . matrixOrCellLine
+  248 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  249                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  250 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  251                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  252                    | . matrixOrCellColumns variable
+  253                    | . matrixOrCellColumns functionCall
+  254                    | . matrixOrCellColumns "line comment"
+  255                    | . variable
+  256                    | . functionCall
+  257                    | . "line comment"
+  278 multipleResults: "[" . matrixOrCellColumns "]"
+
+    "end of line"   décalage et aller à l'état 67
+    "%t or %T"      décalage et aller à l'état 3
+    "%f or %F"      décalage et aller à l'état 4
+    "~ or @"        décalage et aller à l'état 5
+    "$"             décalage et aller à l'état 6
+    "("             décalage et aller à l'état 9
+    "["             décalage et aller à l'état 60
+    "]"             décalage et aller à l'état 68
+    "{"             décalage et aller à l'état 11
+    "+"             décalage et aller à l'état 12
+    "-"             décalage et aller à l'état 13
+    "string"        décalage et aller à l'état 26
+    "identifier"    décalage et aller à l'état 61
+    "integer"       décalage et aller à l'état 28
+    "float"         décalage et aller à l'état 29
+    "number"        décalage et aller à l'état 30
+    "line comment"  décalage et aller à l'état 69
+
+    functionCall          aller à l'état 70
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 71
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+    matrixOrCellLines     aller à l'état 72
+    matrixOrCellLine      aller à l'état 73
+    matrixOrCellColumns   aller à l'état 74
+
+
+état 11
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1621,121 +1626,121 @@ state 11
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  227     | "{" . matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  228     | "{" . "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  229     | "{" . matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  230     | "{" . "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  231     | "{" . matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  232     | "{" . "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  233     | "{" . "end of line" "}"
-  234     | . "{" "}"
-  234     | "{" . "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  243 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  244                  | . matrixOrCellLine
-  249 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  250                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  251 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  252                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  253                    | . matrixOrCellColumns variable
-  254                    | . matrixOrCellColumns functionCall
-  255                    | . matrixOrCellColumns "line comment"
-  256                    | . variable
-  257                    | . functionCall
-  258                    | . "line comment"
-
-    "end of line"   shift, and go to state 75
-    "%t or %T"      shift, and go to state 3
-    "%f or %F"      shift, and go to state 4
-    "~ or @"        shift, and go to state 5
-    "$"             shift, and go to state 6
-    "("             shift, and go to state 9
-    "["             shift, and go to state 60
-    "{"             shift, and go to state 11
-    "}"             shift, and go to state 76
-    "+"             shift, and go to state 12
-    "-"             shift, and go to state 13
-    "string"        shift, and go to state 26
-    "identifier"    shift, and go to state 61
-    "integer"       shift, and go to state 28
-    "float"         shift, and go to state 29
-    "number"        shift, and go to state 30
-    "line comment"  shift, and go to state 69
-
-    functionCall          go to state 70
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 71
-    cell                  go to state 45
-    matrix                go to state 46
-    matrixOrCellLines     go to state 77
-    matrixOrCellLine      go to state 73
-    matrixOrCellColumns   go to state 78
-
-
-state 12
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  226     | "{" . matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  227     | "{" . "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  228     | "{" . matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  229     | "{" . "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  230     | "{" . matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  231     | "{" . "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  232     | "{" . "end of line" "}"
+  233     | . "{" "}"
+  233     | "{" . "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  242 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  243                  | . matrixOrCellLine
+  248 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  249                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  250 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  251                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  252                    | . matrixOrCellColumns variable
+  253                    | . matrixOrCellColumns functionCall
+  254                    | . matrixOrCellColumns "line comment"
+  255                    | . variable
+  256                    | . functionCall
+  257                    | . "line comment"
+
+    "end of line"   décalage et aller à l'état 75
+    "%t or %T"      décalage et aller à l'état 3
+    "%f or %F"      décalage et aller à l'état 4
+    "~ or @"        décalage et aller à l'état 5
+    "$"             décalage et aller à l'état 6
+    "("             décalage et aller à l'état 9
+    "["             décalage et aller à l'état 60
+    "{"             décalage et aller à l'état 11
+    "}"             décalage et aller à l'état 76
+    "+"             décalage et aller à l'état 12
+    "-"             décalage et aller à l'état 13
+    "string"        décalage et aller à l'état 26
+    "identifier"    décalage et aller à l'état 61
+    "integer"       décalage et aller à l'état 28
+    "float"         décalage et aller à l'état 29
+    "number"        décalage et aller à l'état 30
+    "line comment"  décalage et aller à l'état 69
+
+    functionCall          aller à l'état 70
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 71
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+    matrixOrCellLines     aller à l'état 77
+    matrixOrCellLine      aller à l'état 73
+    matrixOrCellColumns   aller à l'état 78
+
+
+état 12
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1748,97 +1753,97 @@ state 12
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  148          | "+" . variable
-  149          | . "+" functionCall
-  149          | "+" . functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    functionCall          go to state 79
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 80
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 13
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  147          | "+" . variable
+  148          | . "+" functionCall
+  148          | "+" . functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    functionCall          aller à l'état 79
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 80
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 13
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1851,97 +1856,97 @@ state 13
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  146          | "-" . variable
-  147          | . "-" functionCall
-  147          | "-" . functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    functionCall          go to state 81
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 82
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 14
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  145          | "-" . variable
+  146          | . "-" functionCall
+  146          | "-" . functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    functionCall          aller à l'état 81
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 82
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 14
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -1954,168 +1959,168 @@ state 14
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  110 condition: . functionCall
-  111          | . variable
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  280 ifControl: "if" . condition then thenBody "end"
-  281          | "if" . condition then thenBody else elseBody "end"
-  282          | "if" . condition then thenBody elseIfControl "end"
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    functionCall          go to state 83
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    condition             go to state 84
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 85
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 15
-
-  311 select: "select" .
-
-    $default  reduce using rule 311 (select)
-
-
-state 16
-
-  312 select: "switch" .
-
-    $default  reduce using rule 312 (select)
-
-
-state 17
-
-   73 functionDeclaration: "function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   74                    | "function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   75                    | "function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   76                    | "function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   77                    | "function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   78                    | "function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   79                    | "function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   80                    | "function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-
-    "["           shift, and go to state 86
-    "identifier"  shift, and go to state 87
-
-
-state 18
-
-   81 functionDeclaration: "#function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   82                    | "#function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   83                    | "#function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   84                    | "#function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   85                    | "#function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   86                    | "#function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   87                    | "#function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   88                    | "#function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-
-    "["           shift, and go to state 88
-    "identifier"  shift, and go to state 89
-
-
-state 19
-
-   89 functionDeclaration: "hidden" . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   90                    | "hidden" . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   91                    | "hidden" . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   92                    | "hidden" . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   93                    | "hidden" . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   94                    | "hidden" . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   95                    | "hidden" . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   96                    | "hidden" . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+  109 condition: . functionCall
+  110          | . variable
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  279 ifControl: "if" . condition then thenBody "end"
+  280          | "if" . condition then thenBody else elseBody "end"
+  281          | "if" . condition then thenBody elseIfControl "end"
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    functionCall          aller à l'état 83
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    condition             aller à l'état 84
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 85
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 15
+
+  310 select: "select" .
+
+    $défaut  réduction par utilisation de la règle 310 (select)
+
+
+état 16
+
+  311 select: "switch" .
+
+    $défaut  réduction par utilisation de la règle 311 (select)
+
+
+état 17
+
+   72 functionDeclaration: "function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   73                    | "function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   74                    | "function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   75                    | "function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   76                    | "function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   77                    | "function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   78                    | "function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   79                    | "function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+
+    "["           décalage et aller à l'état 86
+    "identifier"  décalage et aller à l'état 87
+
+
+état 18
+
+   80 functionDeclaration: "#function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   81                    | "#function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   82                    | "#function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   83                    | "#function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   84                    | "#function" . "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   85                    | "#function" . "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   86                    | "#function" . "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   87                    | "#function" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+
+    "["           décalage et aller à l'état 88
+    "identifier"  décalage et aller à l'état 89
+
+
+état 19
+
+   88 functionDeclaration: "hidden" . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   89                    | "hidden" . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   90                    | "hidden" . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   91                    | "hidden" . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   92                    | "hidden" . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   93                    | "hidden" . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   94                    | "hidden" . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   95                    | "hidden" . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "function"  shift, and go to state 90
+    "function"  décalage et aller à l'état 90
 
 
-state 20
+état 20
 
-  347 forControl: "for" . "identifier" "=" forIterator forConditionBreak forBody "end"
-  348           | "for" . "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  346 forControl: "for" . "identifier" "=" forIterator forConditionBreak forBody "end"
+  347           | "for" . "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
 
-    "("           shift, and go to state 91
-    "identifier"  shift, and go to state 92
+    "("           décalage et aller à l'état 91
+    "identifier"  décalage et aller à l'état 92
 
 
-state 21
+état 21
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -2128,113 +2133,113 @@ state 21
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  110 condition: . functionCall
-  111          | . variable
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  361 whileControl: "while" . condition whileConditionBreak whileBody "end"
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    functionCall          go to state 83
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    condition             go to state 93
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 85
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 22
+  109 condition: . functionCall
+  110          | . variable
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  360 whileControl: "while" . condition whileConditionBreak whileBody "end"
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    functionCall          aller à l'état 83
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    condition             aller à l'état 93
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 85
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 22
 
    30 expression: "break" .
 
-    $default  reduce using rule 30 (expression)
+    $défaut  réduction par utilisation de la règle 30 (expression)
 
 
-state 23
+état 23
 
    31 expression: "continue" .
 
-    $default  reduce using rule 31 (expression)
+    $défaut  réduction par utilisation de la règle 31 (expression)
 
 
-state 24
+état 24
 
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
@@ -2273,196 +2278,197 @@ state 24
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-   73 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   74                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   75                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   76                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   77                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   78                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   79                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   80                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   81                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   82                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   83                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   84                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   85                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   86                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   87                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   88                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   89                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   90                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   91                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   92                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   93                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   94                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   95                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   96                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  261 variableDeclaration: . assignable "=" variable
-  262                    | . assignable "=" functionCall
-  263                    | . functionCall "=" variable
-  264                    | . functionCall "=" functionCall
-  265                    | . assignable "=" ":"
-  266                    | . functionCall "=" ":"
-  267                    | . assignable "=" returnControl
-  268                    | . functionCall "=" returnControl
-  269 assignable: . variable "." "identifier"
-  270           | . variable "." keywords
-  271           | . variable "." functionCall
-  272           | . functionCall "." variable
-  273           | . functionCall "." keywords
-  274           | . functionCall "." functionCall
-  275           | . "identifier"
-  276           | . multipleResults
-  277           | . variable "(" functionArgs ")"
-  278           | . functionCall "(" functionArgs ")"
-  279 multipleResults: . "[" matrixOrCellColumns "]"
-  280 ifControl: . "if" condition then thenBody "end"
-  281          | . "if" condition then thenBody else elseBody "end"
-  282          | . "if" condition then thenBody elseIfControl "end"
-  307 selectControl: . select selectable selectConditionBreak casesControl "end"
-  308              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  309              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  310              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  311 select: . "select"
-  312       | . "switch"
-  347 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  348           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  361 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  382 tryControl: . "try" catchBody "catch" catchBody "end"
-  382           | "try" . catchBody "catch" catchBody "end"
-  383           | . "try" catchBody "end"
-  383           | "try" . catchBody "end"
-  384 catchBody: . expressions
-  385          | . "end of line" expressions
-  386          | . "," expressions
-  387          | . "end of line"
-  388          | .  ["end", "catch"]
-  389 returnControl: . "return"
-  390              | . "return" variable
-
-    error           shift, and go to state 1
-    "end of line"   shift, and go to state 94
-    "%t or %T"      shift, and go to state 3
-    "%f or %F"      shift, and go to state 4
-    "~ or @"        shift, and go to state 5
-    "$"             shift, and go to state 6
-    ","             shift, and go to state 95
-    "("             shift, and go to state 9
-    "["             shift, and go to state 10
-    "{"             shift, and go to state 11
-    "+"             shift, and go to state 12
-    "-"             shift, and go to state 13
-    "if"            shift, and go to state 14
-    "select"        shift, and go to state 15
-    "switch"        shift, and go to state 16
-    "function"      shift, and go to state 17
-    "#function"     shift, and go to state 18
-    "hidden"        shift, and go to state 19
-    "for"           shift, and go to state 20
-    "while"         shift, and go to state 21
-    "break"         shift, and go to state 22
-    "continue"      shift, and go to state 23
-    "try"           shift, and go to state 24
-    "return"        shift, and go to state 25
-    "string"        shift, and go to state 26
-    "identifier"    shift, and go to state 27
-    "integer"       shift, and go to state 28
-    "float"         shift, and go to state 29
-    "number"        shift, and go to state 30
-    "line comment"  shift, and go to state 31
-
-    "end"    reduce using rule 388 (catchBody)
-    "catch"  reduce using rule 388 (catchBody)
-
-    expressions           go to state 96
-    recursiveExpression   go to state 34
-    expression            go to state 36
-    implicitFunctionCall  go to state 37
-    functionCall          go to state 38
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    functionDeclaration   go to state 41
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 44
-    cell                  go to state 45
-    matrix                go to state 46
-    variableDeclaration   go to state 47
-    assignable            go to state 48
-    multipleResults       go to state 49
-    ifControl             go to state 50
-    selectControl         go to state 51
-    select                go to state 52
-    forControl            go to state 53
-    whileControl          go to state 54
-    tryControl            go to state 55
-    catchBody             go to state 97
-    returnControl         go to state 56
-
-
-state 25
+   72 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   73                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   74                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   75                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   76                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   77                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   78                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   79                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   80                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   81                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   82                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   83                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   84                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   85                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   86                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   87                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   88                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   89                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   90                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   91                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   92                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   93                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   94                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   95                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  260 variableDeclaration: . assignable "=" variable
+  261                    | . assignable "=" functionCall
+  262                    | . functionCall "=" variable
+  263                    | . functionCall "=" functionCall
+  264                    | . assignable "=" ":"
+  265                    | . functionCall "=" ":"
+  266                    | . assignable "=" returnControl
+  267                    | . functionCall "=" returnControl
+  268 assignable: . variable "." "identifier"
+  269           | . variable "." keywords
+  270           | . variable "." functionCall
+  271           | . functionCall "." variable
+  272           | . functionCall "." keywords
+  273           | . functionCall "." functionCall
+  274           | . "identifier"
+  275           | . multipleResults
+  276           | . variable "(" functionArgs ")"
+  277           | . functionCall "(" functionArgs ")"
+  278 multipleResults: . "[" matrixOrCellColumns "]"
+  279 ifControl: . "if" condition then thenBody "end"
+  280          | . "if" condition then thenBody else elseBody "end"
+  281          | . "if" condition then thenBody elseIfControl "end"
+  306 selectControl: . select selectable selectConditionBreak casesControl "end"
+  307              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  308              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  309              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  310 select: . "select"
+  311       | . "switch"
+  346 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  347           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  360 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  381 tryControl: . "try" catchBody "catch" catchBody "end"
+  381           | "try" . catchBody "catch" catchBody "end"
+  382           | . "try" catchBody "end"
+  382           | "try" . catchBody "end"
+  383 catchBody: . expressions
+  384          | . "end of line" expressions
+  385          | . "," expressions
+  386          | . "end of line"
+  387          | .  ["end", "catch"]
+  388 returnControl: . "return"
+  389              | . "return" variable
+  390              | . "return" functionCall
+
+    error           décalage et aller à l'état 1
+    "end of line"   décalage et aller à l'état 94
+    "%t or %T"      décalage et aller à l'état 3
+    "%f or %F"      décalage et aller à l'état 4
+    "~ or @"        décalage et aller à l'état 5
+    "$"             décalage et aller à l'état 6
+    ","             décalage et aller à l'état 95
+    "("             décalage et aller à l'état 9
+    "["             décalage et aller à l'état 10
+    "{"             décalage et aller à l'état 11
+    "+"             décalage et aller à l'état 12
+    "-"             décalage et aller à l'état 13
+    "if"            décalage et aller à l'état 14
+    "select"        décalage et aller à l'état 15
+    "switch"        décalage et aller à l'état 16
+    "function"      décalage et aller à l'état 17
+    "#function"     décalage et aller à l'état 18
+    "hidden"        décalage et aller à l'état 19
+    "for"           décalage et aller à l'état 20
+    "while"         décalage et aller à l'état 21
+    "break"         décalage et aller à l'état 22
+    "continue"      décalage et aller à l'état 23
+    "try"           décalage et aller à l'état 24
+    "return"        décalage et aller à l'état 25
+    "string"        décalage et aller à l'état 26
+    "identifier"    décalage et aller à l'état 27
+    "integer"       décalage et aller à l'état 28
+    "float"         décalage et aller à l'état 29
+    "number"        décalage et aller à l'état 30
+    "line comment"  décalage et aller à l'état 31
+
+    "end"    réduction par utilisation de la règle 387 (catchBody)
+    "catch"  réduction par utilisation de la règle 387 (catchBody)
+
+    expressions           aller à l'état 96
+    recursiveExpression   aller à l'état 34
+    expression            aller à l'état 36
+    implicitFunctionCall  aller à l'état 37
+    functionCall          aller à l'état 38
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    functionDeclaration   aller à l'état 41
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 44
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+    variableDeclaration   aller à l'état 47
+    assignable            aller à l'état 48
+    multipleResults       aller à l'état 49
+    ifControl             aller à l'état 50
+    selectControl         aller à l'état 51
+    select                aller à l'état 52
+    forControl            aller à l'état 53
+    whileControl          aller à l'état 54
+    tryControl            aller à l'état 55
+    catchBody             aller à l'état 97
+    returnControl         aller à l'état 56
+
+
+état 25
 
    50 functionCall: . simpleFunctionCall
    51             | . specificFunctionCall
@@ -2475,106 +2481,107 @@ state 25
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  389 returnControl: "return" .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  390              | "return" . variable
-
-    "%t or %T"    shift, and go to state 3
-    "%f or %F"    shift, and go to state 4
-    "~ or @"      shift, and go to state 5
-    "$"           shift, and go to state 6
-    "("           shift, and go to state 9
-    "["           shift, and go to state 60
-    "{"           shift, and go to state 11
-    "+"           shift, and go to state 12
-    "-"           shift, and go to state 13
-    "string"      shift, and go to state 26
-    "identifier"  shift, and go to state 61
-    "integer"     shift, and go to state 28
-    "float"       shift, and go to state 29
-    "number"      shift, and go to state 30
-
-    $default  reduce using rule 389 (returnControl)
-
-    functionCall          go to state 98
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 99
-    cell                  go to state 45
-    matrix                go to state 46
-
-
-state 26
-
-  212 variable: "string" .
-
-    $default  reduce using rule 212 (variable)
-
-
-state 27
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  388 returnControl: "return" .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  389              | "return" . variable
+  390              | "return" . functionCall
+
+    "%t or %T"    décalage et aller à l'état 3
+    "%f or %F"    décalage et aller à l'état 4
+    "~ or @"      décalage et aller à l'état 5
+    "$"           décalage et aller à l'état 6
+    "("           décalage et aller à l'état 9
+    "["           décalage et aller à l'état 60
+    "{"           décalage et aller à l'état 11
+    "+"           décalage et aller à l'état 12
+    "-"           décalage et aller à l'état 13
+    "string"      décalage et aller à l'état 26
+    "identifier"  décalage et aller à l'état 61
+    "integer"     décalage et aller à l'état 28
+    "float"       décalage et aller à l'état 29
+    "number"      décalage et aller à l'état 30
+
+    $défaut  réduction par utilisation de la règle 388 (returnControl)
+
+    functionCall          aller à l'état 98
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 99
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+
+
+état 26
+
+  211 variable: "string" .
+
+    $défaut  réduction par utilisation de la règle 211 (variable)
+
+
+état 27
 
    36 implicitFunctionCall: "identifier" . implicitCallable
    37 implicitCallable: . "identifier"
@@ -2598,73 +2605,73 @@ state 27
    59                   | "identifier" . "(" ")"
    60                   | . "identifier" "{" "}"
    60                   | "identifier" . "{" "}"
-  208 variable: "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  275 assignable: "identifier" .  ["="]
+  207 variable: "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  274 assignable: "identifier" .  ["="]
 
-    "%t or %T"    shift, and go to state 100
-    "%f or %F"    shift, and go to state 101
-    "$"           shift, and go to state 102
-    "("           shift, and go to state 103
-    "{"           shift, and go to state 104
-    "string"      shift, and go to state 105
-    "identifier"  shift, and go to state 106
-    "integer"     shift, and go to state 107
-    "float"       shift, and go to state 108
-    "number"      shift, and go to state 109
-    "path"        shift, and go to state 110
+    "%t or %T"    décalage et aller à l'état 100
+    "%f or %F"    décalage et aller à l'état 101
+    "$"           décalage et aller à l'état 102
+    "("           décalage et aller à l'état 103
+    "{"           décalage et aller à l'état 104
+    "string"      décalage et aller à l'état 105
+    "identifier"  décalage et aller à l'état 106
+    "integer"     décalage et aller à l'état 107
+    "float"       décalage et aller à l'état 108
+    "number"      décalage et aller à l'état 109
+    "path"        décalage et aller à l'état 110
 
-    "="       reduce using rule 275 (assignable)
-    $default  reduce using rule 208 (variable)
+    "="       réduction par utilisation de la règle 274 (assignable)
+    $défaut  réduction par utilisation de la règle 207 (variable)
 
-    implicitCallable    go to state 111
-    simpleFunctionCall  go to state 112
+    implicitCallable    aller à l'état 111
+    simpleFunctionCall  aller à l'état 112
 
-    Conflict between rule 208 and token "(" resolved as shift (LISTABLE < "(").
+    Conflit entre la règle 207 et le jeton "(" résolu par décalage (LISTABLE < "(").
 
 
-state 28
+état 28
 
-  209 variable: "integer" .
+  208 variable: "integer" .
 
-    $default  reduce using rule 209 (variable)
+    $défaut  réduction par utilisation de la règle 208 (variable)
 
 
-state 29
+état 29
 
-  211 variable: "float" .
+  210 variable: "float" .
 
-    $default  reduce using rule 211 (variable)
+    $défaut  réduction par utilisation de la règle 210 (variable)
 
 
-state 30
+état 30
 
-  210 variable: "number" .
+  209 variable: "number" .
 
-    $default  reduce using rule 210 (variable)
+    $défaut  réduction par utilisation de la règle 209 (variable)
 
 
-state 31
+état 31
 
    33 expression: "line comment" .
 
-    $default  reduce using rule 33 (expression)
+    $défaut  réduction par utilisation de la règle 33 (expression)
 
 
-state 32
+état 32
 
     0 $accept: program . "end of file"
 
-    "end of file"  shift, and go to state 113
+    "end of file"  décalage et aller à l'état 113
 
 
-state 33
+état 33
 
     1 program: expressions .
 
-    $default  reduce using rule 1 (program)
+    $défaut  réduction par utilisation de la règle 1 (program)
 
 
-state 34
+état 34
 
     5 expressions: recursiveExpression .  ["end of file", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch"]
     6            | recursiveExpression . expression
@@ -2699,204 +2706,205 @@ state 34
    58                   | . "identifier" "{" functionArgs "}"
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
-   73 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   74                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   75                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   76                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   77                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   78                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   79                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   80                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   81                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   82                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   83                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   84                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   85                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   86                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   87                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   88                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   89                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   90                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   91                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   92                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
-   93                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   94                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   95                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-   96                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
-  112 comparison: . variable rightComparable
-  113           | . functionCall rightComparable
-  144 operation: . variable rightOperand
-  145          | . functionCall rightOperand
-  146          | . "-" variable
-  147          | . "-" functionCall
-  148          | . "+" variable
-  149          | . "+" functionCall
-  150          | . variable "** or ^" variable
-  151          | . variable "** or ^" functionCall
-  152          | . functionCall "** or ^" variable
-  153          | . functionCall "** or ^" functionCall
-  154          | . variable ".^" variable
-  155          | . variable ".^" functionCall
-  156          | . functionCall ".^" variable
-  157          | . functionCall ".^" functionCall
-  158          | . variable "'"
-  159          | . variable ".'"
-  160          | . functionCall "'"
-  161          | . functionCall ".'"
-  195 variable: . "~ or @" variable
-  196         | . "~ or @" functionCall
-  197         | . variable "." "identifier"
-  198         | . variable "." keywords
-  199         | . variable "." functionCall
-  200         | . functionCall "." variable
-  201         | . functionCall "." keywords
-  202         | . functionCall "." functionCall
-  203         | . variable listableEnd
-  204         | . functionCall listableEnd
-  205         | . matrix
-  206         | . cell
-  207         | . operation
-  208         | . "identifier"
-  209         | . "integer"
-  210         | . "number"
-  211         | . "float"
-  212         | . "string"
-  213         | . "$"
-  214         | . "%t or %T"
-  215         | . "%f or %F"
-  216         | . "(" variable ")"
-  217         | . "(" variableFields ")"
-  218         | . comparison
-  219         | . variable "(" functionArgs ")"
-  220         | . functionCall "(" functionArgs ")"
-  227 cell: . "{" matrixOrCellLines "}"
-  228     | . "{" "end of line" matrixOrCellLines "}"
-  229     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  230     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  231     | . "{" matrixOrCellColumns "}"
-  232     | . "{" "end of line" matrixOrCellColumns "}"
-  233     | . "{" "end of line" "}"
-  234     | . "{" "}"
-  235 matrix: . "[" matrixOrCellLines "]"
-  236       | . "[" "end of line" matrixOrCellLines "]"
-  237       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  238       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  239       | . "[" matrixOrCellColumns "]"
-  240       | . "[" "end of line" matrixOrCellColumns "]"
-  241       | . "[" "end of line" "]"
-  242       | . "[" "]"
-  261 variableDeclaration: . assignable "=" variable
-  262                    | . assignable "=" functionCall
-  263                    | . functionCall "=" variable
-  264                    | . functionCall "=" functionCall
-  265                    | . assignable "=" ":"
-  266                    | . functionCall "=" ":"
-  267                    | . assignable "=" returnControl
-  268                    | . functionCall "=" returnControl
-  269 assignable: . variable "." "identifier"
-  270           | . variable "." keywords
-  271           | . variable "." functionCall
-  272           | . functionCall "." variable
-  273           | . functionCall "." keywords
-  274           | . functionCall "." functionCall
-  275           | . "identifier"
-  276           | . multipleResults
-  277           | . variable "(" functionArgs ")"
-  278           | . functionCall "(" functionArgs ")"
-  279 multipleResults: . "[" matrixOrCellColumns "]"
-  280 ifControl: . "if" condition then thenBody "end"
-  281          | . "if" condition then thenBody else elseBody "end"
-  282          | . "if" condition then thenBody elseIfControl "end"
-  307 selectControl: . select selectable selectConditionBreak casesControl "end"
-  308              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  309              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  310              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  311 select: . "select"
-  312       | . "switch"
-  347 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  348           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  361 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  382 tryControl: . "try" catchBody "catch" catchBody "end"
-  383           | . "try" catchBody "end"
-  389 returnControl: . "return"
-  390              | . "return" variable
-
-    error           shift, and go to state 1
-    "%t or %T"      shift, and go to state 3
-    "%f or %F"      shift, and go to state 4
-    "~ or @"        shift, and go to state 5
-    "$"             shift, and go to state 6
-    "("             shift, and go to state 9
-    "["             shift, and go to state 10
-    "{"             shift, and go to state 11
-    "+"             shift, and go to state 12
-    "-"             shift, and go to state 13
-    "if"            shift, and go to state 14
-    "select"        shift, and go to state 15
-    "switch"        shift, and go to state 16
-    "function"      shift, and go to state 17
-    "#function"     shift, and go to state 18
-    "hidden"        shift, and go to state 19
-    "for"           shift, and go to state 20
-    "while"         shift, and go to state 21
-    "break"         shift, and go to state 22
-    "continue"      shift, and go to state 23
-    "try"           shift, and go to state 24
-    "return"        shift, and go to state 25
-    "string"        shift, and go to state 26
-    "identifier"    shift, and go to state 27
-    "integer"       shift, and go to state 28
-    "float"         shift, and go to state 29
-    "number"        shift, and go to state 30
-    "line comment"  shift, and go to state 31
-
-    "end of file"  reduce using rule 5 (expressions)
-    "else"         reduce using rule 5 (expressions)
-    "elseif"       reduce using rule 5 (expressions)
-    "end"          reduce using rule 5 (expressions)
-    "case"         reduce using rule 5 (expressions)
-    "otherwise"    reduce using rule 5 (expressions)
-    "endfunction"  reduce using rule 5 (expressions)
-    "catch"        reduce using rule 5 (expressions)
-
-    expression            go to state 114
-    implicitFunctionCall  go to state 37
-    functionCall          go to state 38
-    specificFunctionCall  go to state 39
-    simpleFunctionCall    go to state 40
-    functionDeclaration   go to state 41
-    comparison            go to state 42
-    operation             go to state 43
-    variable              go to state 44
-    cell                  go to state 45
-    matrix                go to state 46
-    variableDeclaration   go to state 47
-    assignable            go to state 48
-    multipleResults       go to state 49
-    ifControl             go to state 50
-    selectControl         go to state 51
-    select                go to state 52
-    forControl            go to state 53
-    whileControl          go to state 54
-    tryControl            go to state 55
-    returnControl         go to state 56
-
-
-state 35
+   72 functionDeclaration: . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   73                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   74                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   75                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   76                    | . "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   77                    | . "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   78                    | . "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   79                    | . "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   80                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   81                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   82                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   83                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   84                    | . "#function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   85                    | . "#function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   86                    | . "#function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   87                    | . "#function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   88                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   89                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   90                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   91                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
+   92                    | . "hidden" "function" "identifier" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   93                    | . "hidden" "function" "[" functionDeclarationReturns "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   94                    | . "hidden" "function" "[" "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+   95                    | . "hidden" "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
+  111 comparison: . variable rightComparable
+  112           | . functionCall rightComparable
+  143 operation: . variable rightOperand
+  144          | . functionCall rightOperand
+  145          | . "-" variable
+  146          | . "-" functionCall
+  147          | . "+" variable
+  148          | . "+" functionCall
+  149          | . variable "** or ^" variable
+  150          | . variable "** or ^" functionCall
+  151          | . functionCall "** or ^" variable
+  152          | . functionCall "** or ^" functionCall
+  153          | . variable ".^" variable
+  154          | . variable ".^" functionCall
+  155          | . functionCall ".^" variable
+  156          | . functionCall ".^" functionCall
+  157          | . variable "'"
+  158          | . variable ".'"
+  159          | . functionCall "'"
+  160          | . functionCall ".'"
+  194 variable: . "~ or @" variable
+  195         | . "~ or @" functionCall
+  196         | . variable "." "identifier"
+  197         | . variable "." keywords
+  198         | . variable "." functionCall
+  199         | . functionCall "." variable
+  200         | . functionCall "." keywords
+  201         | . functionCall "." functionCall
+  202         | . variable listableEnd
+  203         | . functionCall listableEnd
+  204         | . matrix
+  205         | . cell
+  206         | . operation
+  207         | . "identifier"
+  208         | . "integer"
+  209         | . "number"
+  210         | . "float"
+  211         | . "string"
+  212         | . "$"
+  213         | . "%t or %T"
+  214         | . "%f or %F"
+  215         | . "(" variable ")"
+  216         | . "(" variableFields ")"
+  217         | . comparison
+  218         | . variable "(" functionArgs ")"
+  219         | . functionCall "(" functionArgs ")"
+  226 cell: . "{" matrixOrCellLines "}"
+  227     | . "{" "end of line" matrixOrCellLines "}"
+  228     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  229     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  230     | . "{" matrixOrCellColumns "}"
+  231     | . "{" "end of line" matrixOrCellColumns "}"
+  232     | . "{" "end of line" "}"
+  233     | . "{" "}"
+  234 matrix: . "[" matrixOrCellLines "]"
+  235       | . "[" "end of line" matrixOrCellLines "]"
+  236       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  237       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  238       | . "[" matrixOrCellColumns "]"
+  239       | . "[" "end of line" matrixOrCellColumns "]"
+  240       | . "[" "end of line" "]"
+  241       | . "[" "]"
+  260 variableDeclaration: . assignable "=" variable
+  261                    | . assignable "=" functionCall
+  262                    | . functionCall "=" variable
+  263                    | . functionCall "=" functionCall
+  264                    | . assignable "=" ":"
+  265                    | . functionCall "=" ":"
+  266                    | . assignable "=" returnControl
+  267                    | . functionCall "=" returnControl
+  268 assignable: . variable "." "identifier"
+  269           | . variable "." keywords
+  270           | . variable "." functionCall
+  271           | . functionCall "." variable
+  272           | . functionCall "." keywords
+  273           | . functionCall "." functionCall
+  274           | . "identifier"
+  275           | . multipleResults
+  276           | . variable "(" functionArgs ")"
+  277           | . functionCall "(" functionArgs ")"
+  278 multipleResults: . "[" matrixOrCellColumns "]"
+  279 ifControl: . "if" condition then thenBody "end"
+  280          | . "if" condition then thenBody else elseBody "end"
+  281          | . "if" condition then thenBody elseIfControl "end"
+  306 selectControl: . select selectable selectConditionBreak casesControl "end"
+  307              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  308              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  309              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  310 select: . "select"
+  311       | . "switch"
+  346 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  347           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  360 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  381 tryControl: . "try" catchBody "catch" catchBody "end"
+  382           | . "try" catchBody "end"
+  388 returnControl: . "return"
+  389              | . "return" variable
+  390              | . "return" functionCall
+
+    error           décalage et aller à l'état 1
+    "%t or %T"      décalage et aller à l'état 3
+    "%f or %F"      décalage et aller à l'état 4
+    "~ or @"        décalage et aller à l'état 5
+    "$"             décalage et aller à l'état 6
+    "("             décalage et aller à l'état 9
+    "["             décalage et aller à l'état 10
+    "{"             décalage et aller à l'état 11
+    "+"             décalage et aller à l'état 12
+    "-"             décalage et aller à l'état 13
+    "if"            décalage et aller à l'état 14
+    "select"        décalage et aller à l'état 15
+    "switch"        décalage et aller à l'état 16
+    "function"      décalage et aller à l'état 17
+    "#function"     décalage et aller à l'état 18
+    "hidden"        décalage et aller à l'état 19
+    "for"           décalage et aller à l'état 20
+    "while"         décalage et aller à l'état 21
+    "break"         décalage et aller à l'état 22
+    "continue"      décalage et aller à l'état 23
+    "try"           décalage et aller à l'état 24
+    "return"        décalage et aller à l'état 25
+    "string"        décalage et aller à l'état 26
+    "identifier"    décalage et aller à l'état 27
+    "integer"       décalage et aller à l'état 28
+    "float"         décalage et aller à l'état 29
+    "number"        décalage et aller à l'état 30
+    "line comment"  décalage et aller à l'état 31
+
+    "end of file"  réduction par utilisation de la règle 5 (expressions)
+    "else"         réduction par utilisation de la règle 5 (expressions)
+    "elseif"       réduction par utilisation de la règle 5 (expressions)
+    "end"          réduction par utilisation de la règle 5 (expressions)
+    "case"         réduction par utilisation de la règle 5 (expressions)
+    "otherwise"    réduction par utilisation de la règle 5 (expressions)
+    "endfunction"  réduction par utilisation de la règle 5 (expressions)
+    "catch"        réduction par utilisation de la règle 5 (expressions)
+
+    expression            aller à l'état 114
+    implicitFunctionCall  aller à l'état 37
+    functionCall          aller à l'état 38
+    specificFunctionCall  aller à l'état 39
+    simpleFunctionCall    aller à l'état 40
+    functionDeclaration   aller à l'état 41
+    comparison            aller à l'état 42
+    operation             aller à l'état 43
+    variable              aller à l'état 44
+    cell                  aller à l'état 45
+    matrix                aller à l'état 46
+    variableDeclaration   aller à l'état 47
+    assignable            aller à l'état 48
+    multipleResults       aller à l'état 49
+    ifControl             aller à l'état 50
+    selectControl         aller à l'état 51
+    select                aller à l'état 52
+    forControl            aller à l'état 53
+    whileControl          aller à l'état 54
+    tryControl            aller à l'état 55
+    returnControl         aller à l'état 56
+
+
+état 35
 
     3 program: expressionLineBreak .  ["end of file"]
    17 expressionLineBreak: expressionLineBreak . ";"
    18                    | expressionLineBreak . ","
    19                    | expressionLineBreak . "end of line"
 
-    "end of line"  shift, and go to state 115
-    ","            shift, and go to state 116
-    ";"            shift, and go to state 117
+    "end of line"  décalage et aller à l'état 115
+    ","            décalage et aller à l'état 116
+    ";"            décalage et aller à l'état 117
 
-    $default  reduce using rule 3 (program)
+    $défaut  réduction par utilisation de la règle 3 (program)
 
 
-state 36
+état 36
 
     8 expressions: expression .  ["end of file", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch"]
     9            | expression . "line comment"
@@ -2909,17 +2917,17 @@ state 36
    18                    | . expressionLineBreak ","
    19                    | . expressionLineBreak "end of line"
 
-    "end of line"   shift, and go to state 118
-    ","             shift, and go to state 7
-    ";"             shift, and go to state 8
-    "line comment"  shift, and go to state 119
+    "end of line"   décalage et aller à l'état 118
+    ","             décalage et aller à l'état 7
+    ";"             décalage et aller à l'état 8
+    "line comment"  décalage et aller à l'état 119
 
-    $default  reduce using rule 8 (expressions)
+    $défaut  réduction par utilisation de la règle 8 (expressions)
 
-    expressionLineBreak  go to state 120
+    expressionLineBreak  aller à l'état 120
 
 
-state 37
+état 37
 
    29 expression: implicitFunctionCall .  ["end of file", "end of line", ",", ";", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
    35 implicitFunctionCall: implicitFunctionCall . implicitCallable
@@ -2941,363 +2949,363 @@ state 37
    59                   | . "identifier" "(" ")"
    60                   | . "identifier" "{" "}"
 
-    "%t or %T"    shift, and go to state 100
-    "%f or %F"    shift, and go to state 101
-    "$"           shift, and go to state 102
-    "string"      shift, and go to state 105
-    "identifier"  shift, and go to state 106
-    "integer"     shift, and go to state 107
-    "float"       shift, and go to state 108
-    "number"      shift, and go to state 109
-    "path"        shift, and go to state 110
+    "%t or %T"    décalage et aller à l'état 100
+    "%f or %F"    décalage et aller à l'état 101
+    "$"           décalage et aller à l'état 102
+    "string"      décalage et aller à l'état 105
+    "identifier"  décalage et aller à l'état 106
+    "integer"     décalage et aller à l'état 107
+    "float"       décalage et aller à l'état 108
+    "number"      décalage et aller à l'état 109
+    "path"        décalage et aller à l'état 110
 
-    $default  reduce using rule 29 (expression)
+    $défaut  réduction par utilisation de la règle 29 (expression)
 
-    implicitCallable    go to state 121
-    simpleFunctionCall  go to state 112
+    implicitCallable    aller à l'état 121
+    simpleFunctionCall  aller à l'état 112
 
 
-state 38
+état 38
 
    21 expression: functionCall .  ["end of file", "end of line", ",", ";", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  113 comparison: functionCall . rightComparable
-  114 rightComparable: . "&" variable
-  115                | . "&" functionCall
-  116                | . "&" ":"
-  117                | . "&&" variable
-  118                | . "&&" functionCall
-  119                | . "&&" ":"
-  120                | . "|" variable
-  121                | . "|" functionCall
-  122                | . "|" ":"
-  123                | . "||" variable
-  124                | . "||" functionCall
-  125                | . "||" ":"
-  126                | . "==" variable
-  127                | . "==" functionCall
-  128                | . "==" ":"
-  129                | . "<> or ~=" variable
-  130                | . "<> or ~=" functionCall
-  131                | . "<> or ~=" ":"
-  132                | . ">" variable
-  133                | . ">" functionCall
-  134                | . ">" ":"
-  135                | . "<" variable
-  136                | . "<" functionCall
-  137                | . "<" ":"
-  138                | . ">=" variable
-  139                | . ">=" functionCall
-  140                | . ">=" ":"
-  141                | . "<=" variable
-  142                | . "<=" functionCall
-  143                | . "<=" ":"
-  145 operation: functionCall . rightOperand
-  152          | functionCall . "** or ^" variable
-  153          | functionCall . "** or ^" functionCall
-  156          | functionCall . ".^" variable
-  157          | functionCall . ".^" functionCall
-  160          | functionCall . "'"
-  161          | functionCall . ".'"
-  162 rightOperand: . "+" variable
-  163             | . "+" functionCall
-  164             | . "-" variable
-  165             | . "-" functionCall
-  166             | . "*" variable
-  167             | . "*" functionCall
-  168             | . ".*" variable
-  169             | . ".*" functionCall
-  170             | . ".*." variable
-  171             | . ".*." functionCall
-  172             | . "*." variable
-  173             | . "*." functionCall
-  174             | . "/" variable
-  175             | . "/" functionCall
-  176             | . "./" variable
-  177             | . "./" functionCall
-  178             | . "./." variable
-  179             | . "./." functionCall
-  180             | . "/." variable
-  181             | . "/." functionCall
-  182             | . "\\" variable
-  183             | . "\\" functionCall
-  184             | . ".\\" variable
-  185             | . ".\\" functionCall
-  186             | . ".\\." variable
-  187             | . ".\\." functionCall
-  188             | . "\\." variable
-  189             | . "\\." functionCall
-  190 listableBegin: . ":" variable
-  191              | . ":" functionCall
-  192 listableEnd: . listableBegin ":" variable
-  193            | . listableBegin ":" functionCall
-  194            | . listableBegin
-  200 variable: functionCall . "." variable
-  201         | functionCall . "." keywords
-  202         | functionCall . "." functionCall
-  204         | functionCall . listableEnd
-  220         | functionCall . "(" functionArgs ")"
-  263 variableDeclaration: functionCall . "=" variable
-  264                    | functionCall . "=" functionCall
-  266                    | functionCall . "=" ":"
-  268                    | functionCall . "=" returnControl
-  272 assignable: functionCall . "." variable
-  273           | functionCall . "." keywords
-  274           | functionCall . "." functionCall
-  278           | functionCall . "(" functionArgs ")"
-
-    "'"         shift, and go to state 122
-    ":"         shift, and go to state 123
-    "("         shift, and go to state 124
-    "."         shift, and go to state 125
-    ".'"        shift, and go to state 126
-    "+"         shift, and go to state 127
-    "-"         shift, and go to state 128
-    "*"         shift, and go to state 129
-    ".*"        shift, and go to state 130
-    ".*."       shift, and go to state 131
-    "*."        shift, and go to state 132
-    "/"         shift, and go to state 133
-    "./"        shift, and go to state 134
-    "/."        shift, and go to state 135
-    "./."       shift, and go to state 136
-    "\\"        shift, and go to state 137
-    ".\\"       shift, and go to state 138
-    "\\."       shift, and go to state 139
-    ".\\."      shift, and go to state 140
-    "** or ^"   shift, and go to state 141
-    ".^"        shift, and go to state 142
-    "=="        shift, and go to state 143
-    "<> or ~="  shift, and go to state 144
-    "<"         shift, and go to state 145
-    "<="        shift, and go to state 146
-    ">"         shift, and go to state 147
-    ">="        shift, and go to state 148
-    "&"         shift, and go to state 149
-    "&&"        shift, and go to state 150
-    "|"         shift, and go to state 151
-    "||"        shift, and go to state 152
-    "="         shift, and go to state 153
-
-    $default  reduce using rule 21 (expression)
-
-    rightComparable  go to state 154
-    rightOperand     go to state 155
-    listableBegin    go to state 156
-    listableEnd      go to state 157
-
-
-state 39
+  112 comparison: functionCall . rightComparable
+  113 rightComparable: . "&" variable
+  114                | . "&" functionCall
+  115                | . "&" ":"
+  116                | . "&&" variable
+  117                | . "&&" functionCall
+  118                | . "&&" ":"
+  119                | . "|" variable
+  120                | . "|" functionCall
+  121                | . "|" ":"
+  122                | . "||" variable
+  123                | . "||" functionCall
+  124                | . "||" ":"
+  125                | . "==" variable
+  126                | . "==" functionCall
+  127                | . "==" ":"
+  128                | . "<> or ~=" variable
+  129                | . "<> or ~=" functionCall
+  130                | . "<> or ~=" ":"
+  131                | . ">" variable
+  132                | . ">" functionCall
+  133                | . ">" ":"
+  134                | . "<" variable
+  135                | . "<" functionCall
+  136                | .&nbs