]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/SimanticsDataLexer.c
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / SimanticsDataLexer.c
diff --git a/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/SimanticsDataLexer.c b/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/SimanticsDataLexer.c
new file mode 100644 (file)
index 0000000..d09a434
--- /dev/null
@@ -0,0 +1,3598 @@
+/** \file\r
+ *  This C source file was generated by $ANTLR version 3.2 Sep 23, 2009 12:02:23\r
+ *\r
+ *     -  From the grammar source file : C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g\r
+ *     -                            On : 2010-03-26 13:33:28\r
+ *     -                 for the lexer : SimanticsDataLexerLexer *\r
+ * Editing it, at least manually, is not wise. \r
+ *\r
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.\r
+ *\r
+ *\r
+*/\r
+// [The "BSD licence"]\r
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC\r
+// http://www.temporal-wave.com\r
+// http://www.linkedin.com/in/jimidle\r
+//\r
+// All rights reserved.\r
+//\r
+// Redistribution and use in source and binary forms, with or without\r
+// modification, are permitted provided that the following conditions\r
+// are met:\r
+// 1. Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+// 2. Redistributions in binary form must reproduce the above copyright\r
+//    notice, this list of conditions and the following disclaimer in the\r
+//    documentation and/or other materials provided with the distribution.\r
+// 3. The name of the author may not be used to endorse or promote products\r
+//    derived from this software without specific prior written permission.\r
+//\r
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+\r
+/* -----------------------------------------\r
+ * Include the ANTLR3 generated header file.\r
+ */\r
+#include    "SimanticsDataLexer.h"\r
+/* ----------------------------------------- */\r
+\r
+\r
+/** String literals used by SimanticsDataLexer that we must do things like MATCHS() with.\r
+ *  C will normally just lay down 8 bit characters, and you can use L"xxx" to\r
+ *  get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so\r
+ *  we perform this little trick of defining the literals as arrays of UINT32\r
+ *  and passing in the address of these.\r
+ */\r
+static ANTLR3_UCHAR    lit_1[]  = { 0x74, 0x79, 0x70, 0x65,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_2[]  = { 0x2E, 0x2E,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_3[]  = { 0x74, 0x72, 0x75, 0x65,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_4[]  = { 0x66, 0x61, 0x6C, 0x73, 0x65,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_5[]  = { 0x6E, 0x75, 0x6C, 0x6C,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_6[]  = { 0x6D, 0x61, 0x70,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_7[]  = { 0x2F, 0x2F,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_8[]  = { 0x2F, 0x2A,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_9[]  = { 0x2A, 0x2F,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_10[]  = { 0x22, 0x22, 0x22,  ANTLR3_STRING_TERMINATOR};\r
+static ANTLR3_UCHAR    lit_11[]  = { 0x22, 0x22,  ANTLR3_STRING_TERMINATOR};\r
+\r
+\r
+\r
+\r
+/* MACROS that hide the C interface implementations from the\r
+ * generated code, which makes it a little more understandable to the human eye.\r
+ * I am very much against using C pre-processor macros for function calls and bits\r
+ * of code as you cannot see what is happening when single stepping in debuggers\r
+ * and so on. The exception (in my book at least) is for generated code, where you are\r
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()\r
+ * hides some indirect calls, but is always referring to the input stream. This is\r
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig\r
+ * the runtime interfaces without changing the generated code too often, without\r
+ * confusing the reader of the generated output, who may not wish to know the gory\r
+ * details of the interface inheritance.\r
+ */\r
\r
+#define                CTX     ctx\r
+\r
+/* Aids in accessing scopes for grammar programmers\r
+ */\r
+#undef SCOPE_TYPE\r
+#undef SCOPE_STACK\r
+#undef SCOPE_TOP\r
+#define        SCOPE_TYPE(scope)   pSimanticsDataLexer_##scope##_SCOPE\r
+#define SCOPE_STACK(scope)  pSimanticsDataLexer_##scope##Stack\r
+#define        SCOPE_TOP(scope)    ctx->pSimanticsDataLexer_##scope##Top\r
+#define        SCOPE_SIZE(scope)               ctx->pSimanticsDataLexer_##scope##Stack_limit\r
+#define SCOPE_INSTANCE(scope, i)       (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))\r
+\r
\r
+/* Macros for accessing things in a lexer\r
+ */\r
+#undef     LEXER\r
+#undef     RECOGNIZER              \r
+#undef     RULEMEMO                \r
+#undef     GETCHARINDEX\r
+#undef     GETLINE\r
+#undef     GETCHARPOSITIONINLINE\r
+#undef     EMIT\r
+#undef     EMITNEW\r
+#undef     MATCHC\r
+#undef     MATCHS\r
+#undef     MATCHRANGE\r
+#undef     LTOKEN\r
+#undef     HASFAILED\r
+#undef     FAILEDFLAG\r
+#undef     INPUT\r
+#undef     STRSTREAM\r
+#undef     LA\r
+#undef     HASEXCEPTION\r
+#undef     EXCEPTION\r
+#undef     CONSTRUCTEX\r
+#undef     CONSUME\r
+#undef     LRECOVER\r
+#undef     MARK\r
+#undef     REWIND\r
+#undef     REWINDLAST\r
+#undef     BACKTRACKING\r
+#undef         MATCHANY\r
+#undef         MEMOIZE\r
+#undef         HAVEPARSEDRULE\r
+#undef         GETTEXT\r
+#undef         INDEX\r
+#undef         SEEK\r
+#undef         PUSHSTREAM\r
+#undef         POPSTREAM\r
+#undef         SETTEXT\r
+#undef         SETTEXT8\r
+\r
+#define            LEXER                                       ctx->pLexer\r
+#define            RECOGNIZER                      LEXER->rec\r
+#define                LEXSTATE                                RECOGNIZER->state\r
+#define                TOKSOURCE                               LEXSTATE->tokSource\r
+#define            GETCHARINDEX()                      LEXER->getCharIndex(LEXER)\r
+#define            GETLINE()                           LEXER->getLine(LEXER)\r
+#define            GETTEXT()                           LEXER->getText(LEXER)\r
+#define            GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER)\r
+#define            EMIT()                                      LEXSTATE->type = _type; LEXER->emit(LEXER)\r
+#define            EMITNEW(t)                          LEXER->emitNew(LEXER, t)\r
+#define            MATCHC(c)                           LEXER->matchc(LEXER, c)\r
+#define            MATCHS(s)                           LEXER->matchs(LEXER, s)\r
+#define            MATCHRANGE(c1,c2)       LEXER->matchRange(LEXER, c1, c2)\r
+#define            MATCHANY()                          LEXER->matchAny(LEXER)\r
+#define            LTOKEN                              LEXSTATE->token\r
+#define            HASFAILED()                         (LEXSTATE->failed == ANTLR3_TRUE)\r
+#define            BACKTRACKING                        LEXSTATE->backtracking\r
+#define            FAILEDFLAG                          LEXSTATE->failed\r
+#define            INPUT                                       LEXER->input\r
+#define            STRSTREAM                           INPUT\r
+#define                ISTREAM                                 INPUT->istream\r
+#define                INDEX()                                 ISTREAM->index(ISTREAM)\r
+#define                SEEK(n)                                 ISTREAM->seek(ISTREAM, n)\r
+#define            EOF_TOKEN                           &(LEXSTATE->tokSource->eofToken)\r
+#define            HASEXCEPTION()                      (LEXSTATE->error == ANTLR3_TRUE)\r
+#define            EXCEPTION                           LEXSTATE->exception\r
+#define            CONSTRUCTEX()                       RECOGNIZER->exConstruct(RECOGNIZER)\r
+#define            LRECOVER()                          LEXER->recover(LEXER)\r
+#define            MARK()                                      ISTREAM->mark(ISTREAM)\r
+#define            REWIND(m)                           ISTREAM->rewind(ISTREAM, m)\r
+#define            REWINDLAST()                        ISTREAM->rewindLast(ISTREAM)\r
+#define                MEMOIZE(ri,si)                  RECOGNIZER->memoize(RECOGNIZER, ri, si)\r
+#define                HAVEPARSEDRULE(r)               RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)\r
+#define                PUSHSTREAM(str)                 LEXER->pushCharStream(LEXER, str)\r
+#define                POPSTREAM()                             LEXER->popCharStream(LEXER)\r
+#define                SETTEXT(str)                    LEXSTATE->text = str\r
+#define                SKIP()                                  LEXSTATE->token = &(TOKSOURCE->skipToken)\r
+#define                USER1                                   LEXSTATE->user1\r
+#define                USER2                                   LEXSTATE->user2\r
+#define                USER3                                   LEXSTATE->user3\r
+#define                CUSTOM                                  LEXSTATE->custom\r
+#define                RULEMEMO                                LEXSTATE->ruleMemo\r
+#define                DBG                                             RECOGNIZER->debugger\r
+\r
+/* If we have been told we can rely on the standard 8 bit or 16 bit input\r
+ * stream, then we can define our macros to use the direct pointers\r
+ * in the input object, which is much faster than indirect calls. This\r
+ * is really only significant to lexers with a lot of fragment rules (which\r
+ * do not place LA(1) in a temporary at the moment) and even then\r
+ * only if there is a lot of input (order of say 1M or so).\r
+ */\r
+#if    defined(ANTLR3_INLINE_INPUT_ASCII) || defined(ANTLR3_INLINE_INPUT_UTF16)\r
+\r
+# ifdef        ANTLR3_INLINE_INPUT_ASCII\r
+\r
+/* 8 bit "ASCII" (actually any 8 bit character set) */\r
+\r
+#  define          NEXTCHAR                    ((pANTLR3_UINT8)(INPUT->nextChar))\r
+#  define          DATAP                               ((pANTLR3_UINT8)(INPUT->data))\r
+\r
+# else\r
+\r
+#  define          NEXTCHAR                    ((pANTLR3_UINT16)(INPUT->nextChar)) \r
+#  define          DATAP                               ((pANTLR3_UINT16)(INPUT->data))\r
+\r
+# endif\r
+\r
+# define           LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1)))\r
+# define           CONSUME()                                                                                   \\r
+{                                                                                                                                      \\r
+    if (NEXTCHAR < (DATAP + INPUT->sizeBuf))                                           \\r
+    {                                                                                                                          \\r
+               INPUT->charPositionInLine++;                                                            \\r
+               if  ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar)           \\r
+               {                                                                                                                       \\r
+                       INPUT->line++;                                                                                  \\r
+                       INPUT->charPositionInLine       = 0;                                            \\r
+                       INPUT->currentLine              = (void *)(NEXTCHAR + 1);               \\r
+               }                                                                                                                       \\r
+               INPUT->nextChar = (void *)(NEXTCHAR + 1);                                       \\r
+    }                                                                                                                          \\r
+}\r
+\r
+#else\r
+\r
+// Pick up the input character by calling the input stream implementation.\r
+//\r
+#define            CONSUME()                           INPUT->istream->consume(INPUT->istream)\r
+#define            LA(n)                                       INPUT->istream->_LA(INPUT->istream, n)\r
+\r
+#endif\r
+#define                TOKTEXT(tok, txt)                               tok, (pANTLR3_UINT8)txt\r
+\r
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so\r
+ * then for the present you must use different names for your defines as these are hard coded\r
+ * in the code generator. It would be better not to use such names internally, and maybe\r
+ * we can change this in a forthcoming release. I deliberately do not #undef these\r
+ * here as this will at least give you a redefined error somewhere if they clash.\r
+ */\r
+#define            UP      ANTLR3_TOKEN_UP\r
+#define            DOWN    ANTLR3_TOKEN_DOWN\r
+#define            EOR     ANTLR3_TOKEN_EOR\r
+#define            INVALID ANTLR3_TOKEN_INVALID\r
+\r
+\r
+/* =============================================================================\r
+ * Functions to create and destroy scopes. First come the rule scopes, followed\r
+ * by the global declared scopes.\r
+ */\r
+\r
+\r
+\r
+/* ============================================================================= */\r
+\r
+/* =============================================================================\r
+ * Start of recognizer\r
+ */\r
+\r
+\r
+/* Forward declare the locally static matching functions we have generated and any predicate functions.\r
+ */\r
+static ANTLR3_INLINE  void     mT__34    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__35    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__36    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__37    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__38    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__39    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__40    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__41    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__42    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__43    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__44    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__45    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__46    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__47    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__48    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mT__49    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mID    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mINT    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mFLOAT    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mCOMMENT    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mWS    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mSTRING    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mEXPONENT    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mHEX_DIGIT    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mESC_SEQ    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mOCTAL_ESC    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mUNICODE_ESC    (pSimanticsDataLexer ctx);\r
+static ANTLR3_INLINE  void     mTokens    (pSimanticsDataLexer ctx);\r
+static void    SimanticsDataLexerFree(pSimanticsDataLexer ctx);\r
+\r
+/* =========================================================================\r
+ * Lexer matching rules end.\r
+ * =========================================================================\r
+ */\r
+\r
+\r
+\r
+static void\r
+SimanticsDataLexerFree  (pSimanticsDataLexer ctx)\r
+{\r
+    LEXER->free(LEXER);\r
+    \r
+    ANTLR3_FREE(ctx);\r
+}\r
+\r
+/** \brief Name of the grammar file that generated this code\r
+ */\r
+static const char fileName[] = "C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g";\r
+\r
+/** \brief Return the name of the grammar file that generated this code.\r
+ */\r
+static const char * getGrammarFileName()\r
+{\r
+       return fileName;\r
+}\r
+\r
+/** \brief Create a new lexer called SimanticsDataLexer\r
+ *\r
+ * \param[in]    instream Pointer to an initialized input stream\r
+ * \return \r
+ *     - Success pSimanticsDataLexer initialized for the lex start\r
+ *     - Fail NULL\r
+ */\r
+ANTLR3_API pSimanticsDataLexer SimanticsDataLexerNew         \r
+(pANTLR3_INPUT_STREAM instream)\r
+{\r
+       // See if we can create a new lexer with the standard constructor\r
+       //\r
+       return SimanticsDataLexerNewSSD(instream, NULL);\r
+}\r
+\r
+/** \brief Create a new lexer called SimanticsDataLexer\r
+ *\r
+ * \param[in]    instream Pointer to an initialized input stream\r
+ * \param[state] state Previously created shared recognizer stat\r
+ * \return \r
+ *     - Success pSimanticsDataLexer initialized for the lex start\r
+ *     - Fail NULL\r
+ */\r
+ANTLR3_API pSimanticsDataLexer SimanticsDataLexerNewSSD         \r
+(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)\r
+{\r
+    pSimanticsDataLexer ctx; // Context structure we will build and return\r
+\r
+    ctx = (pSimanticsDataLexer) ANTLR3_CALLOC(1, sizeof(SimanticsDataLexer));\r
+\r
+    if  (ctx == NULL)\r
+    {\r
+        // Failed to allocate memory for lexer context\r
+        return  NULL;\r
+    }\r
+\r
+    /* -------------------------------------------------------------------\r
+     * Memory for basic structure is allocated, now to fill in\r
+     * in base ANTLR3 structures. We initialize the function pointers\r
+     * for the standard ANTLR3 lexer function set, but upon return\r
+     * from here, the programmer may set the pointers to provide custom\r
+     * implementations of each function. \r
+     *\r
+     * We don't use the macros defined in SimanticsDataLexer.h here so you can get a sense\r
+     * of what goes where.\r
+     */\r
+    \r
+    /* Create a base lexer, using the supplied input stream\r
+     */\r
+    ctx->pLexer        = antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state);\r
+    \r
+    /* Check that we allocated the memory correctly\r
+     */\r
+    if (ctx->pLexer == NULL)\r
+    {\r
+               ANTLR3_FREE(ctx);\r
+               return  NULL;\r
+    }\r
+    /* Install the implementation of our SimanticsDataLexer interface\r
+     */\r
+    ctx->mT__34        = mT__34;\r
+    ctx->mT__35        = mT__35;\r
+    ctx->mT__36        = mT__36;\r
+    ctx->mT__37        = mT__37;\r
+    ctx->mT__38        = mT__38;\r
+    ctx->mT__39        = mT__39;\r
+    ctx->mT__40        = mT__40;\r
+    ctx->mT__41        = mT__41;\r
+    ctx->mT__42        = mT__42;\r
+    ctx->mT__43        = mT__43;\r
+    ctx->mT__44        = mT__44;\r
+    ctx->mT__45        = mT__45;\r
+    ctx->mT__46        = mT__46;\r
+    ctx->mT__47        = mT__47;\r
+    ctx->mT__48        = mT__48;\r
+    ctx->mT__49        = mT__49;\r
+    ctx->mID   = mID;\r
+    ctx->mINT  = mINT;\r
+    ctx->mFLOAT        = mFLOAT;\r
+    ctx->mCOMMENT      = mCOMMENT;\r
+    ctx->mWS   = mWS;\r
+    ctx->mSTRING       = mSTRING;\r
+    ctx->mEXPONENT     = mEXPONENT;\r
+    ctx->mHEX_DIGIT    = mHEX_DIGIT;\r
+    ctx->mESC_SEQ      = mESC_SEQ;\r
+    ctx->mOCTAL_ESC    = mOCTAL_ESC;\r
+    ctx->mUNICODE_ESC  = mUNICODE_ESC;\r
+    ctx->mTokens       = mTokens;\r
+    \r
+    /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE\r
+     *  it will call mTokens() in this generated code, and will pass it the ctx\r
+     * pointer of this lexer, not the context of the base lexer, so store that now.\r
+     */\r
+    ctx->pLexer->ctx       = ctx;\r
+    \r
+    /**Install the token matching function\r
+     */\r
+    ctx->pLexer->mTokens = (void (*) (void *))(mTokens);\r
+    \r
+    ctx->getGrammarFileName    = getGrammarFileName;\r
+    ctx->free          = SimanticsDataLexerFree;\r
+\r
+    \r
+    \r
+\r
+\r
+    /* Return the newly built lexer to the caller\r
+     */\r
+    return  ctx;\r
+}\r
+\r
+/* =========================================================================\r
+ * DFA tables for the lexer\r
+ */\r
+/** Static dfa state tables for Cyclic dfa:\r
+ *    40:1: FLOAT : ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( EXPONENT )? | ( '-' )? ( '0' .. '9' )+ EXPONENT );\r
+ */\r
+static const ANTLR3_INT32 dfa10_eot[5] =\r
+    {\r
+       -1, -1, -1, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa10_eof[5] =\r
+    {\r
+       -1, -1, -1, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa10_min[5] =\r
+    {\r
+       45, 48, 46, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa10_max[5] =\r
+    {\r
+       57, 57, 101, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa10_accept[5] =\r
+    {\r
+       -1, -1, -1, 2, 1\r
+    };\r
+static const ANTLR3_INT32 dfa10_special[5] =\r
+    {  \r
+       -1, -1, -1, -1, -1\r
+    };\r
+\r
+/** Used when there is no transition table entry for a particular state */\r
+#define dfa10_T_empty      NULL\r
+\r
+static const ANTLR3_INT32 dfa10_T0[] =\r
+    {\r
+       2, 2, 2, 2, 2, 2, 2, 2, 2, 2\r
+    };static const ANTLR3_INT32 dfa10_T1[] =\r
+    {\r
+       1, -1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2\r
+    };static const ANTLR3_INT32 dfa10_T2[] =\r
+    {\r
+       4, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3\r
+    };\r
+\r
+/* Transition tables are a table of sub tables, with some tables\r
+ * reused for efficiency.\r
+ */\r
+static const ANTLR3_INT32 * const dfa10_transitions[] =\r
+{\r
+    dfa10_T1, dfa10_T0, dfa10_T2, dfa10_T_empty, dfa10_T_empty \r
+};\r
+\r
+\r
+/* Declare tracking structure for Cyclic DFA 10\r
+ */\r
+static\r
+ANTLR3_CYCLIC_DFA cdfa10\r
+    =  {\r
+           10,             /* Decision number of this dfa          */\r
+           /* Which decision this represents:   */\r
+           (const pANTLR3_UCHAR)"40:1: FLOAT : ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( EXPONENT )? | ( '-' )? ( '0' .. '9' )+ EXPONENT );",   \r
+           (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition,        /* Default special state transition function    */\r
+           antlr3dfaspecialTransition,         /* DFA specialTransition is currently just a default function in the runtime */\r
+           antlr3dfapredict,                   /* DFA simulator function is in the runtime */\r
+           dfa10_eot,      /* EOT table                            */\r
+           dfa10_eof,      /* EOF table                            */\r
+           dfa10_min,      /* Minimum tokens for each state    */\r
+           dfa10_max,      /* Maximum tokens for each state    */\r
+           dfa10_accept,       /* Accept table                     */\r
+           dfa10_special,      /* Special transition states        */\r
+           dfa10_transitions   /* Table of transition tables       */\r
+\r
+       };          \r
+/* End of Cyclic DFA 10\r
+ * ---------------------\r
+ *//** Static dfa state tables for Cyclic dfa:\r
+ *    1:1: Tokens : ( T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | ID | INT | FLOAT | COMMENT | WS | STRING );\r
+ */\r
+static const ANTLR3_INT32 dfa22_eot[44] =\r
+    {\r
+       -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, 16, 16, -1, -1, \r
+       28, -1, -1, -1, 16, 16, 16, 16, 16, -1, -1, 16, 16, 16, 16, 38, 39, 40, \r
+       16, 42, -1, -1, -1, 43, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa22_eof[44] =\r
+    {\r
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, -1, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa22_min[44] =\r
+    {\r
+       9, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, 117, 97, -1, 48, \r
+       46, -1, -1, -1, 112, 117, 108, 108, 112, -1, -1, 101, 101, 115, 108, 48, \r
+       48, 48, 101, 48, -1, -1, -1, 48, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa22_max[44] =\r
+    {\r
+       125, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, 117, 97, -1, \r
+       57, 101, -1, -1, -1, 112, 117, 108, 108, 112, -1, -1, 101, 101, 115, 108, \r
+       122, 122, 122, 101, 122, -1, -1, -1, 122, -1, -1\r
+    };\r
+static const ANTLR3_INT32 dfa22_accept[44] =\r
+    {\r
+       -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, 17, -1, -1, 20, \r
+       21, 22, -1, -1, -1, -1, -1, 19, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       16, 1, 13, -1, 15, 14\r
+    };\r
+static const ANTLR3_INT32 dfa22_special[44] =\r
+    {  \r
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, -1, -1, -1\r
+    };\r
+\r
+/** Used when there is no transition table entry for a particular state */\r
+#define dfa22_T_empty      NULL\r
+\r
+static const ANTLR3_INT32 dfa22_T0[] =\r
+    {\r
+       16, 16, 16, 16, 16, 16, 16, 16, 16, 16, -1, -1, -1, -1, -1, -1, -1, 16, \r
+       16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, \r
+       16, 16, 16, 16, 16, 16, 16, -1, -1, -1, -1, 16, -1, 16, 16, 16, 16, 16, \r
+       16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, \r
+       16, 16, 16\r
+    };static const ANTLR3_INT32 dfa22_T1[] =\r
+    {\r
+       41\r
+    };static const ANTLR3_INT32 dfa22_T2[] =\r
+    {\r
+       36\r
+    };static const ANTLR3_INT32 dfa22_T3[] =\r
+    {\r
+       31\r
+    };static const ANTLR3_INT32 dfa22_T4[] =\r
+    {\r
+       26\r
+    };static const ANTLR3_INT32 dfa22_T5[] =\r
+    {\r
+       35\r
+    };static const ANTLR3_INT32 dfa22_T6[] =\r
+    {\r
+       30\r
+    };static const ANTLR3_INT32 dfa22_T7[] =\r
+    {\r
+       33\r
+    };static const ANTLR3_INT32 dfa22_T8[] =\r
+    {\r
+       25\r
+    };static const ANTLR3_INT32 dfa22_T9[] =\r
+    {\r
+       20, 20, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, 20, -1, 21, -1, -1, -1, -1, -1, 7, 9, -1, -1, 8, 17, \r
+       6, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 12, -1, -1, 2, -1, -1, -1, \r
+       16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, \r
+       16, 16, 16, 16, 16, 16, 16, 16, 4, -1, 5, -1, 16, -1, 16, 16, 16, 16, 16, \r
+       13, 16, 16, 16, 16, 16, 16, 15, 14, 16, 16, 16, 16, 16, 1, 16, 16, 16, \r
+       16, 16, 16, 10, 3, 11\r
+    };static const ANTLR3_INT32 dfa22_T10[] =\r
+    {\r
+       24\r
+    };static const ANTLR3_INT32 dfa22_T11[] =\r
+    {\r
+       32\r
+    };static const ANTLR3_INT32 dfa22_T12[] =\r
+    {\r
+       37\r
+    };static const ANTLR3_INT32 dfa22_T13[] =\r
+    {\r
+       29\r
+    };static const ANTLR3_INT32 dfa22_T14[] =\r
+    {\r
+       34\r
+    };static const ANTLR3_INT32 dfa22_T15[] =\r
+    {\r
+       27, -1, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+       -1, 27\r
+    };static const ANTLR3_INT32 dfa22_T16[] =\r
+    {\r
+       23, -1, -1, -1, -1, -1, -1, 22\r
+    };static const ANTLR3_INT32 dfa22_T17[] =\r
+    {\r
+       18, 18, 18, 18, 18, 18, 18, 18, 18, 18\r
+    };\r
+\r
+/* Transition tables are a table of sub tables, with some tables\r
+ * reused for efficiency.\r
+ */\r
+static const ANTLR3_INT32 * const dfa22_transitions[] =\r
+{\r
+    dfa22_T9, dfa22_T16, dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, \r
+    dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, \r
+    dfa22_T_empty, dfa22_T_empty, dfa22_T10, dfa22_T8, dfa22_T4, dfa22_T_empty, \r
+    dfa22_T17, dfa22_T15, dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, dfa22_T13, \r
+    dfa22_T6, dfa22_T3, dfa22_T11, dfa22_T7, dfa22_T_empty, dfa22_T_empty, \r
+    dfa22_T14, dfa22_T5, dfa22_T2, dfa22_T12, dfa22_T0, dfa22_T0, dfa22_T0, \r
+    dfa22_T1, dfa22_T0, dfa22_T_empty, dfa22_T_empty, dfa22_T_empty, dfa22_T0, \r
+    dfa22_T_empty, dfa22_T_empty       \r
+};\r
+\r
+\r
+/* Declare tracking structure for Cyclic DFA 22\r
+ */\r
+static\r
+ANTLR3_CYCLIC_DFA cdfa22\r
+    =  {\r
+           22,             /* Decision number of this dfa          */\r
+           /* Which decision this represents:   */\r
+           (const pANTLR3_UCHAR)"1:1: Tokens : ( T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | ID | INT | FLOAT | COMMENT | WS | STRING );", \r
+           (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition,        /* Default special state transition function    */\r
+           antlr3dfaspecialTransition,         /* DFA specialTransition is currently just a default function in the runtime */\r
+           antlr3dfapredict,                   /* DFA simulator function is in the runtime */\r
+           dfa22_eot,      /* EOT table                            */\r
+           dfa22_eof,      /* EOF table                            */\r
+           dfa22_min,      /* Minimum tokens for each state    */\r
+           dfa22_max,      /* Maximum tokens for each state    */\r
+           dfa22_accept,       /* Accept table                     */\r
+           dfa22_special,      /* Special transition states        */\r
+           dfa22_transitions   /* Table of transition tables       */\r
+\r
+       };          \r
+/* End of Cyclic DFA 22\r
+ * ---------------------\r
+ */ \r
+/* =========================================================================\r
+ * End of DFA tables for the lexer\r
+ */ \r
+\r
+/* =========================================================================\r
+ * Functions to match the lexer grammar defined tokens from the input stream\r
+ */\r
+\r
+//   Comes from: 7:7: ( 'type' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__34\r
+ *\r
+ * Looks to match the characters the constitute the token T__34\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__34(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__34;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:7:7: ( 'type' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:7:9: 'type'\r
+    {\r
+        MATCHS(lit_1); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__34Ex;\r
+        }\r
+\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__34Ex; /* Prevent compiler warnings */\r
+    ruleT__34Ex: ;\r
+\r
+}\r
+// $ANTLR end T__34\r
+\r
+//   Comes from: 8:7: ( '=' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__35\r
+ *\r
+ * Looks to match the characters the constitute the token T__35\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__35(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__35;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:8:7: ( '=' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:8:9: '='\r
+    {\r
+        MATCHC('='); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__35Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__35Ex; /* Prevent compiler warnings */\r
+    ruleT__35Ex: ;\r
+\r
+}\r
+// $ANTLR end T__35\r
+\r
+//   Comes from: 9:7: ( '|' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__36\r
+ *\r
+ * Looks to match the characters the constitute the token T__36\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__36(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__36;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:9:7: ( '|' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:9:9: '|'\r
+    {\r
+        MATCHC('|'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__36Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__36Ex; /* Prevent compiler warnings */\r
+    ruleT__36Ex: ;\r
+\r
+}\r
+// $ANTLR end T__36\r
+\r
+//   Comes from: 10:7: ( '[' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__37\r
+ *\r
+ * Looks to match the characters the constitute the token T__37\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__37(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__37;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:10:7: ( '[' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:10:9: '['\r
+    {\r
+        MATCHC('['); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__37Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__37Ex; /* Prevent compiler warnings */\r
+    ruleT__37Ex: ;\r
+\r
+}\r
+// $ANTLR end T__37\r
+\r
+//   Comes from: 11:7: ( ']' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__38\r
+ *\r
+ * Looks to match the characters the constitute the token T__38\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__38(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__38;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:11:7: ( ']' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:11:9: ']'\r
+    {\r
+        MATCHC(']'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__38Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__38Ex; /* Prevent compiler warnings */\r
+    ruleT__38Ex: ;\r
+\r
+}\r
+// $ANTLR end T__38\r
+\r
+//   Comes from: 12:7: ( '..' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__39\r
+ *\r
+ * Looks to match the characters the constitute the token T__39\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__39(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__39;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:12:7: ( '..' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:12:9: '..'\r
+    {\r
+        MATCHS(lit_2); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__39Ex;\r
+        }\r
+\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__39Ex; /* Prevent compiler warnings */\r
+    ruleT__39Ex: ;\r
+\r
+}\r
+// $ANTLR end T__39\r
+\r
+//   Comes from: 13:7: ( '(' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__40\r
+ *\r
+ * Looks to match the characters the constitute the token T__40\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__40(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__40;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:13:7: ( '(' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:13:9: '('\r
+    {\r
+        MATCHC('('); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__40Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__40Ex; /* Prevent compiler warnings */\r
+    ruleT__40Ex: ;\r
+\r
+}\r
+// $ANTLR end T__40\r
+\r
+//   Comes from: 14:7: ( ',' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__41\r
+ *\r
+ * Looks to match the characters the constitute the token T__41\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__41(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__41;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:14:7: ( ',' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:14:9: ','\r
+    {\r
+        MATCHC(','); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__41Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__41Ex; /* Prevent compiler warnings */\r
+    ruleT__41Ex: ;\r
+\r
+}\r
+// $ANTLR end T__41\r
+\r
+//   Comes from: 15:7: ( ')' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__42\r
+ *\r
+ * Looks to match the characters the constitute the token T__42\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__42(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__42;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:15:7: ( ')' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:15:9: ')'\r
+    {\r
+        MATCHC(')'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__42Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__42Ex; /* Prevent compiler warnings */\r
+    ruleT__42Ex: ;\r
+\r
+}\r
+// $ANTLR end T__42\r
+\r
+//   Comes from: 16:7: ( '{' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__43\r
+ *\r
+ * Looks to match the characters the constitute the token T__43\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__43(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__43;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:16:7: ( '{' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:16:9: '{'\r
+    {\r
+        MATCHC('{'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__43Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__43Ex; /* Prevent compiler warnings */\r
+    ruleT__43Ex: ;\r
+\r
+}\r
+// $ANTLR end T__43\r
+\r
+//   Comes from: 17:7: ( '}' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__44\r
+ *\r
+ * Looks to match the characters the constitute the token T__44\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__44(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__44;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:17:7: ( '}' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:17:9: '}'\r
+    {\r
+        MATCHC('}'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__44Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__44Ex; /* Prevent compiler warnings */\r
+    ruleT__44Ex: ;\r
+\r
+}\r
+// $ANTLR end T__44\r
+\r
+//   Comes from: 18:7: ( ':' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__45\r
+ *\r
+ * Looks to match the characters the constitute the token T__45\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__45(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__45;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:18:7: ( ':' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:18:9: ':'\r
+    {\r
+        MATCHC(':'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__45Ex;\r
+        }\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__45Ex; /* Prevent compiler warnings */\r
+    ruleT__45Ex: ;\r
+\r
+}\r
+// $ANTLR end T__45\r
+\r
+//   Comes from: 19:7: ( 'true' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__46\r
+ *\r
+ * Looks to match the characters the constitute the token T__46\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__46(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__46;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:19:7: ( 'true' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:19:9: 'true'\r
+    {\r
+        MATCHS(lit_3); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__46Ex;\r
+        }\r
+\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__46Ex; /* Prevent compiler warnings */\r
+    ruleT__46Ex: ;\r
+\r
+}\r
+// $ANTLR end T__46\r
+\r
+//   Comes from: 20:7: ( 'false' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__47\r
+ *\r
+ * Looks to match the characters the constitute the token T__47\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__47(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__47;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:20:7: ( 'false' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:20:9: 'false'\r
+    {\r
+        MATCHS(lit_4); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__47Ex;\r
+        }\r
+\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__47Ex; /* Prevent compiler warnings */\r
+    ruleT__47Ex: ;\r
+\r
+}\r
+// $ANTLR end T__47\r
+\r
+//   Comes from: 21:7: ( 'null' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__48\r
+ *\r
+ * Looks to match the characters the constitute the token T__48\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__48(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__48;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:21:7: ( 'null' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:21:9: 'null'\r
+    {\r
+        MATCHS(lit_5); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__48Ex;\r
+        }\r
+\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__48Ex; /* Prevent compiler warnings */\r
+    ruleT__48Ex: ;\r
+\r
+}\r
+// $ANTLR end T__48\r
+\r
+//   Comes from: 22:7: ( 'map' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start T__49\r
+ *\r
+ * Looks to match the characters the constitute the token T__49\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mT__49(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = T__49;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:22:7: ( 'map' )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:22:9: 'map'\r
+    {\r
+        MATCHS(lit_6); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleT__49Ex;\r
+        }\r
+\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleT__49Ex; /* Prevent compiler warnings */\r
+    ruleT__49Ex: ;\r
+\r
+}\r
+// $ANTLR end T__49\r
+\r
+//   Comes from: 34:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start ID\r
+ *\r
+ * Looks to match the characters the constitute the token ID\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mID(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = ID;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:34:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:34:7: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*\r
+    {\r
+        if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )\r
+        {\r
+            CONSUME();\r
+\r
+        }\r
+        else \r
+        {\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+            LRECOVER();    goto ruleIDEx;\r
+        }\r
+\r
+\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:34:31: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*\r
+\r
+        for (;;)\r
+        {\r
+            int alt1=2;\r
+            switch ( LA(1) ) \r
+            {\r
+            case '0':\r
+            case '1':\r
+            case '2':\r
+            case '3':\r
+            case '4':\r
+            case '5':\r
+            case '6':\r
+            case '7':\r
+            case '8':\r
+            case '9':\r
+            case 'A':\r
+            case 'B':\r
+            case 'C':\r
+            case 'D':\r
+            case 'E':\r
+            case 'F':\r
+            case 'G':\r
+            case 'H':\r
+            case 'I':\r
+            case 'J':\r
+            case 'K':\r
+            case 'L':\r
+            case 'M':\r
+            case 'N':\r
+            case 'O':\r
+            case 'P':\r
+            case 'Q':\r
+            case 'R':\r
+            case 'S':\r
+            case 'T':\r
+            case 'U':\r
+            case 'V':\r
+            case 'W':\r
+            case 'X':\r
+            case 'Y':\r
+            case 'Z':\r
+            case '_':\r
+            case 'a':\r
+            case 'b':\r
+            case 'c':\r
+            case 'd':\r
+            case 'e':\r
+            case 'f':\r
+            case 'g':\r
+            case 'h':\r
+            case 'i':\r
+            case 'j':\r
+            case 'k':\r
+            case 'l':\r
+            case 'm':\r
+            case 'n':\r
+            case 'o':\r
+            case 'p':\r
+            case 'q':\r
+            case 'r':\r
+            case 's':\r
+            case 't':\r
+            case 'u':\r
+            case 'v':\r
+            case 'w':\r
+            case 'x':\r
+            case 'y':\r
+            case 'z':\r
+               {\r
+                       alt1=1;\r
+               }\r
+                break;\r
+\r
+            }\r
+\r
+            switch (alt1) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:\r
+                   {\r
+                       if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )\r
+                       {\r
+                           CONSUME();\r
+\r
+                       }\r
+                       else \r
+                       {\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                           EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                           LRECOVER();    goto ruleIDEx;\r
+                       }\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+               default:\r
+                   goto loop1; /* break out of the loop */\r
+                   break;\r
+            }\r
+        }\r
+        loop1: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleIDEx; /* Prevent compiler warnings */\r
+    ruleIDEx: ;\r
+\r
+}\r
+// $ANTLR end ID\r
+\r
+//   Comes from: 37:5: ( ( '-' )? ( '0' .. '9' )+ )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start INT\r
+ *\r
+ * Looks to match the characters the constitute the token INT\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mINT(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = INT;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:37:5: ( ( '-' )? ( '0' .. '9' )+ )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:37:7: ( '-' )? ( '0' .. '9' )+\r
+    {\r
+\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:37:7: ( '-' )?\r
+        {\r
+            int alt2=2;\r
+            switch ( LA(1) ) \r
+            {\r
+                case '-':\r
+                       {\r
+                               alt2=1;\r
+                       }\r
+                    break;\r
+            }\r
+\r
+            switch (alt2) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:37:7: '-'\r
+                   {\r
+                       MATCHC('-'); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleINTEx;\r
+                       }\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:37:12: ( '0' .. '9' )+\r
+        {\r
+            int cnt3=0;\r
+\r
+            for (;;)\r
+            {\r
+                int alt3=2;\r
+               switch ( LA(1) ) \r
+               {\r
+               case '0':\r
+               case '1':\r
+               case '2':\r
+               case '3':\r
+               case '4':\r
+               case '5':\r
+               case '6':\r
+               case '7':\r
+               case '8':\r
+               case '9':\r
+                       {\r
+                               alt3=1;\r
+                       }\r
+                   break;\r
+\r
+               }\r
+\r
+               switch (alt3) \r
+               {\r
+                   case 1:\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:37:12: '0' .. '9'\r
+                       {\r
+                           MATCHRANGE('0', '9'); \r
+                           if  (HASEXCEPTION())\r
+                           {\r
+                               goto ruleINTEx;\r
+                           }\r
+\r
+\r
+                       }\r
+                       break;\r
+\r
+                   default:\r
+                   \r
+                       if ( cnt3 >= 1 )\r
+                       {\r
+                           goto loop3;\r
+                       }\r
+                       /* mismatchedSetEx()\r
+                        */\r
+                       CONSTRUCTEX();\r
+                       EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;\r
+                       EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;\r
+\r
+\r
+                       goto ruleINTEx;\r
+               }\r
+               cnt3++;\r
+            }\r
+            loop3: ;   /* Jump to here if this rule does not match */\r
+        }\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleINTEx; /* Prevent compiler warnings */\r
+    ruleINTEx: ;\r
+\r
+}\r
+// $ANTLR end INT\r
+\r
+//   Comes from: 41:5: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( EXPONENT )? | ( '-' )? ( '0' .. '9' )+ EXPONENT )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start FLOAT\r
+ *\r
+ * Looks to match the characters the constitute the token FLOAT\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mFLOAT(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = FLOAT;\r
+       \r
+    \r
+    {\r
+        //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:5: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( EXPONENT )? | ( '-' )? ( '0' .. '9' )+ EXPONENT )\r
+        \r
+        ANTLR3_UINT32 alt10;\r
+\r
+        alt10=2;\r
+\r
+        alt10 = cdfa10.predict(ctx, RECOGNIZER, ISTREAM, &cdfa10);\r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleFLOATEx;\r
+        }\r
+\r
+        switch (alt10) \r
+        {\r
+       case 1:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:9: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( EXPONENT )?\r
+           {\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:9: ( '-' )?\r
+               {\r
+                   int alt4=2;\r
+                   switch ( LA(1) ) \r
+                   {\r
+                       case '-':\r
+                               {\r
+                                       alt4=1;\r
+                               }\r
+                           break;\r
+                   }\r
+\r
+                   switch (alt4) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:9: '-'\r
+                           {\r
+                               MATCHC('-'); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleFLOATEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                   }\r
+               }\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:14: ( '0' .. '9' )+\r
+               {\r
+                   int cnt5=0;\r
+\r
+                   for (;;)\r
+                   {\r
+                       int alt5=2;\r
+                       switch ( LA(1) ) \r
+                       {\r
+                       case '0':\r
+                       case '1':\r
+                       case '2':\r
+                       case '3':\r
+                       case '4':\r
+                       case '5':\r
+                       case '6':\r
+                       case '7':\r
+                       case '8':\r
+                       case '9':\r
+                               {\r
+                                       alt5=1;\r
+                               }\r
+                           break;\r
+\r
+                       }\r
+\r
+                       switch (alt5) \r
+                       {\r
+                           case 1:\r
+                               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:15: '0' .. '9'\r
+                               {\r
+                                   MATCHRANGE('0', '9'); \r
+                                   if  (HASEXCEPTION())\r
+                                   {\r
+                                       goto ruleFLOATEx;\r
+                                   }\r
+\r
+\r
+                               }\r
+                               break;\r
+\r
+                           default:\r
+                           \r
+                               if ( cnt5 >= 1 )\r
+                               {\r
+                                   goto loop5;\r
+                               }\r
+                               /* mismatchedSetEx()\r
+                                */\r
+                               CONSTRUCTEX();\r
+                               EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;\r
+                               EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;\r
+\r
+\r
+                               goto ruleFLOATEx;\r
+                       }\r
+                       cnt5++;\r
+                   }\r
+                   loop5: ;    /* Jump to here if this rule does not match */\r
+               }\r
+               MATCHC('.'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleFLOATEx;\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:30: ( '0' .. '9' )+\r
+               {\r
+                   int cnt6=0;\r
+\r
+                   for (;;)\r
+                   {\r
+                       int alt6=2;\r
+                       switch ( LA(1) ) \r
+                       {\r
+                       case '0':\r
+                       case '1':\r
+                       case '2':\r
+                       case '3':\r
+                       case '4':\r
+                       case '5':\r
+                       case '6':\r
+                       case '7':\r
+                       case '8':\r
+                       case '9':\r
+                               {\r
+                                       alt6=1;\r
+                               }\r
+                           break;\r
+\r
+                       }\r
+\r
+                       switch (alt6) \r
+                       {\r
+                           case 1:\r
+                               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:31: '0' .. '9'\r
+                               {\r
+                                   MATCHRANGE('0', '9'); \r
+                                   if  (HASEXCEPTION())\r
+                                   {\r
+                                       goto ruleFLOATEx;\r
+                                   }\r
+\r
+\r
+                               }\r
+                               break;\r
+\r
+                           default:\r
+                           \r
+                               if ( cnt6 >= 1 )\r
+                               {\r
+                                   goto loop6;\r
+                               }\r
+                               /* mismatchedSetEx()\r
+                                */\r
+                               CONSTRUCTEX();\r
+                               EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;\r
+                               EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;\r
+\r
+\r
+                               goto ruleFLOATEx;\r
+                       }\r
+                       cnt6++;\r
+                   }\r
+                   loop6: ;    /* Jump to here if this rule does not match */\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:42: ( EXPONENT )?\r
+               {\r
+                   int alt7=2;\r
+                   switch ( LA(1) ) \r
+                   {\r
+                       case 'E':\r
+                       case 'e':\r
+                               {\r
+                                       alt7=1;\r
+                               }\r
+                           break;\r
+                   }\r
+\r
+                   switch (alt7) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:41:42: EXPONENT\r
+                           {\r
+                               /* 41:42: EXPONENT */\r
+                               mEXPONENT(ctx ); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleFLOATEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                   }\r
+               }\r
+\r
+           }\r
+           break;\r
+       case 2:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:43:9: ( '-' )? ( '0' .. '9' )+ EXPONENT\r
+           {\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:43:9: ( '-' )?\r
+               {\r
+                   int alt8=2;\r
+                   switch ( LA(1) ) \r
+                   {\r
+                       case '-':\r
+                               {\r
+                                       alt8=1;\r
+                               }\r
+                           break;\r
+                   }\r
+\r
+                   switch (alt8) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:43:9: '-'\r
+                           {\r
+                               MATCHC('-'); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleFLOATEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                   }\r
+               }\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:43:14: ( '0' .. '9' )+\r
+               {\r
+                   int cnt9=0;\r
+\r
+                   for (;;)\r
+                   {\r
+                       int alt9=2;\r
+                       switch ( LA(1) ) \r
+                       {\r
+                       case '0':\r
+                       case '1':\r
+                       case '2':\r
+                       case '3':\r
+                       case '4':\r
+                       case '5':\r
+                       case '6':\r
+                       case '7':\r
+                       case '8':\r
+                       case '9':\r
+                               {\r
+                                       alt9=1;\r
+                               }\r
+                           break;\r
+\r
+                       }\r
+\r
+                       switch (alt9) \r
+                       {\r
+                           case 1:\r
+                               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:43:15: '0' .. '9'\r
+                               {\r
+                                   MATCHRANGE('0', '9'); \r
+                                   if  (HASEXCEPTION())\r
+                                   {\r
+                                       goto ruleFLOATEx;\r
+                                   }\r
+\r
+\r
+                               }\r
+                               break;\r
+\r
+                           default:\r
+                           \r
+                               if ( cnt9 >= 1 )\r
+                               {\r
+                                   goto loop9;\r
+                               }\r
+                               /* mismatchedSetEx()\r
+                                */\r
+                               CONSTRUCTEX();\r
+                               EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;\r
+                               EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;\r
+\r
+\r
+                               goto ruleFLOATEx;\r
+                       }\r
+                       cnt9++;\r
+                   }\r
+                   loop9: ;    /* Jump to here if this rule does not match */\r
+               }\r
+               /* 43:9: ( '-' )? ( '0' .. '9' )+ EXPONENT */\r
+               mEXPONENT(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleFLOATEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+\r
+        }\r
+    }\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleFLOATEx; /* Prevent compiler warnings */\r
+    ruleFLOATEx: ;\r
+\r
+}\r
+// $ANTLR end FLOAT\r
+\r
+//   Comes from: 47:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' | '/*' ( options {greedy=false; } : . )* '*/' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start COMMENT\r
+ *\r
+ * Looks to match the characters the constitute the token COMMENT\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mCOMMENT(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = COMMENT;\r
+       \r
+    \r
+    {\r
+        //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:47:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' | '/*' ( options {greedy=false; } : . )* '*/' )\r
+        \r
+        ANTLR3_UINT32 alt14;\r
+\r
+        alt14=2;\r
+\r
+        switch ( LA(1) ) \r
+        {\r
+        case '/':\r
+               {\r
+                       switch ( LA(2) ) \r
+                       {\r
+                       case '/':\r
+                               {\r
+                                       alt14=1;\r
+                               }\r
+                           break;\r
+                       case '*':\r
+                               {\r
+                                       alt14=2;\r
+                               }\r
+                           break;\r
+\r
+                       default:\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                           EXCEPTION->message      = (void *)"";\r
+                           EXCEPTION->decisionNum  = 14;\r
+                           EXCEPTION->state        = 1;\r
+\r
+\r
+                           goto ruleCOMMENTEx;\r
+                       }\r
+\r
+               }\r
+            break;\r
+\r
+        default:\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+            EXCEPTION->message      = (void *)"";\r
+            EXCEPTION->decisionNum  = 14;\r
+            EXCEPTION->state        = 0;\r
+\r
+\r
+            goto ruleCOMMENTEx;\r
+        }\r
+\r
+        switch (alt14) \r
+        {\r
+       case 1:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:47:9: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'\r
+           {\r
+               MATCHS(lit_7); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleCOMMENTEx;\r
+               }\r
+\r
+\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:47:14: (~ ( '\\n' | '\\r' ) )*\r
+\r
+               for (;;)\r
+               {\r
+                   int alt11=2;\r
+                   {\r
+                      /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                       */\r
+                       int LA11_0 = LA(1);\r
+                       if ( (((LA11_0 >= 0x0000) && (LA11_0 <= '\t')) || ((LA11_0 >= 0x000B) && (LA11_0 <= '\f')) || ((LA11_0 >= 0x000E) && (LA11_0 <= 0xFFFF))) ) \r
+                       {\r
+                           alt11=1;\r
+                       }\r
+\r
+                   }\r
+                   switch (alt11) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:47:14: ~ ( '\\n' | '\\r' )\r
+                           {\r
+                               if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )\r
+                               {\r
+                                   CONSUME();\r
+\r
+                               }\r
+                               else \r
+                               {\r
+                                   CONSTRUCTEX();\r
+                                   EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                                   EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                                   LRECOVER();    goto ruleCOMMENTEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                       default:\r
+                           goto loop11;        /* break out of the loop */\r
+                           break;\r
+                   }\r
+               }\r
+               loop11: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:47:28: ( '\\r' )?\r
+               {\r
+                   int alt12=2;\r
+                   switch ( LA(1) ) \r
+                   {\r
+                       case '\r':\r
+                               {\r
+                                       alt12=1;\r
+                               }\r
+                           break;\r
+                   }\r
+\r
+                   switch (alt12) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:47:28: '\\r'\r
+                           {\r
+                               MATCHC('\r'); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleCOMMENTEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                   }\r
+               }\r
+               MATCHC('\n'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleCOMMENTEx;\r
+               }\r
+\r
+               {\r
+                   LEXSTATE->channel=HIDDEN;\r
+               }\r
+\r
+           }\r
+           break;\r
+       case 2:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:48:9: '/*' ( options {greedy=false; } : . )* '*/'\r
+           {\r
+               MATCHS(lit_8); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleCOMMENTEx;\r
+               }\r
+\r
+\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:48:14: ( options {greedy=false; } : . )*\r
+\r
+               for (;;)\r
+               {\r
+                   int alt13=2;\r
+                   {\r
+                      /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                       */\r
+                       int LA13_0 = LA(1);\r
+                       if ( (LA13_0 == '*') ) \r
+                       {\r
+                           {\r
+                              /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                               */\r
+                               int LA13_1 = LA(2);\r
+                               if ( (LA13_1 == '/') ) \r
+                               {\r
+                                   alt13=2;\r
+                               }\r
+                               else if ( (((LA13_1 >= 0x0000) && (LA13_1 <= '.')) || ((LA13_1 >= '0') && (LA13_1 <= 0xFFFF))) ) \r
+                               {\r
+                                   alt13=1;\r
+                               }\r
+\r
+                           }\r
+                       }\r
+                       else if ( (((LA13_0 >= 0x0000) && (LA13_0 <= ')')) || ((LA13_0 >= '+') && (LA13_0 <= 0xFFFF))) ) \r
+                       {\r
+                           alt13=1;\r
+                       }\r
+\r
+                   }\r
+                   switch (alt13) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:48:42: .\r
+                           {\r
+                               MATCHANY(); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleCOMMENTEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                       default:\r
+                           goto loop13;        /* break out of the loop */\r
+                           break;\r
+                   }\r
+               }\r
+               loop13: ; /* Jump out to here if this rule does not match */\r
+\r
+               MATCHS(lit_9); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleCOMMENTEx;\r
+               }\r
+\r
+\r
+               {\r
+                   LEXSTATE->channel=HIDDEN;\r
+               }\r
+\r
+           }\r
+           break;\r
+\r
+        }\r
+    }\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleCOMMENTEx; /* Prevent compiler warnings */\r
+    ruleCOMMENTEx: ;\r
+\r
+}\r
+// $ANTLR end COMMENT\r
+\r
+//   Comes from: 51:5: ( ( ' ' | '\\t' | '\\r' | '\\n' ) )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start WS\r
+ *\r
+ * Looks to match the characters the constitute the token WS\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mWS(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = WS;\r
+       \r
+    \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:51:5: ( ( ' ' | '\\t' | '\\r' | '\\n' ) )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:51:9: ( ' ' | '\\t' | '\\r' | '\\n' )\r
+    {\r
+        if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || LA(1) == '\r' || LA(1) == ' ' )\r
+        {\r
+            CONSUME();\r
+\r
+        }\r
+        else \r
+        {\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+            LRECOVER();    goto ruleWSEx;\r
+        }\r
+\r
+        {\r
+            LEXSTATE->channel=HIDDEN;\r
+        }\r
+\r
+    }\r
+\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleWSEx; /* Prevent compiler warnings */\r
+    ruleWSEx: ;\r
+\r
+}\r
+// $ANTLR end WS\r
+\r
+//   Comes from: 59:5: ( '\"' ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )* '\"' | '\"\"\"' (~ ( '\"' ) | '\"' ~ ( '\"' ) | '\"\"' ~ ( '\"' ) )* '\"\"\"' )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start STRING\r
+ *\r
+ * Looks to match the characters the constitute the token STRING\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mSTRING(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+    _type          = STRING;\r
+       \r
+    \r
+    {\r
+        //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:59:5: ( '\"' ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )* '\"' | '\"\"\"' (~ ( '\"' ) | '\"' ~ ( '\"' ) | '\"\"' ~ ( '\"' ) )* '\"\"\"' )\r
+        \r
+        ANTLR3_UINT32 alt17;\r
+\r
+        alt17=2;\r
+\r
+        switch ( LA(1) ) \r
+        {\r
+        case '"':\r
+               {\r
+\r
+                       {\r
+                           int LA17_1 = LA(2);\r
+                           if ( (LA17_1 == '"') ) \r
+                           {\r
+                               switch ( LA(3) ) \r
+                               {\r
+                               case '"':\r
+                                       {\r
+                                               alt17=2;\r
+                                       }\r
+                                   break;\r
+\r
+                               default:\r
+                                   alt17=1;}\r
+\r
+                           }\r
+                           else if ( (((LA17_1 >= 0x0000) && (LA17_1 <= '!')) || ((LA17_1 >= '#') && (LA17_1 <= 0xFFFF))) ) \r
+                           {\r
+                               alt17=1;\r
+                           }\r
+                           else \r
+                           {\r
+                           \r
+                               CONSTRUCTEX();\r
+                               EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                               EXCEPTION->message      = (void *)"";\r
+                               EXCEPTION->decisionNum  = 17;\r
+                               EXCEPTION->state        = 1;\r
+\r
+\r
+                               goto ruleSTRINGEx;\r
+                           }\r
+                       }\r
+               }\r
+            break;\r
+\r
+        default:\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+            EXCEPTION->message      = (void *)"";\r
+            EXCEPTION->decisionNum  = 17;\r
+            EXCEPTION->state        = 0;\r
+\r
+\r
+            goto ruleSTRINGEx;\r
+        }\r
+\r
+        switch (alt17) \r
+        {\r
+       case 1:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:59:8: '\"' ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )* '\"'\r
+           {\r
+               MATCHC('"'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleSTRINGEx;\r
+               }\r
+\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:59:12: ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )*\r
+\r
+               for (;;)\r
+               {\r
+                   int alt15=3;\r
+                   {\r
+                      /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                       */\r
+                       int LA15_0 = LA(1);\r
+                       if ( (LA15_0 == '\\') ) \r
+                       {\r
+                           alt15=1;\r
+                       }\r
+                       else if ( (((LA15_0 >= 0x0000) && (LA15_0 <= '!')) || ((LA15_0 >= '#') && (LA15_0 <= '[')) || ((LA15_0 >= ']') && (LA15_0 <= 0xFFFF))) ) \r
+                       {\r
+                           alt15=2;\r
+                       }\r
+\r
+                   }\r
+                   switch (alt15) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:59:14: ESC_SEQ\r
+                           {\r
+                               /* 59:14: ESC_SEQ */\r
+                               mESC_SEQ(ctx ); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleSTRINGEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+                       case 2:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:59:24: ~ ( '\\\\' | '\"' )\r
+                           {\r
+                               if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )\r
+                               {\r
+                                   CONSUME();\r
+\r
+                               }\r
+                               else \r
+                               {\r
+                                   CONSTRUCTEX();\r
+                                   EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                                   EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                                   LRECOVER();    goto ruleSTRINGEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                       default:\r
+                           goto loop15;        /* break out of the loop */\r
+                           break;\r
+                   }\r
+               }\r
+               loop15: ; /* Jump out to here if this rule does not match */\r
+\r
+               MATCHC('"'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleSTRINGEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 2:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:60:8: '\"\"\"' (~ ( '\"' ) | '\"' ~ ( '\"' ) | '\"\"' ~ ( '\"' ) )* '\"\"\"'\r
+           {\r
+               MATCHS(lit_10); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleSTRINGEx;\r
+               }\r
+\r
+\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:60:14: (~ ( '\"' ) | '\"' ~ ( '\"' ) | '\"\"' ~ ( '\"' ) )*\r
+\r
+               for (;;)\r
+               {\r
+                   int alt16=4;\r
+                   {\r
+                      /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                       */\r
+                       int LA16_0 = LA(1);\r
+                       if ( (LA16_0 == '"') ) \r
+                       {\r
+                           {\r
+                              /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                               */\r
+                               int LA16_1 = LA(2);\r
+                               if ( (LA16_1 == '"') ) \r
+                               {\r
+                                   {\r
+                                      /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)\r
+                                       */\r
+                                       int LA16_3 = LA(3);\r
+                                       if ( (((LA16_3 >= 0x0000) && (LA16_3 <= '!')) || ((LA16_3 >= '#') && (LA16_3 <= 0xFFFF))) ) \r
+                                       {\r
+                                           alt16=3;\r
+                                       }\r
+\r
+                                   }\r
+                               }\r
+                               else if ( (((LA16_1 >= 0x0000) && (LA16_1 <= '!')) || ((LA16_1 >= '#') && (LA16_1 <= 0xFFFF))) ) \r
+                               {\r
+                                   alt16=2;\r
+                               }\r
+\r
+                           }\r
+                       }\r
+                       else if ( (((LA16_0 >= 0x0000) && (LA16_0 <= '!')) || ((LA16_0 >= '#') && (LA16_0 <= 0xFFFF))) ) \r
+                       {\r
+                           alt16=1;\r
+                       }\r
+\r
+                   }\r
+                   switch (alt16) \r
+                   {\r
+                       case 1:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:60:16: ~ ( '\"' )\r
+                           {\r
+                               if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= 0xFFFF)) )\r
+                               {\r
+                                   CONSUME();\r
+\r
+                               }\r
+                               else \r
+                               {\r
+                                   CONSTRUCTEX();\r
+                                   EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                                   EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                                   LRECOVER();    goto ruleSTRINGEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+                       case 2:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:60:25: '\"' ~ ( '\"' )\r
+                           {\r
+                               MATCHC('"'); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleSTRINGEx;\r
+                               }\r
+\r
+                               if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= 0xFFFF)) )\r
+                               {\r
+                                   CONSUME();\r
+\r
+                               }\r
+                               else \r
+                               {\r
+                                   CONSTRUCTEX();\r
+                                   EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                                   EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                                   LRECOVER();    goto ruleSTRINGEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+                       case 3:\r
+                           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:60:38: '\"\"' ~ ( '\"' )\r
+                           {\r
+                               MATCHS(lit_11); \r
+                               if  (HASEXCEPTION())\r
+                               {\r
+                                   goto ruleSTRINGEx;\r
+                               }\r
+\r
+\r
+                               if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= 0xFFFF)) )\r
+                               {\r
+                                   CONSUME();\r
+\r
+                               }\r
+                               else \r
+                               {\r
+                                   CONSTRUCTEX();\r
+                                   EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                                   EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                                   LRECOVER();    goto ruleSTRINGEx;\r
+                               }\r
+\r
+\r
+                           }\r
+                           break;\r
+\r
+                       default:\r
+                           goto loop16;        /* break out of the loop */\r
+                           break;\r
+                   }\r
+               }\r
+               loop16: ; /* Jump out to here if this rule does not match */\r
+\r
+               MATCHS(lit_10); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleSTRINGEx;\r
+               }\r
+\r
+\r
+\r
+           }\r
+           break;\r
+\r
+        }\r
+    }\r
+       LEXSTATE->type = _type;\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleSTRINGEx; /* Prevent compiler warnings */\r
+    ruleSTRINGEx: ;\r
+\r
+}\r
+// $ANTLR end STRING\r
+\r
+//   Comes from: 64:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start EXPONENT\r
+ *\r
+ * Looks to match the characters the constitute the token EXPONENT\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mEXPONENT(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+        \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:64:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:64:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+\r
+    {\r
+        if ( LA(1) == 'E' || LA(1) == 'e' )\r
+        {\r
+            CONSUME();\r
+\r
+        }\r
+        else \r
+        {\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+            LRECOVER();    goto ruleEXPONENTEx;\r
+        }\r
+\r
+\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:64:22: ( '+' | '-' )?\r
+        {\r
+            int alt18=2;\r
+            switch ( LA(1) ) \r
+            {\r
+                case '+':\r
+                case '-':\r
+                       {\r
+                               alt18=1;\r
+                       }\r
+                    break;\r
+            }\r
+\r
+            switch (alt18) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:\r
+                   {\r
+                       if ( LA(1) == '+' || LA(1) == '-' )\r
+                       {\r
+                           CONSUME();\r
+\r
+                       }\r
+                       else \r
+                       {\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                           EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                           LRECOVER();    goto ruleEXPONENTEx;\r
+                       }\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:64:33: ( '0' .. '9' )+\r
+        {\r
+            int cnt19=0;\r
+\r
+            for (;;)\r
+            {\r
+                int alt19=2;\r
+               switch ( LA(1) ) \r
+               {\r
+               case '0':\r
+               case '1':\r
+               case '2':\r
+               case '3':\r
+               case '4':\r
+               case '5':\r
+               case '6':\r
+               case '7':\r
+               case '8':\r
+               case '9':\r
+                       {\r
+                               alt19=1;\r
+                       }\r
+                   break;\r
+\r
+               }\r
+\r
+               switch (alt19) \r
+               {\r
+                   case 1:\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:64:34: '0' .. '9'\r
+                       {\r
+                           MATCHRANGE('0', '9'); \r
+                           if  (HASEXCEPTION())\r
+                           {\r
+                               goto ruleEXPONENTEx;\r
+                           }\r
+\r
+\r
+                       }\r
+                       break;\r
+\r
+                   default:\r
+                   \r
+                       if ( cnt19 >= 1 )\r
+                       {\r
+                           goto loop19;\r
+                       }\r
+                       /* mismatchedSetEx()\r
+                        */\r
+                       CONSTRUCTEX();\r
+                       EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;\r
+                       EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;\r
+\r
+\r
+                       goto ruleEXPONENTEx;\r
+               }\r
+               cnt19++;\r
+            }\r
+            loop19: ;  /* Jump to here if this rule does not match */\r
+        }\r
+\r
+    }\r
+\r
+\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleEXPONENTEx; /* Prevent compiler warnings */\r
+    ruleEXPONENTEx: ;\r
+\r
+}\r
+// $ANTLR end EXPONENT\r
+\r
+//   Comes from: 67:11: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start HEX_DIGIT\r
+ *\r
+ * Looks to match the characters the constitute the token HEX_DIGIT\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mHEX_DIGIT(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+        \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:67:11: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:67:13: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )\r
+    {\r
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )\r
+        {\r
+            CONSUME();\r
+\r
+        }\r
+        else \r
+        {\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+            LRECOVER();    goto ruleHEX_DIGITEx;\r
+        }\r
+\r
+\r
+    }\r
+\r
+\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleHEX_DIGITEx; /* Prevent compiler warnings */\r
+    ruleHEX_DIGITEx: ;\r
+\r
+}\r
+// $ANTLR end HEX_DIGIT\r
+\r
+//   Comes from: 71:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start ESC_SEQ\r
+ *\r
+ * Looks to match the characters the constitute the token ESC_SEQ\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mESC_SEQ(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+        \r
+    {\r
+        //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:71:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )\r
+        \r
+        ANTLR3_UINT32 alt20;\r
+\r
+        alt20=3;\r
+\r
+        switch ( LA(1) ) \r
+        {\r
+        case '\\':\r
+               {\r
+                       switch ( LA(2) ) \r
+                       {\r
+                       case '"':\r
+                       case '\'':\r
+                       case '\\':\r
+                       case 'b':\r
+                       case 'f':\r
+                       case 'n':\r
+                       case 'r':\r
+                       case 't':\r
+                               {\r
+                                       alt20=1;\r
+                               }\r
+                           break;\r
+                       case 'u':\r
+                               {\r
+                                       alt20=2;\r
+                               }\r
+                           break;\r
+                       case '0':\r
+                       case '1':\r
+                       case '2':\r
+                       case '3':\r
+                       case '4':\r
+                       case '5':\r
+                       case '6':\r
+                       case '7':\r
+                               {\r
+                                       alt20=3;\r
+                               }\r
+                           break;\r
+\r
+                       default:\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                           EXCEPTION->message      = (void *)"";\r
+                           EXCEPTION->decisionNum  = 20;\r
+                           EXCEPTION->state        = 1;\r
+\r
+\r
+                           goto ruleESC_SEQEx;\r
+                       }\r
+\r
+               }\r
+            break;\r
+\r
+        default:\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+            EXCEPTION->message      = (void *)"";\r
+            EXCEPTION->decisionNum  = 20;\r
+            EXCEPTION->state        = 0;\r
+\r
+\r
+            goto ruleESC_SEQEx;\r
+        }\r
+\r
+        switch (alt20) \r
+        {\r
+       case 1:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:71:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )\r
+           {\r
+               MATCHC('\\'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleESC_SEQEx;\r
+               }\r
+\r
+               if ( LA(1) == '"' || LA(1) == '\'' || LA(1) == '\\' || LA(1) == 'b' || LA(1) == 'f' || LA(1) == 'n' || LA(1) == 'r' || LA(1) == 't' )\r
+               {\r
+                   CONSUME();\r
+\r
+               }\r
+               else \r
+               {\r
+                   CONSTRUCTEX();\r
+                   EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                   EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+\r
+                   LRECOVER();    goto ruleESC_SEQEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 2:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:72:9: UNICODE_ESC\r
+           {\r
+               /* 72:9: UNICODE_ESC */\r
+               mUNICODE_ESC(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleESC_SEQEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 3:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:73:9: OCTAL_ESC\r
+           {\r
+               /* 73:9: OCTAL_ESC */\r
+               mOCTAL_ESC(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleESC_SEQEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+\r
+        }\r
+    }\r
+\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleESC_SEQEx; /* Prevent compiler warnings */\r
+    ruleESC_SEQEx: ;\r
+\r
+}\r
+// $ANTLR end ESC_SEQ\r
+\r
+//   Comes from: 78:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start OCTAL_ESC\r
+ *\r
+ * Looks to match the characters the constitute the token OCTAL_ESC\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mOCTAL_ESC(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+        \r
+    {\r
+        //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )\r
+        \r
+        ANTLR3_UINT32 alt21;\r
+\r
+        alt21=3;\r
+\r
+        switch ( LA(1) ) \r
+        {\r
+        case '\\':\r
+               {\r
+                       switch ( LA(2) ) \r
+                       {\r
+                       case '0':\r
+                       case '1':\r
+                       case '2':\r
+                       case '3':\r
+                               {\r
+                                       switch ( LA(3) ) \r
+                                       {\r
+                                       case '0':\r
+                                       case '1':\r
+                                       case '2':\r
+                                       case '3':\r
+                                       case '4':\r
+                                       case '5':\r
+                                       case '6':\r
+                                       case '7':\r
+                                               {\r
+                                                       switch ( LA(4) ) \r
+                                                       {\r
+                                                       case '0':\r
+                                                       case '1':\r
+                                                       case '2':\r
+                                                       case '3':\r
+                                                       case '4':\r
+                                                       case '5':\r
+                                                       case '6':\r
+                                                       case '7':\r
+                                                               {\r
+                                                                       alt21=1;\r
+                                                               }\r
+                                                           break;\r
+\r
+                                                       default:\r
+                                                           alt21=2;}\r
+\r
+                                               }\r
+                                           break;\r
+\r
+                                       default:\r
+                                           alt21=3;}\r
+\r
+                               }\r
+                           break;\r
+                       case '4':\r
+                       case '5':\r
+                       case '6':\r
+                       case '7':\r
+                               {\r
+                                       switch ( LA(3) ) \r
+                                       {\r
+                                       case '0':\r
+                                       case '1':\r
+                                       case '2':\r
+                                       case '3':\r
+                                       case '4':\r
+                                       case '5':\r
+                                       case '6':\r
+                                       case '7':\r
+                                               {\r
+                                                       alt21=2;\r
+                                               }\r
+                                           break;\r
+\r
+                                       default:\r
+                                           alt21=3;}\r
+\r
+                               }\r
+                           break;\r
+\r
+                       default:\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                           EXCEPTION->message      = (void *)"";\r
+                           EXCEPTION->decisionNum  = 21;\r
+                           EXCEPTION->state        = 1;\r
+\r
+\r
+                           goto ruleOCTAL_ESCEx;\r
+                       }\r
+\r
+               }\r
+            break;\r
+\r
+        default:\r
+            CONSTRUCTEX();\r
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+            EXCEPTION->message      = (void *)"";\r
+            EXCEPTION->decisionNum  = 21;\r
+            EXCEPTION->state        = 0;\r
+\r
+\r
+            goto ruleOCTAL_ESCEx;\r
+        }\r
+\r
+        switch (alt21) \r
+        {\r
+       case 1:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )\r
+           {\r
+               MATCHC('\\'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleOCTAL_ESCEx;\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:14: ( '0' .. '3' )\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:15: '0' .. '3'\r
+               {\r
+                   MATCHRANGE('0', '3'); \r
+                   if  (HASEXCEPTION())\r
+                   {\r
+                       goto ruleOCTAL_ESCEx;\r
+                   }\r
+\r
+\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:25: ( '0' .. '7' )\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:26: '0' .. '7'\r
+               {\r
+                   MATCHRANGE('0', '7'); \r
+                   if  (HASEXCEPTION())\r
+                   {\r
+                       goto ruleOCTAL_ESCEx;\r
+                   }\r
+\r
+\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:36: ( '0' .. '7' )\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:78:37: '0' .. '7'\r
+               {\r
+                   MATCHRANGE('0', '7'); \r
+                   if  (HASEXCEPTION())\r
+                   {\r
+                       goto ruleOCTAL_ESCEx;\r
+                   }\r
+\r
+\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 2:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:79:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )\r
+           {\r
+               MATCHC('\\'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleOCTAL_ESCEx;\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:79:14: ( '0' .. '7' )\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:79:15: '0' .. '7'\r
+               {\r
+                   MATCHRANGE('0', '7'); \r
+                   if  (HASEXCEPTION())\r
+                   {\r
+                       goto ruleOCTAL_ESCEx;\r
+                   }\r
+\r
+\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:79:25: ( '0' .. '7' )\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:79:26: '0' .. '7'\r
+               {\r
+                   MATCHRANGE('0', '7'); \r
+                   if  (HASEXCEPTION())\r
+                   {\r
+                       goto ruleOCTAL_ESCEx;\r
+                   }\r
+\r
+\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 3:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:80:9: '\\\\' ( '0' .. '7' )\r
+           {\r
+               MATCHC('\\'); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleOCTAL_ESCEx;\r
+               }\r
+\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:80:14: ( '0' .. '7' )\r
+               // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:80:15: '0' .. '7'\r
+               {\r
+                   MATCHRANGE('0', '7'); \r
+                   if  (HASEXCEPTION())\r
+                   {\r
+                       goto ruleOCTAL_ESCEx;\r
+                   }\r
+\r
+\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+\r
+        }\r
+    }\r
+\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleOCTAL_ESCEx; /* Prevent compiler warnings */\r
+    ruleOCTAL_ESCEx: ;\r
+\r
+}\r
+// $ANTLR end OCTAL_ESC\r
+\r
+//   Comes from: 85:5: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT )\r
+/** \brief Lexer rule generated by ANTLR3\r
+ *\r
+ * $ANTLR start UNICODE_ESC\r
+ *\r
+ * Looks to match the characters the constitute the token UNICODE_ESC\r
+ * from the attached input stream.\r
+ *\r
+ *\r
+ * \remark\r
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.\r
+ */\r
+static ANTLR3_INLINE\r
+void mUNICODE_ESC(pSimanticsDataLexer ctx)\r
+{\r
+       ANTLR3_UINT32   _type;\r
+\r
+        \r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:85:5: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT )\r
+    // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:85:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT\r
+    {\r
+        MATCHC('\\'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleUNICODE_ESCEx;\r
+        }\r
+\r
+        MATCHC('u'); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleUNICODE_ESCEx;\r
+        }\r
+\r
+        /* 85:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT */\r
+        mHEX_DIGIT(ctx ); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleUNICODE_ESCEx;\r
+        }\r
+\r
+        /* 85:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT */\r
+        mHEX_DIGIT(ctx ); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleUNICODE_ESCEx;\r
+        }\r
+\r
+        /* 85:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT */\r
+        mHEX_DIGIT(ctx ); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleUNICODE_ESCEx;\r
+        }\r
+\r
+        /* 85:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT */\r
+        mHEX_DIGIT(ctx ); \r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleUNICODE_ESCEx;\r
+        }\r
+\r
+\r
+    }\r
+\r
+\r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleUNICODE_ESCEx; /* Prevent compiler warnings */\r
+    ruleUNICODE_ESCEx: ;\r
+\r
+}\r
+// $ANTLR end UNICODE_ESC\r
+\r
+/** This is the entry point in to the lexer from an object that\r
+ *  wants to generate the next token, such as a pCOMMON_TOKEN_STREAM\r
+ */\r
+static void \r
+mTokens(pSimanticsDataLexer ctx)\r
+{\r
+    {\r
+        //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:8: ( T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | ID | INT | FLOAT | COMMENT | WS | STRING )\r
+        \r
+        ANTLR3_UINT32 alt22;\r
+\r
+        alt22=22;\r
+\r
+        alt22 = cdfa22.predict(ctx, RECOGNIZER, ISTREAM, &cdfa22);\r
+        if  (HASEXCEPTION())\r
+        {\r
+            goto ruleTokensEx;\r
+        }\r
+\r
+        switch (alt22) \r
+        {\r
+       case 1:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:10: T__34\r
+           {\r
+               /* 1:10: T__34 */\r
+               mT__34(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 2:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:16: T__35\r
+           {\r
+               /* 1:16: T__35 */\r
+               mT__35(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 3:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:22: T__36\r
+           {\r
+               /* 1:22: T__36 */\r
+               mT__36(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 4:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:28: T__37\r
+           {\r
+               /* 1:28: T__37 */\r
+               mT__37(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 5:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:34: T__38\r
+           {\r
+               /* 1:34: T__38 */\r
+               mT__38(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 6:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:40: T__39\r
+           {\r
+               /* 1:40: T__39 */\r
+               mT__39(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 7:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:46: T__40\r
+           {\r
+               /* 1:46: T__40 */\r
+               mT__40(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 8:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:52: T__41\r
+           {\r
+               /* 1:52: T__41 */\r
+               mT__41(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 9:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:58: T__42\r
+           {\r
+               /* 1:58: T__42 */\r
+               mT__42(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 10:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:64: T__43\r
+           {\r
+               /* 1:64: T__43 */\r
+               mT__43(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 11:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:70: T__44\r
+           {\r
+               /* 1:70: T__44 */\r
+               mT__44(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 12:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:76: T__45\r
+           {\r
+               /* 1:76: T__45 */\r
+               mT__45(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 13:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:82: T__46\r
+           {\r
+               /* 1:82: T__46 */\r
+               mT__46(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 14:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:88: T__47\r
+           {\r
+               /* 1:88: T__47 */\r
+               mT__47(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 15:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:94: T__48\r
+           {\r
+               /* 1:94: T__48 */\r
+               mT__48(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 16:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:100: T__49\r
+           {\r
+               /* 1:100: T__49 */\r
+               mT__49(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 17:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:106: ID\r
+           {\r
+               /* 1:106: ID */\r
+               mID(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 18:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:109: INT\r
+           {\r
+               /* 1:109: INT */\r
+               mINT(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 19:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:113: FLOAT\r
+           {\r
+               /* 1:113: FLOAT */\r
+               mFLOAT(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 20:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:119: COMMENT\r
+           {\r
+               /* 1:119: COMMENT */\r
+               mCOMMENT(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 21:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:127: WS\r
+           {\r
+               /* 1:127: WS */\r
+               mWS(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+       case 22:\r
+           // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:1:130: STRING\r
+           {\r
+               /* 1:130: STRING */\r
+               mSTRING(ctx ); \r
+               if  (HASEXCEPTION())\r
+               {\r
+                   goto ruleTokensEx;\r
+               }\r
+\r
+\r
+           }\r
+           break;\r
+\r
+        }\r
+    }\r
+\r
+    \r
+    goto ruleTokensEx; /* Prevent compiler warnings */\r
+ruleTokensEx: ;\r
+}\r
+\r
+/* =========================================================================\r
+ * Lexer matching rules end.\r
+ * =========================================================================\r
+ */\r
+/* End of Lexer code\r
+ * ================================================\r
+ * ================================================\r
+ */ \r
+\r
+\r
+/* End of code\r
+ * =============================================================================\r
+ */\r