* Bug 14567 fixed [Scinotes]: Restore the TODO feature 40/21640/8
Samuel GOUGEON [Fri, 11 Dec 2020 14:43:54 +0000 (15:43 +0100)]
  http://bugzilla.scilab.org/14567
  http://bugzilla.scilab.org/14567#c8

  Built after
   removal: https://codereview.scilab.org/#/c/18147
   1st trial: https://codereview.scilab.org/18422
  Not tested

Change-Id: I51188dcbed1106f6e62d3f43db54afcefd97c248

scilab/CHANGES.md
scilab/modules/scinotes/src/java/jflex/scilab.jflex
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/ScilabLexer.java

index 87dfbf4..babde46 100644 (file)
@@ -361,6 +361,7 @@ Bug Fixes
 * [#14435](https://bugzilla.scilab.org/14435): Errors were not well handled in overloaded functions.
 * [#14477](https://bugzilla.scilab.org/14477): `mtlb_sparse()` removed from the documentation.
 * [#14488](https://bugzilla.scilab.org/14488): The `frameflag=9` and `strf=".9."` values of these `plot2d` options were no longer accepted. Their documentation was ambiguous.
+* [#14567](https://bugzilla.scilab.org/14567): In Scinotes, the `TODO` keyword was no longer highlighted.
 * [#14718](https://bugzilla.scilab.org/14718): `user` is removed for a while but was still documented.
 * [#14873](https://bugzilla.scilab.org/14873): `setfield` page: The output and the 6.0 history were documented only on the en_US version. The input was wrongly restricted to matrices, while any Scilab object is acceptable. The specific role of `setfield` for mlists was not really described nor illustrated. The example did not include any call to setfield.
 * [#15012](https://bugzilla.scilab.org/15012): `covStart(["isempty" ; "isscalar"])` crashed Scilab.
index ab9e1d1..69698e5 100644 (file)
@@ -42,27 +42,27 @@ import org.scilab.modules.commons.ScilabCommonsUtils;
     private MatchingBlockScanner matchBlock;
 
     static {
-       // For SciNotes colors in preferences
-       commands.add("cos");
-       macros.add("sind");
+        // For SciNotes colors in preferences
+        commands.add("cos");
+        macros.add("sind");
     }
 
     public ScilabLexer(ScilabDocument doc) {
-       this(doc, new MatchingBlockScanner(doc), true);
+        this(doc, new MatchingBlockScanner(doc), true);
     }
 
     public ScilabLexer(ScilabDocument doc, boolean update) {
-       this(doc, new MatchingBlockScanner(doc), update);
+        this(doc, new MatchingBlockScanner(doc), update);
     }
 
     public ScilabLexer(ScilabDocument doc, MatchingBlockScanner matchBlock, boolean update) {
         this.doc = doc;
         this.elem = doc.getDefaultRootElement();
         this.infile = doc.getFunctionsInDoc();
-       this.matchBlock = matchBlock;
-       if (update) {
-               update();
-       }
+        this.matchBlock = matchBlock;
+        if (update) {
+                update();
+        }
     }
 
     public static void update() {
@@ -82,7 +82,7 @@ import org.scilab.modules.commons.ScilabCommonsUtils;
            if (macs != null) {
                macros.addAll(Arrays.asList(macs));
            }
-       }
+        }
     }
 
     public void setRange(int p0, int p1) {
@@ -93,12 +93,12 @@ import org.scilab.modules.commons.ScilabCommonsUtils;
         yyreset(new ScilabDocumentReader(doc, p0, p1));
         int currentLine = elem.getElementIndex(start);
         if (currentLine != 0) {
-          ScilabDocument.ScilabLeafElement e = (ScilabDocument.ScilabLeafElement) elem.getElement(currentLine - 1);
-          if (e.isBrokenString()) {
+           ScilabDocument.ScilabLeafElement e = (ScilabDocument.ScilabLeafElement) elem.getElement(currentLine - 1);
+           if (e.isBrokenString()) {
               yybegin(QSTRING);
-          } else if (e.isBlockComment()) {
-             yybegin(BLOCKCOMMENT);
-          }
+           } else if (e.isBlockComment()) {
+              yybegin(BLOCKCOMMENT);
+           }
         }
     }
 
@@ -113,23 +113,23 @@ import org.scilab.modules.commons.ScilabCommonsUtils;
            ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBrokenString(breakstring);
            breakstring = false;
         } else if (lastPos == end) {
-          ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBlockComment(yystate() == BLOCKCOMMENT);
+           ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBlockComment(yystate() == BLOCKCOMMENT);
         }
-       return ret;
+        return ret;
     }
 
     public boolean isLineFinishedByBlockComment(int start, int end) {
         this.start = start;
-       this.end = end;
-       try {           
+        this.end = end;
+        try {           
            yyreset(new ScilabDocumentReader(doc, start, end));
-          int tok = 0;
-          while (tok != ScilabLexerConstants.EOF) {
-             tok = yylex();
-          }
+           int tok = 0;
+           while (tok != ScilabLexerConstants.EOF) {
+              tok = yylex();
+           }
         } catch (Exception e) { }
-       
-       return yystate() == BLOCKCOMMENT;
+        
+        return yystate() == BLOCKCOMMENT;
     }
 
     public int getKeyword(int pos, boolean strict) {
@@ -164,46 +164,46 @@ import org.scilab.modules.commons.ScilabCommonsUtils;
      }
 
      public static ScilabTokens getScilabTokens(String str) {
-        ScilabDocument doc = new ScilabDocument(false);
-        try {
-            doc.insertString(0, str, null);
+         ScilabDocument doc = new ScilabDocument(false);
+         try {
+             doc.insertString(0, str, null);
          } catch (BadLocationException e) { }
-        return getScilabTokens(doc);
+         return getScilabTokens(doc);
      }
 
      public static ScilabTokens getScilabTokens(ScilabDocument doc) {
-        ScilabLexer lexer = new ScilabLexer(doc);
-        lexer.yyreset(new ScilabDocumentReader(doc, 0, doc.getLength()));
-        ScilabTokens tokens = new ScilabTokens();
-        int tok = -1;
-        try {
-           while (tok != ScilabLexerConstants.EOF) {
+         ScilabLexer lexer = new ScilabLexer(doc);
+         lexer.yyreset(new ScilabDocumentReader(doc, 0, doc.getLength()));
+         ScilabTokens tokens = new ScilabTokens();
+         int tok = -1;
+         try {
+            while (tok != ScilabLexerConstants.EOF) {
                tok = lexer.yylex();
                tokens.add(tok, lexer.yychar() + lexer.yylength());
             }
          } catch (IOException e) { }
  
-        return tokens;
+         return tokens;
      }
 
      public static class ScilabTokens {
         private List<Integer> tokenType = new ArrayList<Integer>();
         private List<Integer> tokenPos = new ArrayList<Integer>();
 
-       ScilabTokens() { }
+        ScilabTokens() { }
 
-       void add(final int type, final int pos) {
-          tokenType.add(type);
-          tokenPos.add(pos);
-       }
+        void add(final int type, final int pos) {
+           tokenType.add(type);
+           tokenPos.add(pos);
+        }
 
-       public final List<Integer> getTokenType() {
-          return tokenType;
-       }
+        public final List<Integer> getTokenType() {
+           return tokenType;
+        }
 
-       public final List<Integer> getTokenPos() {
-          return tokenPos;
-       }
+        public final List<Integer> getTokenPos() {
+           return tokenPos;
+        }
      }
 %}
 
@@ -239,6 +239,9 @@ controlKwds = "abort" | "break" | "quit" | "return" | "resume" | "pause" | "cont
 
 authors = "Michael Baudin" | "Michael BAUDIN" | "Paul Bignier" | "Paul BIGNIER" | "Adeline CARNIS" | "Adeline CARNIS" | "Yann Collette" | "Yann COLLETTE" | "Allan Cornet" | "Allan CORNET" | "Vincent Couvert" | "Vincent COUVERT" | "Clement David" | "Clement DAVID" | "Calixte Denizet" | "Calixte DENIZET" | "Cedric Delamarre" | "Cedric DELAMARRE" | "Antoine Elias" | "Antoine ELIAS" | "Simon Gareste" | "Simon GARESTE" | "Claude Gomez" | "Claude GOMEZ" | "Samuel Gougeon" | "Samuel GOUGEON" | "Bernard Hugueney" | "Bernard HUGUENEY" | "Bruno Jofret" | "Bruno JOFRET" | "Manuel Juliachs" | "Manuel JULIACHS" | "Sylvestre Koumar" | "Sylvestre KOUMAR" | "Pierre Lando" | "Pierre LANDO" | "Sylvestre Ledru" | "Sylvestre LEDRU" | "Vincent Lejeune" | "Vincent LEJEUNE" | "Vincent Liard" | "Vincent LIARD" | "Zhour Madini-Zouine" | "Zhour MADINI-ZOUINE" | "Pierre Marechal" | "Pierre MARECHAL" | "Stephane Mottelet" | "Stephane MOTTELET" | "Jerome Picard" | "Jerome PICARD" | "Allan Simon" | "Allan SIMON" | "Serge Steer" | "Serge STEER" | "Inria" | "INRIA" | "DIGITEO" | "Digiteo" | "ENPC" | "ESI Group"
 
+
+todo = ("TODO" | "todo" | "Todo")[ \t:]+[^\n]*
+
 break = ".."(".")*
 breakinstring = {break}[ \t]*{comment}?
 
@@ -296,7 +299,7 @@ number = ({digit}+"."?{digit}*{exp}?)|("."{digit}+{exp}?)
                                    return ScilabLexerConstants.OSKEYWORD;
                                  }
 
-  {end}                         {
+  {end}                          {
                                    transposable = false;
                                    if (matchBlock != null) {
                                       MatchingBlockScanner.MatchingPositions pos = matchBlock.getMatchingBlock(start + yychar() + yylength(), false);
@@ -526,6 +529,10 @@ number = ({digit}+"."?{digit}*{exp}?)|("."{digit}+{exp}?)
                                    return ScilabLexerConstants.AUTHORS;
                                  }
 
+  {todo}                         {
+                                   return ScilabLexerConstants.TODO;
+                                 }
+
   {url}                          {
                                    return ScilabLexerConstants.URL;
                                  }
@@ -546,10 +553,10 @@ number = ({digit}+"."?{digit}*{exp}?)|("."{digit}+{exp}?)
                                    return ScilabLexerConstants.TAB_COMMENT;
                                  }
 
-  {endcomment}                  {
-                                  yybegin(YYINITIAL);
-                                  return ScilabLexerConstants.COMMENT;
-                                }
+  {endcomment}                   {
+                                   yybegin(YYINITIAL);
+                                   return ScilabLexerConstants.COMMENT;
+                                 }
 
   .                              |
   {eol}                          {
@@ -562,6 +569,10 @@ number = ({digit}+"."?{digit}*{exp}?)|("."{digit}+{exp}?)
                                    return ScilabLexerConstants.AUTHORS;
                                  }
 
+  {todo}                         {
+                                   return ScilabLexerConstants.TODO;
+                                 }
+
   {url}                          {
                                    return ScilabLexerConstants.URL;
                                  }
index 9e99482..2fb30a5 100644 (file)
@@ -126,20 +126,20 @@ public final class ScilabLexer extends ScilabLexerConstants {
     "\1\5\1\6\1\7\1\5\1\10\1\11\1\12\1\13"+\r
     "\2\10\1\2\1\10\1\14\1\10\1\15\1\7\2\10"+\r
     "\3\5\1\10\16\5\1\10\1\1\1\16\1\17\1\20"+\r
-    "\1\21\1\1\1\22\1\23\1\24\23\22\1\25\1\26"+\r
+    "\1\21\1\1\1\22\1\23\1\24\25\22\1\25\1\26"+\r
     "\1\27\1\25\1\30\1\31\1\32\1\1\1\3\1\4"+\r
     "\1\1\2\17\1\0\1\33\3\0\3\34\2\5\2\10"+\r
     "\1\33\1\0\1\10\1\7\1\10\1\15\1\35\1\36"+\r
     "\1\33\1\15\7\5\1\37\5\5\1\40\10\5\1\10"+\r
-    "\1\0\1\41\1\0\1\42\44\0\1\43\1\0\1\1"+\r
+    "\1\0\1\41\1\0\1\42\46\0\1\43\1\0\1\1"+\r
     "\1\44\3\0\3\5\1\33\3\15\1\34\10\5\1\45"+\r
-    "\12\5\1\33\1\41\1\0\1\42\42\0\5\5\1\46"+\r
-    "\1\5\1\47\10\5\1\41\14\0\1\50\23\0\1\42"+\r
-    "\11\5\33\0\2\5\1\46\2\5\33\0\2\5\33\0"+\r
-    "\1\51\1\52\1\0\1\53\343\0";\r
+    "\12\5\1\33\1\41\1\0\1\42\44\0\5\5\1\46"+\r
+    "\1\5\1\47\10\5\1\41\14\0\1\50\24\0\1\42"+\r
+    "\11\5\27\0\1\51\4\0\2\5\1\46\2\5\33\0"+\r
+    "\2\5\33\0\1\52\1\53\1\0\1\54\343\0";\r
 \r
   private static int [] zzUnpackAction() {\r
-    int [] result = new int[624];\r
+    int [] result = new int[632];\r
     int offset = 0;\r
     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);\r
     return result;\r
@@ -173,48 +173,48 @@ public final class ScilabLexer extends ScilabLexerConstants {
     "\0\u0e1c\0\u02b0\0\u02b0\0\u02b0\0\u0e72\0\u0ec8\0\u02b0\0\u02b0"+\r
     "\0\u02b0\0\u0f1e\0\u0f74\0\u0fca\0\u1020\0\u1076\0\u10cc\0\u1122"+\r
     "\0\u1178\0\u11ce\0\u1224\0\u127a\0\u12d0\0\u1326\0\u137c\0\u13d2"+\r
-    "\0\u1428\0\u147e\0\u14d4\0\u152a\0\u02b0\0\u02b0\0\u1580\0\u1580"+\r
-    "\0\u15d6\0\u15d6\0\u02b0\0\u162c\0\u02b0\0\u02b0\0\u1682\0\u16d8"+\r
-    "\0\u172e\0\u0306\0\u1784\0\u17da\0\u05b6\0\u1830\0\u03b2\0\u1886"+\r
-    "\0\u18dc\0\u1932\0\u1988\0\u19de\0\u02b0\0\u02b0\0\u1a34\0\u1a8a"+\r
-    "\0\u1ae0\0\u1b36\0\u1b8c\0\u1be2\0\u02b0\0\u1c38\0\u1c8e\0\u1ce4"+\r
-    "\0\u1d3a\0\u1d90\0\u1de6\0\u1e3c\0\u1e92\0\u1ee8\0\u03b2\0\u1f3e"+\r
-    "\0\u1f94\0\u1fea\0\u2040\0\u2096\0\u03b2\0\u20ec\0\u2142\0\u2198"+\r
-    "\0\u21ee\0\u2244\0\u229a\0\u22f0\0\u2346\0\u239c\0\u0e72\0\u23f2"+\r
-    "\0\u0f1e\0\u02b0\0\u2448\0\u0f74\0\u249e\0\u24f4\0\u254a\0\u25a0"+\r
+    "\0\u1428\0\u147e\0\u14d4\0\u152a\0\u1580\0\u15d6\0\u02b0\0\u02b0"+\r
+    "\0\u162c\0\u162c\0\u1682\0\u1682\0\u02b0\0\u16d8\0\u02b0\0\u02b0"+\r
+    "\0\u172e\0\u1784\0\u17da\0\u0306\0\u1830\0\u1886\0\u05b6\0\u18dc"+\r
+    "\0\u03b2\0\u1932\0\u1988\0\u19de\0\u1a34\0\u1a8a\0\u02b0\0\u02b0"+\r
+    "\0\u1ae0\0\u1b36\0\u1b8c\0\u1be2\0\u1c38\0\u1c8e\0\u02b0\0\u1ce4"+\r
+    "\0\u1d3a\0\u1d90\0\u1de6\0\u1e3c\0\u1e92\0\u1ee8\0\u1f3e\0\u1f94"+\r
+    "\0\u03b2\0\u1fea\0\u2040\0\u2096\0\u20ec\0\u2142\0\u03b2\0\u2198"+\r
+    "\0\u21ee\0\u2244\0\u229a\0\u22f0\0\u2346\0\u239c\0\u23f2\0\u2448"+\r
+    "\0\u0e72\0\u249e\0\u0f1e\0\u02b0\0\u24f4\0\u0f74\0\u254a\0\u25a0"+\r
     "\0\u25f6\0\u264c\0\u26a2\0\u26f8\0\u274e\0\u27a4\0\u27fa\0\u2850"+\r
     "\0\u28a6\0\u28fc\0\u2952\0\u29a8\0\u29fe\0\u2a54\0\u2aaa\0\u2b00"+\r
     "\0\u2b56\0\u2bac\0\u2c02\0\u2c58\0\u2cae\0\u2d04\0\u2d5a\0\u2db0"+\r
-    "\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08\0\u2f5e\0\u152a\0\u02b0\0\u15d6"+\r
-    "\0\u2fb4\0\u16d8\0\u300a\0\u3060\0\u30b6\0\u310c\0\u3162\0\u31b8"+\r
-    "\0\u19de\0\u320e\0\u3264\0\u32ba\0\u3310\0\u3366\0\u33bc\0\u3412"+\r
+    "\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08\0\u2f5e\0\u2fb4\0\u300a\0\u3060"+\r
+    "\0\u30b6\0\u15d6\0\u02b0\0\u1682\0\u310c\0\u1784\0\u3162\0\u31b8"+\r
+    "\0\u320e\0\u3264\0\u32ba\0\u3310\0\u1a8a\0\u3366\0\u33bc\0\u3412"+\r
     "\0\u3468\0\u34be\0\u3514\0\u356a\0\u35c0\0\u3616\0\u366c\0\u36c2"+\r
     "\0\u3718\0\u376e\0\u37c4\0\u381a\0\u3870\0\u38c6\0\u391c\0\u3972"+\r
-    "\0\u239c\0\u39c8\0\u3a1e\0\u0f1e\0\u3a74\0\u3aca\0\u3b20\0\u3b76"+\r
+    "\0\u39c8\0\u3a1e\0\u3a74\0\u3aca\0\u2448\0\u3b20\0\u3b76\0\u0f1e"+\r
     "\0\u3bcc\0\u3c22\0\u3c78\0\u3cce\0\u3d24\0\u3d7a\0\u3dd0\0\u3e26"+\r
     "\0\u3e7c\0\u3ed2\0\u3f28\0\u3f7e\0\u3fd4\0\u402a\0\u4080\0\u40d6"+\r
     "\0\u412c\0\u4182\0\u41d8\0\u422e\0\u4284\0\u42da\0\u4330\0\u4386"+\r
     "\0\u43dc\0\u4432\0\u4488\0\u44de\0\u4534\0\u458a\0\u45e0\0\u4636"+\r
-    "\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u03b2\0\u483a\0\u4890"+\r
-    "\0\u48e6\0\u493c\0\u4992\0\u49e8\0\u4a3e\0\u4a94\0\u02b0\0\u4aea"+\r
-    "\0\u4b40\0\u4b96\0\u4bec\0\u4c42\0\u4c98\0\u4cee\0\u4d44\0\u4d9a"+\r
-    "\0\u4df0\0\u4e46\0\u4e9c\0\u02b0\0\u4ef2\0\u4f48\0\u4f9e\0\u4ff4"+\r
-    "\0\u504a\0\u50a0\0\u50f6\0\u514c\0\u51a2\0\u51f8\0\u524e\0\u52a4"+\r
-    "\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u54a8\0\u54fe\0\u300a"+\r
-    "\0\u5554\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702\0\u5758\0\u57ae"+\r
+    "\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u483a\0\u4890\0\u48e6"+\r
+    "\0\u493c\0\u4992\0\u49e8\0\u03b2\0\u4a3e\0\u4a94\0\u4aea\0\u4b40"+\r
+    "\0\u4b96\0\u4bec\0\u4c42\0\u4c98\0\u02b0\0\u4cee\0\u4d44\0\u4d9a"+\r
+    "\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2\0\u4f48\0\u4f9e\0\u4ff4\0\u504a"+\r
+    "\0\u50a0\0\u02b0\0\u50f6\0\u514c\0\u51a2\0\u51f8\0\u524e\0\u52a4"+\r
+    "\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u54a8\0\u54fe\0\u5554"+\r
+    "\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702\0\u5758\0\u3162\0\u57ae"+\r
     "\0\u5804\0\u585a\0\u58b0\0\u5906\0\u595c\0\u59b2\0\u5a08\0\u5a5e"+\r
     "\0\u5ab4\0\u5b0a\0\u5b60\0\u5bb6\0\u5c0c\0\u5c62\0\u5cb8\0\u5d0e"+\r
     "\0\u5d64\0\u5dba\0\u5e10\0\u5e66\0\u5ebc\0\u5f12\0\u5f68\0\u5fbe"+\r
-    "\0\u6014\0\u606a\0\u60c0\0\u6116\0\u616c\0\u61c2\0\u03b2\0\u6218"+\r
-    "\0\u626e\0\u62c4\0\u631a\0\u6370\0\u63c6\0\u641c\0\u6472\0\u64c8"+\r
+    "\0\u6014\0\u606a\0\u60c0\0\u6116\0\u616c\0\u61c2\0\u6218\0\u626e"+\r
+    "\0\u62c4\0\u631a\0\u6370\0\u63c6\0\u641c\0\u6472\0\u03b2\0\u64c8"+\r
     "\0\u651e\0\u6574\0\u65ca\0\u6620\0\u6676\0\u66cc\0\u6722\0\u6778"+\r
     "\0\u67ce\0\u6824\0\u687a\0\u68d0\0\u6926\0\u697c\0\u69d2\0\u6a28"+\r
     "\0\u6a7e\0\u6ad4\0\u6b2a\0\u6b80\0\u6bd6\0\u6c2c\0\u6c82\0\u6cd8"+\r
     "\0\u6d2e\0\u6d84\0\u6dda\0\u6e30\0\u6e86\0\u6edc\0\u6f32\0\u6f88"+\r
     "\0\u6fde\0\u7034\0\u708a\0\u70e0\0\u7136\0\u718c\0\u71e2\0\u7238"+\r
     "\0\u728e\0\u72e4\0\u733a\0\u7390\0\u73e6\0\u743c\0\u7492\0\u74e8"+\r
-    "\0\u753e\0\u6b80\0\u03b2\0\u7594\0\u02b0\0\u75ea\0\u7640\0\u7696"+\r
-    "\0\u76ec\0\u7742\0\u7798\0\u77ee\0\u7844\0\u789a\0\u78f0\0\u7946"+\r
+    "\0\u753e\0\u7594\0\u75ea\0\u7640\0\u7696\0\u76ec\0\u7742\0\u7798"+\r
+    "\0\u77ee\0\u6e30\0\u03b2\0\u7844\0\u02b0\0\u789a\0\u78f0\0\u7946"+\r
     "\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4\0\u7b4a\0\u7ba0\0\u7bf6"+\r
     "\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e\0\u7da4\0\u7dfa\0\u7e50\0\u7ea6"+\r
     "\0\u7efc\0\u7f52\0\u7fa8\0\u7ffe\0\u8054\0\u80aa\0\u8100\0\u8156"+\r
@@ -241,10 +241,11 @@ public final class ScilabLexer extends ScilabLexerConstants {
     "\0\ub76c\0\ub7c2\0\ub818\0\ub86e\0\ub8c4\0\ub91a\0\ub970\0\ub9c6"+\r
     "\0\uba1c\0\uba72\0\ubac8\0\ubb1e\0\ubb74\0\ubbca\0\ubc20\0\ubc76"+\r
     "\0\ubccc\0\ubd22\0\ubd78\0\ubdce\0\ube24\0\ube7a\0\ubed0\0\ubf26"+\r
-    "\0\ubf7c\0\ubfd2\0\uc028\0\uc07e\0\uc0d4\0\uc12a\0\uc180\0\uc1d6";\r
+    "\0\ubf7c\0\ubfd2\0\uc028\0\uc07e\0\uc0d4\0\uc12a\0\uc180\0\uc1d6"+\r
+    "\0\uc22c\0\uc282\0\uc2d8\0\uc32e\0\uc384\0\uc3da\0\uc430\0\uc486";\r
 \r
   private static int [] zzUnpackRowMap() {\r
-    int [] result = new int[624];\r
+    int [] result = new int[632];\r
     int offset = 0;\r
     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);\r
     return result;\r
@@ -278,335 +279,339 @@ public final class ScilabLexer extends ScilabLexerConstants {
     "\6\61\1\66\101\61\1\67\1\70\1\67\3\0\1\71"+\r
     "\3\67\1\72\16\67\1\73\3\67\1\74\1\75\1\76"+\r
     "\1\77\1\100\3\67\1\101\1\102\2\67\1\103\2\67"+\r
-    "\1\104\2\67\1\105\2\67\1\106\1\67\1\107\1\110"+\r
-    "\11\67\1\111\1\67\1\112\12\67\1\113\12\67\1\70"+\r
-    "\1\67\3\0\1\71\3\67\1\72\5\67\1\114\10\67"+\r
-    "\1\73\3\67\1\74\1\75\1\76\1\77\1\100\3\67"+\r
-    "\1\101\1\102\2\67\1\103\2\67\1\104\2\67\1\105"+\r
-    "\2\67\1\106\1\67\1\107\1\110\11\67\1\111\1\67"+\r
-    "\1\112\12\67\1\113\11\67\2\115\1\116\3\0\1\115"+\r
-    "\1\117\1\115\1\117\1\120\1\117\21\115\31\117\3\115"+\r
-    "\33\117\3\115\1\121\1\116\3\0\1\122\7\115\1\123"+\r
-    "\107\115\1\124\1\125\4\124\1\126\13\124\1\115\2\124"+\r
-    "\1\127\2\124\1\115\75\124\1\63\1\125\1\63\3\0"+\r
-    "\1\126\15\63\1\130\1\131\100\63\127\0\1\132\4\0"+\r
-    "\1\133\120\0\1\133\4\0\1\134\1\135\125\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\33\14"+\r
-    "\14\0\1\136\122\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\5\14\1\137\15\14\1\137\5\14\3\0\5\14"+\r
-    "\1\140\1\137\2\14\1\141\4\14\1\142\1\14\1\143"+\r
-    "\2\14\2\137\5\14\1\137\16\0\1\144\131\0\1\145"+\r
-    "\11\0\1\146\113\0\1\146\3\0\1\147\1\146\4\0"+\r
-    "\1\146\34\0\2\146\67\0\1\146\113\0\1\146\3\0"+\r
-    "\1\147\1\146\4\0\2\146\33\0\2\146\52\0\1\145"+\r
-    "\2\0\1\150\3\0\1\151\1\152\1\153\3\0\1\146"+\r
-    "\34\0\1\152\1\145\55\0\1\154\3\0\1\145\1\155"+\r
-    "\4\0\1\146\102\0\1\156\1\0\2\156\11\0\1\153"+\r
-    "\1\0\1\32\6\0\3\156\2\157\24\156\3\0\4\156"+\r
-    "\2\157\25\156\34\0\2\145\124\0\1\145\102\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\2\14\1\160\26\14"+\r
+    "\1\104\2\67\1\105\1\106\1\67\1\107\1\67\1\110"+\r
+    "\1\111\11\67\1\112\1\67\1\113\12\67\1\114\1\115"+\r
+    "\11\67\1\70\1\67\3\0\1\71\3\67\1\72\5\67"+\r
+    "\1\116\10\67\1\73\3\67\1\74\1\75\1\76\1\77"+\r
+    "\1\100\3\67\1\101\1\102\2\67\1\103\2\67\1\104"+\r
+    "\2\67\1\105\1\106\1\67\1\107\1\67\1\110\1\111"+\r
+    "\11\67\1\112\1\67\1\113\12\67\1\114\1\115\10\67"+\r
+    "\2\117\1\120\3\0\1\117\1\121\1\117\1\121\1\122"+\r
+    "\1\121\21\117\31\121\3\117\33\121\3\117\1\123\1\120"+\r
+    "\3\0\1\124\7\117\1\125\107\117\1\126\1\127\4\126"+\r
+    "\1\130\13\126\1\117\2\126\1\131\2\126\1\117\75\126"+\r
+    "\1\63\1\127\1\63\3\0\1\130\15\63\1\132\1\133"+\r
+    "\100\63\127\0\1\134\4\0\1\135\120\0\1\135\4\0"+\r
+    "\1\136\1\137\125\0\1\14\1\0\2\14\13\0\1\14"+\r
+    "\6\0\31\14\3\0\33\14\14\0\1\140\122\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\5\14\1\141\15\14"+\r
+    "\1\141\5\14\3\0\5\14\1\142\1\141\2\14\1\143"+\r
+    "\4\14\1\144\1\14\1\145\2\14\2\141\5\14\1\141"+\r
+    "\16\0\1\146\131\0\1\147\11\0\1\150\113\0\1\150"+\r
+    "\3\0\1\151\1\150\4\0\1\150\34\0\2\150\67\0"+\r
+    "\1\150\113\0\1\150\3\0\1\151\1\150\4\0\2\150"+\r
+    "\33\0\2\150\52\0\1\147\2\0\1\152\3\0\1\153"+\r
+    "\1\154\1\155\3\0\1\150\34\0\1\154\1\147\55\0"+\r
+    "\1\156\3\0\1\147\1\157\4\0\1\150\102\0\1\160"+\r
+    "\1\0\2\160\11\0\1\155\1\0\1\32\6\0\3\160"+\r
+    "\2\161\24\160\3\0\4\160\2\161\25\160\34\0\2\147"+\r
+    "\124\0\1\147\102\0\1\14\1\0\2\14\13\0\1\14"+\r
+    "\6\0\2\14\1\162\26\14\3\0\33\14\11\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\14\14\1\163\14\14"+\r
     "\3\0\33\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\14\14\1\161\14\14\3\0\33\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\22\14\1\162\6\14"+\r
-    "\3\0\33\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\2\14\1\163\30\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\22\14"+\r
-    "\1\164\10\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\1\14\1\165\15\14\1\166\13\14"+\r
+    "\6\0\22\14\1\164\6\14\3\0\33\14\11\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\2\14"+\r
+    "\1\165\30\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
+    "\6\0\31\14\3\0\22\14\1\166\10\14\11\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\1\14"+\r
+    "\1\167\15\14\1\170\13\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\17\14\1\171\13\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\14\14\1\172\1\14\1\173\11\14\1\174\2\14"+\r
     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
-    "\3\0\17\14\1\167\13\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\14\14\1\170\1\14"+\r
-    "\1\171\11\14\1\172\2\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\17\14\1\173\5\14"+\r
-    "\1\174\5\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\6\14\1\175\24\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\24\14"+\r
-    "\1\176\6\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\1\14\1\177\31\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\25\14"+\r
-    "\1\172\5\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\5\14\1\200\25\14\11\0\1\14"+\r
+    "\3\0\17\14\1\175\5\14\1\176\5\14\11\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\6\14"+\r
+    "\1\177\24\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
+    "\6\0\31\14\3\0\24\14\1\200\6\14\11\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\1\14"+\r
+    "\1\201\31\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
+    "\6\0\31\14\3\0\25\14\1\174\5\14\11\0\1\14"+\r
     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\5\14"+\r
-    "\1\201\21\14\1\202\3\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\10\14\1\203\11\14"+\r
-    "\1\204\10\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\10\14\1\205\22\14\126\0\1\206"+\r
-    "\1\0\1\61\2\0\2\61\2\0\1\61\1\207\4\61"+\r
-    "\1\207\6\61\1\0\101\61\10\0\1\61\4\0\1\61"+\r
-    "\134\0\1\210\101\0\12\211\1\212\54\211\1\213\36\211"+\r
-    "\1\0\1\214\4\0\1\214\14\0\2\215\1\0\1\215"+\r
-    "\6\0\31\215\3\0\33\215\77\0\1\216\7\0\1\217"+\r
-    "\1\0\1\220\114\0\1\221\14\0\1\222\104\0\1\223"+\r
-    "\3\0\1\224\6\0\1\225\65\0\1\226\34\0\1\227"+\r
-    "\75\0\1\230\4\0\1\231\120\0\1\232\34\0\1\233"+\r
-    "\114\0\1\234\121\0\1\235\7\0\1\236\115\0\1\237"+\r
-    "\7\0\1\240\115\0\1\241\3\0\1\242\3\0\1\243"+\r
-    "\12\0\1\244\4\0\1\245\105\0\1\246\115\0\1\247"+\r
-    "\134\0\1\250\126\0\1\251\12\0\1\252\125\0\1\253"+\r
-    "\107\0\1\254\6\0\1\255\37\0\1\256\4\0\1\257"+\r
-    "\107\0\1\117\1\0\2\117\13\0\1\117\6\0\31\117"+\r
-    "\3\0\33\117\3\0\1\260\4\0\1\260\7\0\1\123"+\r
-    "\107\0\1\124\1\0\4\124\1\0\13\124\1\0\2\124"+\r
-    "\1\0\2\124\1\0\75\124\6\261\1\0\16\261\1\155"+\r
-    "\100\261\24\0\1\262\126\0\1\155\101\0\1\133\4\0"+\r
-    "\1\133\120\0\1\133\4\0\1\134\117\0\10\136\1\263"+\r
-    "\1\136\1\264\2\136\1\263\51\136\1\265\36\136\7\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\20\14\1\266\12\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\16\14\1\267\14\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\1\14\1\270\31\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\11\14\1\137\21\14\16\0"+\r
-    "\1\271\131\0\2\146\1\0\1\146\1\0\1\146\41\0"+\r
-    "\2\146\55\0\1\145\3\0\1\145\125\0\1\151\125\0"+\r
-    "\1\145\127\0\1\153\11\0\2\272\33\0\2\272\47\0"+\r
-    "\1\154\114\0\1\156\1\0\2\156\13\0\1\156\6\0"+\r
-    "\31\156\3\0\33\156\11\0\1\156\1\0\2\156\6\0"+\r
-    "\1\273\1\0\1\273\2\0\1\274\6\0\31\156\3\0"+\r
-    "\33\156\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
-    "\10\14\1\275\20\14\3\0\33\14\11\0\1\14\1\0"+\r
-    "\2\14\13\0\1\14\6\0\17\14\1\276\11\14\3\0"+\r
-    "\33\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
-    "\2\14\1\277\26\14\3\0\33\14\11\0\1\14\1\0"+\r
-    "\2\14\13\0\1\14\6\0\31\14\3\0\17\14\1\300"+\r
-    "\13\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
-    "\31\14\3\0\5\14\1\301\25\14\11\0\1\14\1\0"+\r
-    "\2\14\13\0\1\14\6\0\31\14\3\0\23\14\1\302"+\r
-    "\1\303\6\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\16\14\1\304\14\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\23\14"+\r
-    "\1\305\7\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\4\14\1\306\26\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\11\14"+\r
-    "\1\307\21\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\22\14\1\175\10\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\16\14"+\r
-    "\1\310\14\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\10\14\1\311\22\14\11\0\1\14"+\r
-    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\25\14"+\r
-    "\1\312\5\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
-    "\6\0\31\14\3\0\23\14\1\313\1\314\6\14\11\0"+\r
+    "\1\202\25\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
+    "\6\0\31\14\3\0\5\14\1\203\21\14\1\204\3\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\10\14\1\205\11\14\1\206\10\14\11\0\1\14"+\r
+    "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\10\14"+\r
+    "\1\207\22\14\126\0\1\210\1\0\1\61\2\0\2\61"+\r
+    "\2\0\1\61\1\211\4\61\1\211\6\61\1\0\101\61"+\r
+    "\10\0\1\61\4\0\1\61\134\0\1\212\101\0\12\213"+\r
+    "\1\214\54\213\1\215\36\213\1\0\1\216\4\0\1\216"+\r
+    "\14\0\2\217\1\0\1\217\6\0\31\217\3\0\33\217"+\r
+    "\77\0\1\220\7\0\1\221\1\0\1\222\114\0\1\223"+\r
+    "\14\0\1\224\104\0\1\225\3\0\1\226\6\0\1\227"+\r
+    "\65\0\1\230\34\0\1\231\75\0\1\232\4\0\1\233"+\r
+    "\120\0\1\234\34\0\1\235\114\0\1\236\121\0\1\237"+\r
+    "\7\0\1\240\115\0\1\241\7\0\1\242\115\0\1\243"+\r
+    "\3\0\1\244\3\0\1\245\12\0\1\246\4\0\1\247"+\r
+    "\56\0\1\250\34\0\1\251\117\0\1\252\115\0\1\253"+\r
+    "\134\0\1\254\126\0\1\255\12\0\1\256\125\0\1\257"+\r
+    "\107\0\1\260\6\0\1\261\127\0\1\251\35\0\1\262"+\r
+    "\4\0\1\263\107\0\1\121\1\0\2\121\13\0\1\121"+\r
+    "\6\0\31\121\3\0\33\121\3\0\1\264\4\0\1\264"+\r
+    "\7\0\1\125\107\0\1\126\1\0\4\126\1\0\13\126"+\r
+    "\1\0\2\126\1\0\2\126\1\0\75\126\6\265\1\0"+\r
+    "\16\265\1\157\100\265\24\0\1\266\126\0\1\157\101\0"+\r
+    "\1\135\4\0\1\135\120\0\1\135\4\0\1\136\117\0"+\r
+    "\10\140\1\267\1\140\1\270\2\140\1\267\51\140\1\271"+\r
+    "\36\140\7\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\20\14\1\272\12\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\16\14\1\273"+\r
+    "\14\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\1\14\1\274\31\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\11\14\1\141"+\r
+    "\21\14\16\0\1\275\131\0\2\150\1\0\1\150\1\0"+\r
+    "\1\150\41\0\2\150\55\0\1\147\3\0\1\147\125\0"+\r
+    "\1\153\125\0\1\147\127\0\1\155\11\0\2\276\33\0"+\r
+    "\2\276\47\0\1\156\114\0\1\160\1\0\2\160\13\0"+\r
+    "\1\160\6\0\31\160\3\0\33\160\11\0\1\160\1\0"+\r
+    "\2\160\6\0\1\277\1\0\1\277\2\0\1\300\6\0"+\r
+    "\31\160\3\0\33\160\11\0\1\14\1\0\2\14\13\0"+\r
+    "\1\14\6\0\10\14\1\301\20\14\3\0\33\14\11\0"+\r
+    "\1\14\1\0\2\14\13\0\1\14\6\0\17\14\1\302"+\r
+    "\11\14\3\0\33\14\11\0\1\14\1\0\2\14\13\0"+\r
+    "\1\14\6\0\2\14\1\303\26\14\3\0\33\14\11\0"+\r
     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\14\14\1\315\16\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\11\14\1\316\21\14\11\0"+\r
+    "\17\14\1\304\13\14\11\0\1\14\1\0\2\14\13\0"+\r
+    "\1\14\6\0\31\14\3\0\5\14\1\305\25\14\11\0"+\r
     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\5\14\1\317\25\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\31\14\1\175\1\14\11\0"+\r
+    "\23\14\1\306\1\307\6\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\16\14\1\310\14\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\23\14\1\311\7\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\4\14\1\312\26\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\11\14\1\313\21\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\22\14\1\177\10\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\16\14\1\314\14\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\10\14\1\315\22\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\25\14\1\316\5\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\23\14\1\317\1\320"+\r
+    "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\14\14\1\321\16\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\11\14\1\322"+\r
+    "\21\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\5\14\1\323\25\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\31\14\1\177"+\r
+    "\1\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\11\14\1\324\21\14\126\0\1\325\2\0"+\r
+    "\1\326\4\0\1\326\15\0\1\212\1\327\100\0\12\213"+\r
+    "\1\330\54\213\1\215\36\213\23\0\2\217\1\0\1\217"+\r
+    "\5\0\1\331\31\217\3\0\33\217\100\0\1\332\134\0"+\r
+    "\1\333\135\0\1\334\123\0\1\335\130\0\1\336\114\0"+\r
+    "\1\337\115\0\1\340\122\0\1\341\3\0\1\342\72\0"+\r
+    "\1\343\162\0\1\344\101\0\1\345\116\0\1\346\136\0"+\r
+    "\1\347\162\0\1\350\125\0\1\351\121\0\1\352\112\0"+\r
+    "\1\353\147\0\1\354\105\0\1\355\135\0\1\356\132\0"+\r
+    "\1\357\120\0\1\360\115\0\1\361\134\0\1\362\60\0"+\r
+    "\1\363\162\0\1\364\137\0\1\365\125\0\1\366\126\0"+\r
+    "\1\367\122\0\1\370\131\0\1\371\131\0\1\256\125\0"+\r
+    "\1\372\103\0\1\373\32\0\6\265\1\0\16\265\1\0"+\r
+    "\100\265\10\0\1\140\4\0\1\140\120\0\1\214\4\0"+\r
+    "\1\214\110\0\10\140\1\267\1\140\1\374\2\140\1\267"+\r
+    "\51\140\1\271\36\140\7\0\1\14\1\0\2\14\13\0"+\r
+    "\1\14\6\0\31\14\3\0\23\14\1\141\7\14\11\0"+\r
     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\11\14\1\320\21\14\126\0\1\321\2\0\1\322\4\0"+\r
-    "\1\322\15\0\1\210\1\323\100\0\12\211\1\324\54\211"+\r
-    "\1\213\36\211\23\0\2\215\1\0\1\215\5\0\1\325"+\r
-    "\31\215\3\0\33\215\100\0\1\326\134\0\1\327\135\0"+\r
-    "\1\330\123\0\1\331\130\0\1\332\114\0\1\333\115\0"+\r
-    "\1\334\122\0\1\335\3\0\1\336\72\0\1\337\162\0"+\r
-    "\1\340\101\0\1\341\116\0\1\342\136\0\1\343\162\0"+\r
-    "\1\344\125\0\1\345\121\0\1\346\112\0\1\347\147\0"+\r
-    "\1\350\105\0\1\351\135\0\1\352\132\0\1\353\120\0"+\r
-    "\1\354\115\0\1\355\134\0\1\356\127\0\1\357\125\0"+\r
-    "\1\360\126\0\1\361\122\0\1\362\131\0\1\363\131\0"+\r
-    "\1\252\125\0\1\364\103\0\1\365\32\0\6\261\1\0"+\r
-    "\16\261\1\0\100\261\10\0\1\136\4\0\1\136\120\0"+\r
-    "\1\212\4\0\1\212\110\0\10\136\1\263\1\136\1\366"+\r
-    "\2\136\1\263\51\136\1\265\36\136\7\0\1\14\1\0"+\r
-    "\2\14\13\0\1\14\6\0\31\14\3\0\23\14\1\137"+\r
+    "\6\14\1\141\24\14\11\0\1\14\1\0\2\14\13\0"+\r
+    "\1\14\6\0\31\14\3\0\16\14\1\141\14\14\23\0"+\r
+    "\1\277\1\0\1\277\2\0\1\277\125\0\1\277\106\0"+\r
+    "\1\160\1\0\2\160\13\0\1\300\6\0\31\160\3\0"+\r
+    "\33\160\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\7\14\1\375\21\14\3\0\33\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\3\14\1\376\25\14\3\0"+\r
+    "\33\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\10\14\1\141\20\14\3\0\33\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\22\14\1\313"+\r
+    "\10\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\1\14\1\377\31\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\5\14\1\171"+\r
+    "\25\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\3\14\1\u0100\27\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\24\14\1\u0101"+\r
+    "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\5\14\1\u0102\25\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\6\14\1\u0103"+\r
+    "\24\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\24\14\1\u0104\6\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\3\14\1\u0105"+\r
+    "\27\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\5\14\1\u0106\25\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\23\14\1\u0107"+\r
     "\7\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
-    "\31\14\3\0\6\14\1\137\24\14\11\0\1\14\1\0"+\r
-    "\2\14\13\0\1\14\6\0\31\14\3\0\16\14\1\137"+\r
-    "\14\14\23\0\1\273\1\0\1\273\2\0\1\273\125\0"+\r
-    "\1\273\106\0\1\156\1\0\2\156\13\0\1\274\6\0"+\r
-    "\31\156\3\0\33\156\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\7\14\1\367\21\14\3\0\33\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\3\14\1\370"+\r
-    "\25\14\3\0\33\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\10\14\1\137\20\14\3\0\33\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\22\14\1\307\10\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\1\14\1\371\31\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\5\14\1\167\25\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\3\14\1\372\27\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\24\14\1\373\6\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\5\14\1\374\25\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\6\14\1\375\24\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\24\14\1\376\6\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\3\14\1\377\27\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\5\14\1\u0100\25\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\23\14\1\u0101\7\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\25\14\1\u0102\5\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\25\14\1\u0103\5\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\5\14\1\u0104\25\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\24\14\1\u0105\6\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\16\14\1\167\14\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\14\14\1\u0106\16\14\3\0\1\322\4\0\1\322\16\0"+\r
-    "\1\323\125\0\1\u0107\123\0\1\u0108\2\0\1\u0108\6\0"+\r
-    "\31\u0108\4\0\32\u0108\107\0\1\u0109\112\0\1\u010a\143\0"+\r
-    "\1\u010b\124\0\1\u010c\125\0\1\u010d\120\0\1\u010e\136\0"+\r
-    "\1\u010f\130\0\1\u0110\115\0\1\u0111\64\0\1\u0112\162\0"+\r
-    "\1\u0113\62\0\1\u0114\74\0\1\u0115\164\0\1\u0116\162\0"+\r
-    "\1\u0117\133\0\1\u0118\133\0\1\u0119\110\0\1\u011a\131\0"+\r
-    "\1\u011b\133\0\1\u011c\130\0\1\u011d\107\0\1\u011e\135\0"+\r
-    "\1\u011f\126\0\1\u0120\133\0\1\u0121\102\0\1\u0122\140\0"+\r
-    "\1\u0123\134\0\1\u0124\105\0\1\u0125\56\0\1\u0126\64\0"+\r
-    "\1\u0125\122\0\1\u0125\43\0\1\u0127\76\0\10\136\1\u0128"+\r
-    "\1\136\1\264\2\136\1\u0128\51\136\1\265\36\136\7\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\16\14\1\u0129"+\r
-    "\12\14\3\0\33\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\10\14\1\u012a\20\14\3\0\33\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\13\14\1\376\17\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\10\14\1\167\22\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\11\14\1\u012b\21\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\11\14\1\u012c\21\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\25\14\1\174\5\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\24\14\1\u012d\6\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\22\14\1\u012e\10\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\5\14\1\376\25\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\15\14\1\u0101\15\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\22\14\1\u012f\10\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\3\14\1\u0130\27\14\11\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\3\14\1\u0131\27\14\11\0"+\r
-    "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\5\14\1\175\25\14\25\0\1\u0108\1\u0132\1\0\1\u0108"+\r
-    "\6\0\31\u0108\4\0\32\u0108\104\0\1\u0133\132\0\1\u0134"+\r
-    "\120\0\1\u0135\115\0\1\u0136\143\0\1\u0137\136\0\1\u0138"+\r
-    "\106\0\1\u0139\120\0\1\u013a\126\0\1\u013b\107\0\1\u013c"+\r
-    "\162\0\1\u013d\53\0\1\u013e\117\0\1\u0114\162\0\1\u0114"+\r
-    "\141\0\1\u013f\115\0\1\u0140\121\0\1\u0141\41\0\1\u0142"+\r
-    "\232\0\1\u0143\110\0\1\u0144\125\0\1\u0145\136\0\1\u0146"+\r
-    "\117\0\1\u0147\122\0\1\u0148\125\0\1\u0149\35\0\1\u014a"+\r
-    "\232\0\1\u014b\41\0\1\u0126\123\0\1\u014c\125\0\1\u0126"+\r
+    "\31\14\3\0\25\14\1\u0108\5\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\25\14\1\u0109"+\r
+    "\5\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\5\14\1\u010a\25\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\24\14\1\u010b"+\r
+    "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\16\14\1\171\14\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\14\14\1\u010c"+\r
+    "\16\14\3\0\1\326\4\0\1\326\16\0\1\327\125\0"+\r
+    "\1\u010d\123\0\1\u010e\2\0\1\u010e\6\0\31\u010e\4\0"+\r
+    "\32\u010e\107\0\1\u010f\112\0\1\u0110\143\0\1\u0111\124\0"+\r
+    "\1\u0112\125\0\1\u0113\120\0\1\u0114\136\0\1\u0115\130\0"+\r
+    "\1\u0116\115\0\1\u0117\64\0\1\u0118\162\0\1\u0119\62\0"+\r
+    "\1\u011a\74\0\1\u011b\164\0\1\u011c\162\0\1\u011d\133\0"+\r
+    "\1\u011e\133\0\1\u011f\110\0\1\u0120\131\0\1\u0121\133\0"+\r
+    "\1\u0122\130\0\1\u0123\107\0\1\u0124\135\0\1\u0125\126\0"+\r
+    "\1\u0126\133\0\1\u0127\61\0\1\u0128\162\0\1\u0128\111\0"+\r
+    "\1\u0129\140\0\1\u012a\134\0\1\u012b\105\0\1\u012c\56\0"+\r
+    "\1\u012d\64\0\1\u012c\122\0\1\u012c\43\0\1\u012e\76\0"+\r
+    "\10\140\1\u012f\1\140\1\270\2\140\1\u012f\51\140\1\271"+\r
+    "\36\140\7\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\16\14\1\u0130\12\14\3\0\33\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\10\14\1\u0131\20\14\3\0"+\r
+    "\33\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\13\14\1\u0104\17\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\10\14\1\171"+\r
+    "\22\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\11\14\1\u0132\21\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\11\14\1\u0133"+\r
+    "\21\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\25\14\1\176\5\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\24\14\1\u0134"+\r
+    "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\22\14\1\u0135\10\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\5\14\1\u0104"+\r
+    "\25\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\15\14\1\u0107\15\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\22\14\1\u0136"+\r
+    "\10\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\3\14\1\u0137\27\14\11\0\1\14\1\0"+\r
+    "\2\14\13\0\1\14\6\0\31\14\3\0\3\14\1\u0138"+\r
+    "\27\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
+    "\31\14\3\0\5\14\1\177\25\14\25\0\1\u010e\1\u0139"+\r
+    "\1\0\1\u010e\6\0\31\u010e\4\0\32\u010e\104\0\1\u013a"+\r
+    "\132\0\1\u013b\120\0\1\u013c\115\0\1\u013d\143\0\1\u013e"+\r
+    "\136\0\1\u013f\106\0\1\u0140\120\0\1\u0141\126\0\1\u0142"+\r
+    "\107\0\1\u0143\162\0\1\u0144\53\0\1\u0145\117\0\1\u011a"+\r
+    "\162\0\1\u011a\141\0\1\u0146\115\0\1\u0147\121\0\1\u0148"+\r
+    "\41\0\1\u0149\232\0\1\u014a\110\0\1\u014b\125\0\1\u014c"+\r
+    "\136\0\1\u014d\117\0\1\u014e\122\0\1\u014f\30\0\1\u0150"+\r
+    "\4\0\1\u0150\20\0\1\u0150\174\0\1\u0151\35\0\1\u0152"+\r
+    "\232\0\1\u0153\41\0\1\u012d\123\0\1\u0154\125\0\1\u012d"+\r
     "\107\0\1\14\1\0\2\14\13\0\1\14\6\0\14\14"+\r
-    "\1\u014d\14\14\3\0\33\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\21\14\1\137\7\14\3\0\33\14"+\r
+    "\1\u0155\14\14\3\0\33\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\21\14\1\141\7\14\3\0\33\14"+\r
     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
-    "\3\0\16\14\1\u014e\14\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\6\14\1\u014f\24\14"+\r
+    "\3\0\16\14\1\u0156\14\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\6\14\1\u0157\24\14"+\r
     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
-    "\3\0\11\14\1\u0150\21\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\27\14\1\u0151\3\14"+\r
+    "\3\0\11\14\1\u0158\21\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\27\14\1\u0159\3\14"+\r
     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
-    "\3\0\16\14\1\376\14\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\24\14\1\175\6\14"+\r
+    "\3\0\16\14\1\u0104\14\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\24\14\1\177\6\14"+\r
     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
-    "\3\0\10\14\1\175\22\14\25\0\1\u0108\2\0\1\u0108"+\r
-    "\6\0\31\u0152\4\0\32\u0152\111\0\1\u0153\24\0\1\u0154"+\r
-    "\226\0\1\u0155\131\0\1\u0156\20\0\1\u0157\234\0\1\u0158"+\r
-    "\104\0\1\u0159\127\0\1\u015a\136\0\1\u015b\57\0\1\u015c"+\r
-    "\162\0\1\u015d\142\0\1\u015e\110\0\1\u015f\134\0\1\u0160"+\r
-    "\116\0\1\u0161\65\0\1\u0162\165\0\1\u0163\134\0\1\u0164"+\r
-    "\26\0\1\u0165\125\0\1\u0166\211\0\1\u0167\147\0\1\u0168"+\r
-    "\120\0\1\u0169\55\0\1\u016a\74\0\1\u016b\144\0\1\u016c"+\r
-    "\107\0\1\14\1\0\2\14\13\0\1\14\6\0\4\14"+\r
-    "\1\137\24\14\3\0\33\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\25\14\1\u0101\5\14"+\r
+    "\3\0\10\14\1\177\22\14\25\0\1\u010e\2\0\1\u010e"+\r
+    "\6\0\31\u015a\4\0\32\u015a\111\0\1\u015b\24\0\1\u015c"+\r
+    "\226\0\1\u015d\131\0\1\u015e\20\0\1\u015f\234\0\1\u0160"+\r
+    "\104\0\1\u0161\127\0\1\u0162\136\0\1\u0163\57\0\1\u0164"+\r
+    "\162\0\1\u0165\142\0\1\u0166\110\0\1\u0167\134\0\1\u0168"+\r
+    "\116\0\1\u0169\65\0\1\u016a\165\0\1\u016b\134\0\1\u016c"+\r
+    "\26\0\1\u016d\125\0\1\u016e\211\0\1\u016f\147\0\1\u0170"+\r
+    "\11\0\2\u0150\1\0\123\u0150\107\0\1\u0171\55\0\1\u0172"+\r
+    "\74\0\1\u0173\144\0\1\u0174\107\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\4\14\1\141\24\14\3\0\33\14"+\r
     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
-    "\3\0\17\14\1\u016d\13\14\11\0\1\14\1\0\2\14"+\r
-    "\13\0\1\14\6\0\31\14\3\0\11\14\1\u016e\21\14"+\r
-    "\25\0\1\u0108\1\u0132\1\0\1\u0108\6\0\31\u016f\4\0"+\r
-    "\32\u016f\100\0\1\u0170\66\0\1\u0171\17\0\1\u0172\144\0"+\r
-    "\1\u0173\124\0\1\u0174\76\0\1\u0175\155\0\1\u0176\35\0"+\r
-    "\1\u0177\125\0\1\u0178\234\0\1\u0179\63\0\1\u0114\162\0"+\r
-    "\1\u0114\125\0\1\u017a\23\0\1\u017b\125\0\1\u017c\224\0"+\r
-    "\1\u017d\65\0\1\u017e\34\0\1\u017f\31\0\1\u0180\125\0"+\r
-    "\1\u0181\176\0\1\u0182\111\0\1\u0183\171\0\1\u0184\133\0"+\r
-    "\1\u0185\125\0\1\u0186\63\0\1\u0187\34\0\1\u0188\66\0"+\r
-    "\1\u0189\54\0\1\u018a\2\0\1\u018a\3\0\1\u018a\1\0"+\r
-    "\4\u018a\1\0\110\u018a\7\0\1\14\1\0\2\14\13\0"+\r
-    "\1\14\6\0\31\14\3\0\16\14\1\u018b\14\14\11\0"+\r
+    "\3\0\25\14\1\u0107\5\14\11\0\1\14\1\0\2\14"+\r
+    "\13\0\1\14\6\0\31\14\3\0\17\14\1\u0175\13\14"+\r
+    "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
+    "\3\0\11\14\1\u0176\21\14\25\0\1\u010e\1\u0139\1\0"+\r
+    "\1\u010e\6\0\31\u0177\4\0\32\u0177\100\0\1\u0178\66\0"+\r
+    "\1\u0179\17\0\1\u017a\144\0\1\u017b\124\0\1\u017c\76\0"+\r
+    "\1\u017d\155\0\1\u017e\35\0\1\u017f\125\0\1\u0180\234\0"+\r
+    "\1\u0181\63\0\1\u011a\162\0\1\u011a\125\0\1\u0182\23\0"+\r
+    "\1\u0183\125\0\1\u0184\224\0\1\u0185\65\0\1\u0186\34\0"+\r
+    "\1\u0187\31\0\1\u0188\125\0\1\u0189\176\0\1\u018a\111\0"+\r
+    "\1\u018b\171\0\1\u018c\133\0\1\u018d\125\0\1\u018e\63\0"+\r
+    "\1\u018f\34\0\1\u0190\66\0\1\u0191\54\0\1\u0192\2\0"+\r
+    "\1\u0192\3\0\1\u0192\1\0\4\u0192\1\0\110\u0192\7\0"+\r
     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
-    "\23\14\1\302\7\14\3\0\1\u018c\4\0\1\u018c\14\0"+\r
-    "\1\u0108\1\u0132\1\0\1\u0108\4\0\1\u018d\1\0\31\u018e"+\r
-    "\4\0\32\u018e\10\0\1\u018f\172\0\1\u0190\34\0\1\u0191"+\r
-    "\62\0\1\u0192\34\0\1\u0193\31\0\1\u0194\125\0\1\u0195"+\r
-    "\172\0\1\u0196\34\0\1\u0197\23\0\1\u0198\157\0\1\u0199"+\r
-    "\130\0\1\u019a\70\0\1\u019b\235\0\1\u019c\63\0\1\u019d"+\r
-    "\117\0\1\u019e\65\0\1\u019f\162\0\1\u01a0\162\0\1\u01a1"+\r
-    "\75\0\1\u01a2\1\u01a3\117\0\1\u01a4\142\0\1\u01a5\34\0"+\r
-    "\1\u01a6\45\0\1\u01a7\34\0\1\u01a8\131\0\1\u01a9\142\0"+\r
-    "\1\u01aa\20\0\1\u01ab\167\0\1\u01ac\162\0\1\u01ad\55\0"+\r
-    "\1\u01ae\34\0\1\u01af\34\0\1\u018c\4\0\1\u018c\24\0"+\r
-    "\1\u018d\73\0\1\u018c\4\0\1\u018c\14\0\1\u0108\1\u0132"+\r
-    "\1\0\1\u0108\4\0\1\u018d\1\0\31\u01b0\4\0\32\u01b0"+\r
-    "\41\0\1\u01b1\144\0\1\u01b2\162\0\1\u01b3\63\0\1\u01b4"+\r
-    "\162\0\1\u01b5\60\0\1\u01b6\130\0\1\u01b7\123\0\1\u01b8"+\r
-    "\162\0\1\u01b9\66\0\1\u01ba\126\0\1\u01bb\34\0\1\u01bc"+\r
-    "\102\0\1\u01bd\34\0\1\u01be\55\0\1\u01bf\176\0\1\u0114"+\r
-    "\61\0\1\u01c0\34\0\1\u01c1\104\0\1\u01c2\34\0\1\u01c3"+\r
-    "\45\0\1\u01c4\141\0\1\u01c5\162\0\1\u01c6\53\0\1\u01c7"+\r
-    "\34\0\1\u01c8\70\0\1\u01c9\34\0\1\u01ca\106\0\1\u01cb"+\r
-    "\34\0\1\u01cc\56\0\1\u01cd\162\0\1\u01ce\105\0\1\u01cf"+\r
-    "\162\0\1\u01d0\20\0\1\u01d1\215\0\1\u01d2\66\0\1\u01d3"+\r
-    "\10\0\1\u01d4\125\0\1\u01d5\162\0\1\u01d6\60\0\1\u01d7"+\r
-    "\162\0\1\u01d8\31\0\1\u018c\4\0\1\u018c\14\0\1\u0108"+\r
-    "\1\u0132\1\0\1\u0108\4\0\1\u018d\1\0\31\u01d9\4\0"+\r
-    "\32\u01d9\37\0\1\u01da\142\0\1\u01db\162\0\1\u01dc\71\0"+\r
-    "\1\u01dd\162\0\1\u01de\65\0\1\u01df\34\0\1\u01e0\101\0"+\r
-    "\1\u01e1\34\0\1\u01e2\65\0\1\u01db\162\0\1\u01dc\53\0"+\r
-    "\1\u01e3\34\0\1\u01e4\77\0\1\u01e5\162\0\1\u01e6\71\0"+\r
-    "\1\u01e7\162\0\1\u01e8\54\0\1\u01e9\34\0\1\u01ea\72\0"+\r
-    "\1\u01eb\162\0\1\u01ec\101\0\1\u01ed\162\0\1\u01ee\55\0"+\r
-    "\1\u01ef\34\0\1\u01f0\100\0\1\u01cd\162\0\1\u01ce\75\0"+\r
-    "\1\u01f1\162\0\1\u01f2\74\0\1\u01f3\162\0\1\u01f4\73\0"+\r
-    "\1\u01f5\162\0\1\u01f6\50\0\1\u01f7\162\0\1\u01f8\70\0"+\r
-    "\1\u01f9\162\0\1\u01fa\100\0\1\u01fb\62\0\1\u01fc\172\0"+\r
-    "\1\u01fd\34\0\1\u01fe\56\0\1\u01ff\3\0\1\u01eb\30\0"+\r
-    "\1\u0200\3\0\1\u01ec\64\0\1\u0201\162\0\1\u0202\74\0"+\r
-    "\1\u0203\162\0\1\u0204\24\0\1\u018c\4\0\1\u018c\14\0"+\r
-    "\1\u0108\1\u0132\1\0\1\u0108\4\0\1\u018d\1\0\31\u0108"+\r
-    "\4\0\32\u0108\60\0\1\u0205\110\0\1\u0206\162\0\1\u0207"+\r
-    "\101\0\1\u0114\162\0\1\u0114\63\0\1\u0208\162\0\1\u0209"+\r
-    "\66\0\1\u020a\162\0\1\u020b\77\0\1\u020c\162\0\1\u020d"+\r
-    "\53\0\1\u020e\162\0\1\u020f\74\0\1\u0210\162\0\1\u0211"+\r
-    "\111\0\1\u0212\162\0\1\u0213\43\0\1\u0214\162\0\1\u0215"+\r
-    "\100\0\1\u0216\162\0\1\u0217\104\0\1\u0218\162\0\1\u0219"+\r
-    "\47\0\1\u015c\162\0\1\u015d\71\0\1\u021a\162\0\1\u021b"+\r
-    "\72\0\1\u021c\162\0\1\u021d\103\0\1\u0114\162\0\1\u0114"+\r
-    "\71\0\1\u021e\162\0\1\u021f\64\0\1\u0220\34\0\1\u0221"+\r
-    "\64\0\1\u0222\1\u0223\136\0\1\u0224\162\0\1\u0225\55\0"+\r
-    "\1\u0226\162\0\1\u0227\102\0\1\u021e\162\0\1\u021f\62\0"+\r
-    "\1\u0228\162\0\1\u0229\70\0\1\u022a\133\0\1\u0114\162\0"+\r
-    "\1\u0114\45\0\1\u022b\162\0\1\u022c\114\0\1\u022d\162\0"+\r
-    "\1\u022e\54\0\1\u022f\162\0\1\u0230\74\0\1\u0231\162\0"+\r
-    "\1\u0232\104\0\1\u0114\163\0\1\u0114\47\0\1\u0233\162\0"+\r
-    "\1\u0234\101\0\1\u0233\162\0\1\u0234\47\0\1\u0235\162\0"+\r
-    "\1\u0236\73\0\1\u0237\162\0\1\u0238\67\0\1\u0239\162\0"+\r
-    "\1\u023a\72\0\1\u01b4\162\0\1\u01b5\107\0\1\u023b\162\0"+\r
-    "\1\u023c\70\0\1\u023d\162\0\1\u023e\63\0\1\u023f\34\0"+\r
-    "\1\u0240\56\0\1\u0241\34\0\1\u0242\111\0\1\u0243\162\0"+\r
-    "\1\u0244\47\0\1\u0245\162\0\1\u0246\74\0\1\u0247\162\0"+\r
-    "\1\u0248\70\0\1\u022b\137\0\1\u0114\162\0\1\u0114\52\0"+\r
-    "\1\u0249\162\0\1\u024a\114\0\1\u01db\163\0\1\u01dc\37\0"+\r
-    "\1\u024b\162\0\1\u024c\73\0\1\u0114\162\0\1\u0114\67\0"+\r
-    "\1\u024d\162\0\1\u024e\76\0\1\u01dd\162\0\1\u01de\67\0"+\r
-    "\1\u024f\162\0\1\u0250\65\0\1\u0114\162\0\1\u0114\107\0"+\r
-    "\1\u0251\162\0\1\u0252\71\0\1\u0253\162\0\1\u0254\47\0"+\r
-    "\1\u0255\162\0\1\u0256\71\0\1\u0257\162\0\1\u0258\110\0"+\r
-    "\1\u0259\162\0\1\u025a\32\0\1\u025b\125\0\1\u025c\154\0"+\r
-    "\1\u025d\162\0\1\u025e\74\0\1\u025f\162\0\1\u0260\56\0"+\r
-    "\1\u022b\162\0\1\u022c\61\0\1\u0261\162\0\1\u0262\74\0"+\r
-    "\1\u0263\162\0\1\u0264\100\0\1\u0265\162\0\1\u0266\75\0"+\r
-    "\1\u0267\162\0\1\u0268\70\0\1\u0206\162\0\1\u0207\64\0"+\r
-    "\1\u023b\162\0\1\u023c\103\0\1\u0269\125\0\1\u026a\101\0"+\r
-    "\1\u026b\162\0\1\u026c\105\0\1\u023b\162\0\1\u023c\62\0"+\r
-    "\1\u0114\162\0\1\u0114\70\0\1\u01db\162\0\1\u01dc\55\0"+\r
-    "\1\u01f7\162\0\1\u01f8\114\0\1\u0114\162\0\1\u0114\62\0"+\r
-    "\1\u026d\162\0\1\u026e\101\0\1\u0114\163\0\1\u0114\64\0"+\r
-    "\1\u026f\162\0\1\u0270\54\0\1\u0259\162\0\1\u025a\23\0";\r
+    "\16\14\1\u0193\14\14\11\0\1\14\1\0\2\14\13\0"+\r
+    "\1\14\6\0\31\14\3\0\23\14\1\306\7\14\3\0"+\r
+    "\1\u0194\4\0\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e"+\r
+    "\4\0\1\u0195\1\0\31\u0196\4\0\32\u0196\10\0\1\u0197"+\r
+    "\172\0\1\u0198\34\0\1\u0199\62\0\1\u019a\34\0\1\u019b"+\r
+    "\31\0\1\u019c\125\0\1\u019d\172\0\1\u019e\34\0\1\u019f"+\r
+    "\23\0\1\u01a0\157\0\1\u01a1\130\0\1\u01a2\70\0\1\u01a3"+\r
+    "\235\0\1\u01a4\63\0\1\u01a5\117\0\1\u01a6\65\0\1\u01a7"+\r
+    "\162\0\1\u01a8\162\0\1\u01a9\75\0\1\u01aa\1\u01ab\117\0"+\r
+    "\1\u01ac\142\0\1\u01ad\34\0\1\u01ae\45\0\1\u01af\34\0"+\r
+    "\1\u01b0\131\0\1\u01b1\142\0\1\u01b2\20\0\1\u01b3\167\0"+\r
+    "\1\u01b4\162\0\1\u01b5\55\0\1\u01b6\34\0\1\u01b7\34\0"+\r
+    "\1\u0194\4\0\1\u0194\24\0\1\u0195\73\0\1\u0194\4\0"+\r
+    "\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e\4\0\1\u0195"+\r
+    "\1\0\31\u01b8\4\0\32\u01b8\41\0\1\u01b9\144\0\1\u01ba"+\r
+    "\162\0\1\u01bb\63\0\1\u01bc\162\0\1\u01bd\60\0\1\u01be"+\r
+    "\130\0\1\u01bf\123\0\1\u01c0\162\0\1\u01c1\66\0\1\u01c2"+\r
+    "\126\0\1\u01c3\34\0\1\u01c4\102\0\1\u01c5\34\0\1\u01c6"+\r
+    "\55\0\1\u01c7\176\0\1\u011a\61\0\1\u01c8\34\0\1\u01c9"+\r
+    "\104\0\1\u01ca\34\0\1\u01cb\45\0\1\u01cc\141\0\1\u01cd"+\r
+    "\162\0\1\u01ce\53\0\1\u01cf\34\0\1\u01d0\70\0\1\u01d1"+\r
+    "\34\0\1\u01d2\106\0\1\u01d3\34\0\1\u01d4\56\0\1\u01d5"+\r
+    "\162\0\1\u01d6\105\0\1\u01d7\162\0\1\u01d8\20\0\1\u01d9"+\r
+    "\215\0\1\u01da\66\0\1\u01db\10\0\1\u01dc\125\0\1\u01dd"+\r
+    "\162\0\1\u01de\60\0\1\u01df\162\0\1\u01e0\31\0\1\u0194"+\r
+    "\4\0\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e\4\0"+\r
+    "\1\u0195\1\0\31\u01e1\4\0\32\u01e1\37\0\1\u01e2\142\0"+\r
+    "\1\u01e3\162\0\1\u01e4\71\0\1\u01e5\162\0\1\u01e6\65\0"+\r
+    "\1\u01e7\34\0\1\u01e8\101\0\1\u01e9\34\0\1\u01ea\65\0"+\r
+    "\1\u01e3\162\0\1\u01e4\53\0\1\u01eb\34\0\1\u01ec\77\0"+\r
+    "\1\u01ed\162\0\1\u01ee\71\0\1\u01ef\162\0\1\u01f0\54\0"+\r
+    "\1\u01f1\34\0\1\u01f2\72\0\1\u01f3\162\0\1\u01f4\101\0"+\r
+    "\1\u01f5\162\0\1\u01f6\55\0\1\u01f7\34\0\1\u01f8\100\0"+\r
+    "\1\u01d5\162\0\1\u01d6\75\0\1\u01f9\162\0\1\u01fa\74\0"+\r
+    "\1\u01fb\162\0\1\u01fc\73\0\1\u01fd\162\0\1\u01fe\50\0"+\r
+    "\1\u01ff\162\0\1\u0200\70\0\1\u0201\162\0\1\u0202\100\0"+\r
+    "\1\u0203\62\0\1\u0204\172\0\1\u0205\34\0\1\u0206\56\0"+\r
+    "\1\u0207\3\0\1\u01f3\30\0\1\u0208\3\0\1\u01f4\64\0"+\r
+    "\1\u0209\162\0\1\u020a\74\0\1\u020b\162\0\1\u020c\24\0"+\r
+    "\1\u0194\4\0\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e"+\r
+    "\4\0\1\u0195\1\0\31\u010e\4\0\32\u010e\60\0\1\u020d"+\r
+    "\110\0\1\u020e\162\0\1\u020f\101\0\1\u011a\162\0\1\u011a"+\r
+    "\63\0\1\u0210\162\0\1\u0211\66\0\1\u0212\162\0\1\u0213"+\r
+    "\77\0\1\u0214\162\0\1\u0215\53\0\1\u0216\162\0\1\u0217"+\r
+    "\74\0\1\u0218\162\0\1\u0219\111\0\1\u021a\162\0\1\u021b"+\r
+    "\43\0\1\u021c\162\0\1\u021d\100\0\1\u021e\162\0\1\u021f"+\r
+    "\104\0\1\u0220\162\0\1\u0221\47\0\1\u0164\162\0\1\u0165"+\r
+    "\71\0\1\u0222\162\0\1\u0223\72\0\1\u0224\162\0\1\u0225"+\r
+    "\103\0\1\u011a\162\0\1\u011a\71\0\1\u0226\162\0\1\u0227"+\r
+    "\64\0\1\u0228\34\0\1\u0229\64\0\1\u022a\1\u022b\136\0"+\r
+    "\1\u022c\162\0\1\u022d\55\0\1\u022e\162\0\1\u022f\102\0"+\r
+    "\1\u0226\162\0\1\u0227\62\0\1\u0230\162\0\1\u0231\70\0"+\r
+    "\1\u0232\133\0\1\u011a\162\0\1\u011a\45\0\1\u0233\162\0"+\r
+    "\1\u0234\114\0\1\u0235\162\0\1\u0236\54\0\1\u0237\162\0"+\r
+    "\1\u0238\74\0\1\u0239\162\0\1\u023a\104\0\1\u011a\163\0"+\r
+    "\1\u011a\47\0\1\u023b\162\0\1\u023c\101\0\1\u023b\162\0"+\r
+    "\1\u023c\47\0\1\u023d\162\0\1\u023e\73\0\1\u023f\162\0"+\r
+    "\1\u0240\67\0\1\u0241\162\0\1\u0242\72\0\1\u01bc\162\0"+\r
+    "\1\u01bd\107\0\1\u0243\162\0\1\u0244\70\0\1\u0245\162\0"+\r
+    "\1\u0246\63\0\1\u0247\34\0\1\u0248\56\0\1\u0249\34\0"+\r
+    "\1\u024a\111\0\1\u024b\162\0\1\u024c\47\0\1\u024d\162\0"+\r
+    "\1\u024e\74\0\1\u024f\162\0\1\u0250\70\0\1\u0233\137\0"+\r
+    "\1\u011a\162\0\1\u011a\52\0\1\u0251\162\0\1\u0252\114\0"+\r
+    "\1\u01e3\163\0\1\u01e4\37\0\1\u0253\162\0\1\u0254\73\0"+\r
+    "\1\u011a\162\0\1\u011a\67\0\1\u0255\162\0\1\u0256\76\0"+\r
+    "\1\u01e5\162\0\1\u01e6\67\0\1\u0257\162\0\1\u0258\65\0"+\r
+    "\1\u011a\162\0\1\u011a\107\0\1\u0259\162\0\1\u025a\71\0"+\r
+    "\1\u025b\162\0\1\u025c\47\0\1\u025d\162\0\1\u025e\71\0"+\r
+    "\1\u025f\162\0\1\u0260\110\0\1\u0261\162\0\1\u0262\32\0"+\r
+    "\1\u0263\125\0\1\u0264\154\0\1\u0265\162\0\1\u0266\74\0"+\r
+    "\1\u0267\162\0\1\u0268\56\0\1\u0233\162\0\1\u0234\61\0"+\r
+    "\1\u0269\162\0\1\u026a\74\0\1\u026b\162\0\1\u026c\100\0"+\r
+    "\1\u026d\162\0\1\u026e\75\0\1\u026f\162\0\1\u0270\70\0"+\r
+    "\1\u020e\162\0\1\u020f\64\0\1\u0243\162\0\1\u0244\103\0"+\r
+    "\1\u0271\125\0\1\u0272\101\0\1\u0273\162\0\1\u0274\105\0"+\r
+    "\1\u0243\162\0\1\u0244\62\0\1\u011a\162\0\1\u011a\70\0"+\r
+    "\1\u01e3\162\0\1\u01e4\55\0\1\u01ff\162\0\1\u0200\114\0"+\r
+    "\1\u011a\162\0\1\u011a\62\0\1\u0275\162\0\1\u0276\101\0"+\r
+    "\1\u011a\163\0\1\u011a\64\0\1\u0277\162\0\1\u0278\54\0"+\r
+    "\1\u0261\162\0\1\u0262\23\0";\r
 \r
   private static int [] zzUnpackTrans() {\r
-    int [] result = new int[49708];\r
+    int [] result = new int[50396];\r
     int offset = 0;\r
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);\r
     return result;\r
@@ -650,15 +655,16 @@ public final class ScilabLexer extends ScilabLexerConstants {
 \r
   private static final String ZZ_ATTRIBUTE_PACKED_0 =\r
     "\1\0\1\1\4\0\1\1\1\0\1\11\10\1\2\11"+\r
-    "\36\1\3\11\2\1\3\11\23\1\2\11\4\1\1\11"+\r
+    "\36\1\3\11\2\1\3\11\25\1\2\11\4\1\1\11"+\r
     "\1\1\2\11\3\1\1\0\1\1\3\0\6\1\2\11"+\r
     "\1\0\5\1\1\11\31\1\1\0\1\1\1\0\1\11"+\r
-    "\44\0\1\11\1\0\2\1\3\0\35\1\1\0\1\1"+\r
-    "\42\0\20\1\1\11\14\0\1\11\23\0\12\1\33\0"+\r
-    "\5\1\33\0\2\1\33\0\2\1\1\0\1\11\343\0";\r
+    "\46\0\1\11\1\0\2\1\3\0\35\1\1\0\1\1"+\r
+    "\44\0\20\1\1\11\14\0\1\11\24\0\12\1\27\0"+\r
+    "\1\1\4\0\5\1\33\0\2\1\33\0\2\1\1\0"+\r
+    "\1\11\343\0";\r
 \r
   private static int [] zzUnpackAttribute() {\r
-    int [] result = new int[624];\r
+    int [] result = new int[632];\r
     int offset = 0;\r
     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);\r
     return result;\r
@@ -753,27 +759,27 @@ public final class ScilabLexer extends ScilabLexerConstants {
     private MatchingBlockScanner matchBlock;
 
     static {
-       // For SciNotes colors in preferences
-       commands.add("cos");
-       macros.add("sind");
+        // For SciNotes colors in preferences
+        commands.add("cos");
+        macros.add("sind");
     }
 
     public ScilabLexer(ScilabDocument doc) {
-       this(doc, new MatchingBlockScanner(doc), true);
+        this(doc, new MatchingBlockScanner(doc), true);
     }
 
     public ScilabLexer(ScilabDocument doc, boolean update) {
-       this(doc, new MatchingBlockScanner(doc), update);
+        this(doc, new MatchingBlockScanner(doc), update);
     }
 
     public ScilabLexer(ScilabDocument doc, MatchingBlockScanner matchBlock, boolean update) {
         this.doc = doc;
         this.elem = doc.getDefaultRootElement();
         this.infile = doc.getFunctionsInDoc();
-       this.matchBlock = matchBlock;
-       if (update) {
-               update();
-       }
+        this.matchBlock = matchBlock;
+        if (update) {
+                update();
+        }
     }
 
     public static void update() {
@@ -793,7 +799,7 @@ public final class ScilabLexer extends ScilabLexerConstants {
            if (macs != null) {
                macros.addAll(Arrays.asList(macs));
            }
-       }
+        }
     }
 
     public void setRange(int p0, int p1) {
@@ -804,12 +810,12 @@ public final class ScilabLexer extends ScilabLexerConstants {
         yyreset(new ScilabDocumentReader(doc, p0, p1));
         int currentLine = elem.getElementIndex(start);
         if (currentLine != 0) {
-          ScilabDocument.ScilabLeafElement e = (ScilabDocument.ScilabLeafElement) elem.getElement(currentLine - 1);
-          if (e.isBrokenString()) {
+           ScilabDocument.ScilabLeafElement e = (ScilabDocument.ScilabLeafElement) elem.getElement(currentLine - 1);
+           if (e.isBrokenString()) {
               yybegin(QSTRING);
-          } else if (e.isBlockComment()) {
-             yybegin(BLOCKCOMMENT);
-          }
+           } else if (e.isBlockComment()) {
+              yybegin(BLOCKCOMMENT);
+           }
         }
     }
 
@@ -824,23 +830,23 @@ public final class ScilabLexer extends ScilabLexerConstants {
            ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBrokenString(breakstring);
            breakstring = false;
         } else if (lastPos == end) {
-          ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBlockComment(yystate() == BLOCKCOMMENT);
+           ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBlockComment(yystate() == BLOCKCOMMENT);
         }
-       return ret;
+        return ret;
     }
 
     public boolean isLineFinishedByBlockComment(int start, int end) {
         this.start = start;
-       this.end = end;
-       try {           
+        this.end = end;
+        try {           
            yyreset(new ScilabDocumentReader(doc, start, end));
-          int tok = 0;
-          while (tok != ScilabLexerConstants.EOF) {
-             tok = yylex();
-          }
+           int tok = 0;
+           while (tok != ScilabLexerConstants.EOF) {
+              tok = yylex();
+           }
         } catch (Exception e) { }
-       
-       return yystate() == BLOCKCOMMENT;
+        
+        return yystate() == BLOCKCOMMENT;
     }
 
     public int getKeyword(int pos, boolean strict) {
@@ -875,46 +881,46 @@ public final class ScilabLexer extends ScilabLexerConstants {
      }
 
      public static ScilabTokens getScilabTokens(String str) {
-        ScilabDocument doc = new ScilabDocument(false);
-        try {
-            doc.insertString(0, str, null);
+         ScilabDocument doc = new ScilabDocument(false);
+         try {
+             doc.insertString(0, str, null);
          } catch (BadLocationException e) { }
-        return getScilabTokens(doc);
+         return getScilabTokens(doc);
      }
 
      public static ScilabTokens getScilabTokens(ScilabDocument doc) {
-        ScilabLexer lexer = new ScilabLexer(doc);
-        lexer.yyreset(new ScilabDocumentReader(doc, 0, doc.getLength()));
-        ScilabTokens tokens = new ScilabTokens();
-        int tok = -1;
-        try {
-           while (tok != ScilabLexerConstants.EOF) {
+         ScilabLexer lexer = new ScilabLexer(doc);
+         lexer.yyreset(new ScilabDocumentReader(doc, 0, doc.getLength()));
+         ScilabTokens tokens = new ScilabTokens();
+         int tok = -1;
+         try {
+            while (tok != ScilabLexerConstants.EOF) {
                tok = lexer.yylex();
                tokens.add(tok, lexer.yychar() + lexer.yylength());
             }
          } catch (IOException e) { }
  
-        return tokens;
+         return tokens;
      }
 
      public static class ScilabTokens {
         private List<Integer> tokenType = new ArrayList<Integer>();
         private List<Integer> tokenPos = new ArrayList<Integer>();
 
-       ScilabTokens() { }
+        ScilabTokens() { }
 
-       void add(final int type, final int pos) {
-          tokenType.add(type);
-          tokenPos.add(pos);
-       }
+        void add(final int type, final int pos) {
+           tokenType.add(type);
+           tokenPos.add(pos);
+        }
 
-       public final List<Integer> getTokenType() {
-          return tokenType;
-       }
+        public final List<Integer> getTokenType() {
+           return tokenType;
+        }
 
-       public final List<Integer> getTokenPos() {
-          return tokenPos;
-       }
+        public final List<Integer> getTokenPos() {
+           return tokenPos;
+        }
      }
 \r
 \r
@@ -1261,23 +1267,23 @@ public final class ScilabLexer extends ScilabLexerConstants {
             { return ScilabLexerConstants.STRING;\r
             }\r
             // fall through\r
-          case 44: break;\r
+          case 45: break;\r
           case 2:\r
             { transposable = false;
                                    return ScilabLexerConstants.DEFAULT;\r
             }\r
             // fall through\r
-          case 45: break;\r
+          case 46: break;\r
           case 3:\r
             { return ScilabLexerConstants.TAB;\r
             }\r
             // fall through\r
-          case 46: break;\r
+          case 47: break;\r
           case 4:\r
             { return ScilabLexerConstants.WHITE;\r
             }\r
             // fall through\r
-          case 47: break;\r
+          case 48: break;\r
           case 5:\r
             { transposable = true;
                                    String str = yytext();
@@ -1301,7 +1307,7 @@ public final class ScilabLexer extends ScilabLexerConstants {
                                    return ScilabLexerConstants.ID;\r
             }\r
             // fall through\r
-          case 48: break;\r
+          case 49: break;\r
           case 6:\r
             { transposable = false;
                                    beginString = zzStartRead;
@@ -1309,19 +1315,19 @@ public final class ScilabLexer extends ScilabLexerConstants {
                                    return ScilabLexerConstants.STRING;\r
             }\r
             // fall through\r
-          case 49: break;\r
+          case 50: break;\r
           case 7:\r
             { transposable = false;
                                    return ScilabLexerConstants.SPECIAL;\r
             }\r
             // fall through\r
-          case 50: break;\r
+          case 51: break;\r
           case 8:\r
             { transposable = false;
                                    return ScilabLexerConstants.OPERATOR;\r
             }\r
             // fall through\r
-          case 51: break;\r
+          case 52: break;\r
           case 9:\r
             { if (transposable) {
                                        return ScilabLexerConstants.TRANSP;
@@ -1332,141 +1338,141 @@ public final class ScilabLexer extends ScilabLexerConstants {
                                     }\r
             }\r
             // fall through\r
-          case 52: break;\r
+          case 53: break;\r
           case 10:\r
             { transposable = false;
                                    return ScilabLexerConstants.OPENCLOSE;\r
             }\r
             // fall through\r
-          case 53: break;\r
+          case 54: break;\r
           case 11:\r
             { transposable = true;
                                    return ScilabLexerConstants.OPENCLOSE;\r
             }\r
             // fall through\r
-          case 54: break;\r
+          case 55: break;\r
           case 12:\r
             { transposable = false;
                                    yybegin(FIELD);
                                    return ScilabLexerConstants.OPERATOR;\r
             }\r
             // fall through\r
-          case 55: break;\r
+          case 56: break;\r
           case 13:\r
             { transposable = true;
                                    return ScilabLexerConstants.NUMBER;\r
             }\r
             // fall through\r
-          case 56: break;\r
+          case 57: break;\r
           case 14:\r
             { return ScilabLexerConstants.TAB_STRING;\r
             }\r
             // fall through\r
-          case 57: break;\r
+          case 58: break;\r
           case 15:\r
             { return ScilabLexerConstants.DEFAULT;\r
             }\r
             // fall through\r
-          case 58: break;\r
+          case 59: break;\r
           case 16:\r
             { return ScilabLexerConstants.WHITE_STRING;\r
             }\r
             // fall through\r
-          case 59: break;\r
+          case 60: break;\r
           case 17:\r
             { transposable = false;
                                    yybegin(YYINITIAL);
                                    return ScilabLexerConstants.STRING;\r
             }\r
             // fall through\r
-          case 60: break;\r
+          case 61: break;\r
           case 18:\r
             { return ScilabLexerConstants.COMMENT;\r
             }\r
             // fall through\r
-          case 61: break;\r
+          case 62: break;\r
           case 19:\r
             { return ScilabLexerConstants.TAB_COMMENT;\r
             }\r
             // fall through\r
-          case 62: break;\r
+          case 63: break;\r
           case 20:\r
             { return ScilabLexerConstants.WHITE_COMMENT;\r
             }\r
             // fall through\r
-          case 63: break;\r
+          case 64: break;\r
           case 21:\r
             { yypushback(1);
                                    yybegin(YYINITIAL);\r
             }\r
             // fall through\r
-          case 64: break;\r
+          case 65: break;\r
           case 22:\r
             { \r
             }\r
             // fall through\r
-          case 65: break;\r
+          case 66: break;\r
           case 23:\r
             { transposable = true;
                                    return ScilabLexerConstants.FIELD;\r
             }\r
             // fall through\r
-          case 66: break;\r
+          case 67: break;\r
           case 24:\r
             { yybegin(COMMANDSWHITE);
                                    return ScilabLexerConstants.TAB;\r
             }\r
             // fall through\r
-          case 67: break;\r
+          case 68: break;\r
           case 25:\r
             { yybegin(COMMANDSWHITE);
                                    return ScilabLexerConstants.WHITE;\r
             }\r
             // fall through\r
-          case 68: break;\r
+          case 69: break;\r
           case 26:\r
             { yypushback(yylength());
                                    yybegin(YYINITIAL);\r
             }\r
             // fall through\r
-          case 69: break;\r
+          case 70: break;\r
           case 27:\r
             { return ScilabLexerConstants.ERROR;\r
             }\r
             // fall through\r
-          case 70: break;\r
+          case 71: break;\r
           case 28:\r
             { transposable = true;
                                    return ScilabLexerConstants.CONSTANTES;\r
             }\r
             // fall through\r
-          case 71: break;\r
+          case 72: break;\r
           case 29:\r
             { transposable = false;
                                    yypushback(2);
                                    yybegin(BLOCKCOMMENT);\r
             }\r
             // fall through\r
-          case 72: break;\r
+          case 73: break;\r
           case 30:\r
             { transposable = false;
                                    yypushback(2);
                                    yybegin(COMMENT);\r
             }\r
             // fall through\r
-          case 73: break;\r
+          case 74: break;\r
           case 31:\r
             { transposable = false;
                                    return ScilabLexerConstants.SKEYWORD;\r
             }\r
             // fall through\r
-          case 74: break;\r
+          case 75: break;\r
           case 32:\r
             { transposable = false;
                                    return ScilabLexerConstants.OSKEYWORD;\r
             }\r
             // fall through\r
-          case 75: break;\r
+          case 76: break;\r
           case 33:\r
             { yypushback(yylength());
                                    yybegin(BREAKSTRING);
@@ -1474,24 +1480,24 @@ public final class ScilabLexer extends ScilabLexerConstants {
                                    return ScilabLexerConstants.STRING;\r
             }\r
             // fall through\r
-          case 76: break;\r
+          case 77: break;\r
           case 34:\r
             { return ScilabLexerConstants.LATEX;\r
             }\r
             // fall through\r
-          case 77: break;\r
+          case 78: break;\r
           case 35:\r
             { yybegin(YYINITIAL);
-                                  return ScilabLexerConstants.COMMENT;\r
+                                   return ScilabLexerConstants.COMMENT;\r
             }\r
             // fall through\r
-          case 78: break;\r
+          case 79: break;\r
           case 36:\r
             { breakstring = true;
                                    return ScilabLexerConstants.SPECIAL;\r
             }\r
             // fall through\r
-          case 79: break;\r
+          case 80: break;\r
           case 37:\r
             { transposable = false;
                                    if (matchBlock != null) {
@@ -1508,40 +1514,45 @@ public final class ScilabLexer extends ScilabLexerConstants {
                                    return ScilabLexerConstants.OSKEYWORD;\r
             }\r
             // fall through\r
-          case 80: break;\r
+          case 81: break;\r
           case 38:\r
             { transposable = false;
                                    return ScilabLexerConstants.ELSEIF;\r
             }\r
             // fall through\r
-          case 81: break;\r
+          case 82: break;\r
           case 39:\r
             { transposable = false;
                                    return ScilabLexerConstants.CKEYWORD;\r
             }\r
             // fall through\r
-          case 82: break;\r
+          case 83: break;\r
           case 40:\r
             { return ScilabLexerConstants.AUTHORS;\r
             }\r
             // fall through\r
-          case 83: break;\r
+          case 84: break;\r
           case 41:\r
-            { return ScilabLexerConstants.URL;\r
+            { return ScilabLexerConstants.TODO;\r
             }\r
             // fall through\r
-          case 84: break;\r
+          case 85: break;\r
           case 42:\r
+            { return ScilabLexerConstants.URL;\r
+            }\r
+            // fall through\r
+          case 86: break;\r
+          case 43:\r
             { transposable = false;
                                    return ScilabLexerConstants.FKEYWORD;\r
             }\r
             // fall through\r
-          case 85: break;\r
-          case 43:\r
+          case 87: break;\r
+          case 44:\r
             { return ScilabLexerConstants.MAIL;\r
             }\r
             // fall through\r
-          case 86: break;\r
+          case 88: break;\r
           default:\r
             zzScanError(ZZ_NO_MATCH);\r
         }\r