]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/SimanticsDataParser.c
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / SimanticsDataParser.c
diff --git a/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/SimanticsDataParser.c b/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/SimanticsDataParser.c
new file mode 100644 (file)
index 0000000..80cc2ee
--- /dev/null
@@ -0,0 +1,6338 @@
+/** \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:27\r
+ *     -                for the parser : SimanticsDataParserParser *\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    "SimanticsDataParser.h"\r
+/* ----------------------------------------- */\r
+\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)   pSimanticsDataParser_##scope##_SCOPE\r
+#define SCOPE_STACK(scope)  pSimanticsDataParser_##scope##Stack\r
+#define        SCOPE_TOP(scope)    ctx->pSimanticsDataParser_##scope##Top\r
+#define        SCOPE_SIZE(scope)               ctx->pSimanticsDataParser_##scope##Stack_limit\r
+#define SCOPE_INSTANCE(scope, i)       (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))\r
+\r
+/* Macros for accessing things in the parser\r
+ */\r
\r
+#undef     PARSER                  \r
+#undef     RECOGNIZER              \r
+#undef     HAVEPARSEDRULE\r
+#undef         MEMOIZE\r
+#undef     INPUT\r
+#undef     STRSTREAM\r
+#undef     HASEXCEPTION\r
+#undef     EXCEPTION\r
+#undef     MATCHT\r
+#undef     MATCHANYT\r
+#undef     FOLLOWSTACK\r
+#undef     FOLLOWPUSH\r
+#undef     FOLLOWPOP\r
+#undef     PRECOVER\r
+#undef     PREPORTERROR\r
+#undef     LA\r
+#undef     LT\r
+#undef     CONSTRUCTEX\r
+#undef     CONSUME\r
+#undef     MARK\r
+#undef     REWIND\r
+#undef     REWINDLAST\r
+#undef     PERRORRECOVERY\r
+#undef     HASFAILED\r
+#undef     FAILEDFLAG\r
+#undef     RECOVERFROMMISMATCHEDSET\r
+#undef     RECOVERFROMMISMATCHEDELEMENT\r
+#undef         INDEX\r
+#undef      ADAPTOR\r
+#undef         SEEK\r
+#undef     RULEMEMO                \r
+#undef         DBG\r
+\r
+#define            PARSER                                                      ctx->pParser  \r
+#define            RECOGNIZER                                          PARSER->rec\r
+#define                PSRSTATE                                                RECOGNIZER->state\r
+#define            HAVEPARSEDRULE(r)                           RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)\r
+#define                MEMOIZE(ri,si)                                  RECOGNIZER->memoize(RECOGNIZER, ri, si)\r
+#define            INPUT                                                       PARSER->tstream\r
+#define            STRSTREAM                                           INPUT\r
+#define                ISTREAM                                                 INPUT->istream\r
+#define                INDEX()                                                 ISTREAM->index(INPUT->istream)\r
+#define            HASEXCEPTION()                                      (PSRSTATE->error == ANTLR3_TRUE)\r
+#define            EXCEPTION                                           PSRSTATE->exception\r
+#define            MATCHT(t, fs)                                       RECOGNIZER->match(RECOGNIZER, t, fs)\r
+#define            MATCHANYT()                                         RECOGNIZER->matchAny(RECOGNIZER)\r
+#define            FOLLOWSTACK                                     PSRSTATE->following\r
+#define            FOLLOWPUSH(x)                                       FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL)\r
+#define            FOLLOWPOP()                                         FOLLOWSTACK->pop(FOLLOWSTACK)\r
+#define            PRECOVER()                                          RECOGNIZER->recover(RECOGNIZER)\r
+#define            PREPORTERROR()                                      RECOGNIZER->reportError(RECOGNIZER)\r
+#define            LA(n)                                                       INPUT->istream->_LA(ISTREAM, n)\r
+#define            LT(n)                                                       INPUT->_LT(INPUT, n)\r
+#define            CONSTRUCTEX()                                       RECOGNIZER->exConstruct(RECOGNIZER)\r
+#define            CONSUME()                                           ISTREAM->consume(ISTREAM)\r
+#define            MARK()                                                      ISTREAM->mark(ISTREAM)\r
+#define            REWIND(m)                                           ISTREAM->rewind(ISTREAM, m)\r
+#define            REWINDLAST()                                        ISTREAM->rewindLast(ISTREAM)\r
+#define                SEEK(n)                                                 ISTREAM->seek(ISTREAM, n)\r
+#define            PERRORRECOVERY                                      PSRSTATE->errorRecovery\r
+#define            FAILEDFLAG                                          PSRSTATE->failed\r
+#define            HASFAILED()                                         (FAILEDFLAG == ANTLR3_TRUE)\r
+#define            BACKTRACKING                                        PSRSTATE->backtracking\r
+#define            RECOVERFROMMISMATCHEDSET(s)         RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s)\r
+#define            RECOVERFROMMISMATCHEDELEMENT(e)     RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s)\r
+#define     ADAPTOR                         ctx->adaptor\r
+#define                RULEMEMO                                                PSRSTATE->ruleMemo\r
+#define                DBG                                                             RECOGNIZER->debugger\r
+\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
+\r
+/** \brief Table of all token names in symbolic order, mainly used for\r
+ *         error reporting.\r
+ */\r
+pANTLR3_UINT8   SimanticsDataParserTokenNames[46+4]\r
+     = {\r
+        (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */\r
+        (pANTLR3_UINT8) "<EOR>",\r
+        (pANTLR3_UINT8) "<DOWN>", \r
+        (pANTLR3_UINT8) "<UP>", \r
+        (pANTLR3_UINT8) "TYPE_DEFINITIONS",\r
+        (pANTLR3_UINT8) "TYPE_DEFINITION",\r
+        (pANTLR3_UINT8) "UNION_TYPE",\r
+        (pANTLR3_UINT8) "RECORD_TYPE",\r
+        (pANTLR3_UINT8) "TUPLE_TYPE",\r
+        (pANTLR3_UINT8) "ARRAY_TYPE",\r
+        (pANTLR3_UINT8) "TYPE_REFERENCE",\r
+        (pANTLR3_UINT8) "TYPE_ANNOTATION",\r
+        (pANTLR3_UINT8) "TYPE_COMPONENT",\r
+        (pANTLR3_UINT8) "VALUE_DEFINITIONS",\r
+        (pANTLR3_UINT8) "VALUE_DEFINITION",\r
+        (pANTLR3_UINT8) "NO_VALUE",\r
+        (pANTLR3_UINT8) "VARIANT",\r
+        (pANTLR3_UINT8) "ARRAY",\r
+        (pANTLR3_UINT8) "TUPLE",\r
+        (pANTLR3_UINT8) "TAGGED_VALUE",\r
+        (pANTLR3_UINT8) "RECORD",\r
+        (pANTLR3_UINT8) "MAP",\r
+        (pANTLR3_UINT8) "ASSIGNMENT",\r
+        (pANTLR3_UINT8) "ID",\r
+        (pANTLR3_UINT8) "INT",\r
+        (pANTLR3_UINT8) "EXPONENT",\r
+        (pANTLR3_UINT8) "FLOAT",\r
+        (pANTLR3_UINT8) "COMMENT",\r
+        (pANTLR3_UINT8) "WS",\r
+        (pANTLR3_UINT8) "ESC_SEQ",\r
+        (pANTLR3_UINT8) "STRING",\r
+        (pANTLR3_UINT8) "HEX_DIGIT",\r
+        (pANTLR3_UINT8) "UNICODE_ESC",\r
+        (pANTLR3_UINT8) "OCTAL_ESC",\r
+        (pANTLR3_UINT8) "'type'",\r
+        (pANTLR3_UINT8) "'='",\r
+        (pANTLR3_UINT8) "'|'",\r
+        (pANTLR3_UINT8) "'['",\r
+        (pANTLR3_UINT8) "']'",\r
+        (pANTLR3_UINT8) "'..'",\r
+        (pANTLR3_UINT8) "'('",\r
+        (pANTLR3_UINT8) "','",\r
+        (pANTLR3_UINT8) "')'",\r
+        (pANTLR3_UINT8) "'{'",\r
+        (pANTLR3_UINT8) "'}'",\r
+        (pANTLR3_UINT8) "':'",\r
+        (pANTLR3_UINT8) "'true'",\r
+        (pANTLR3_UINT8) "'false'",\r
+        (pANTLR3_UINT8) "'null'",\r
+        (pANTLR3_UINT8) "'map'"\r
+       };\r
+\r
+        \r
+\r
+// Forward declare the locally static matching functions we have generated.\r
+//\r
+static SimanticsDataParser_typeDefinitions_return      typeDefinitions    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_typeDefinition_return       typeDefinition    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_unionType_return    unionType    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_unionComponent_return       unionComponent    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_type_return type    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_arrayLength_return  arrayLength    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_basicType_return    basicType    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_tupleType_return    tupleType    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_recordType_return   recordType    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_component_return    component    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_typeReference_return        typeReference    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_parameter_return    parameter    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_parameterValue_return       parameterValue    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_range_return        range    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_number_return       number    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_string_return       string    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_boolean_return      boolean    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_valueDefinitions_return     valueDefinitions    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_valueDefinition_return      valueDefinition    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_value_return        value    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_basicValue_return   basicValue    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_array_return        array    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_tuple_return        tuple    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_taggedValue_return  taggedValue    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_record_return       record    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_recordAssignment_return     recordAssignment    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_map_return  map    (pSimanticsDataParser ctx);\r
+static SimanticsDataParser_mapAssignment_return        mapAssignment    (pSimanticsDataParser ctx);\r
+static void    SimanticsDataParserFree(pSimanticsDataParser ctx);\r
+/* For use in tree output where we are accumulating rule labels via label += ruleRef\r
+ * we need a function that knows how to free a return scope when the list is destroyed. \r
+ * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro.\r
+ */\r
+static void ANTLR3_CDECL freeScope(void * scope)\r
+{\r
+    ANTLR3_FREE(scope);\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
+/** \brief Create a new SimanticsDataParser parser and return a context for it.\r
+ *\r
+ * \param[in] instream Pointer to an input stream interface.\r
+ *\r
+ * \return Pointer to new parser context upon success.\r
+ */\r
+ANTLR3_API pSimanticsDataParser\r
+SimanticsDataParserNew   (pANTLR3_COMMON_TOKEN_STREAM instream)\r
+{\r
+       // See if we can create a new parser with the standard constructor\r
+       //\r
+       return SimanticsDataParserNewSSD(instream, NULL);\r
+}\r
+\r
+/** \brief Create a new SimanticsDataParser parser and return a context for it.\r
+ *\r
+ * \param[in] instream Pointer to an input stream interface.\r
+ *\r
+ * \return Pointer to new parser context upon success.\r
+ */\r
+ANTLR3_API pSimanticsDataParser\r
+SimanticsDataParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)\r
+{\r
+    pSimanticsDataParser ctx;      /* Context structure we will build and return   */\r
+    \r
+    ctx        = (pSimanticsDataParser) ANTLR3_CALLOC(1, sizeof(SimanticsDataParser));\r
+    \r
+    if (ctx == NULL)\r
+    {\r
+               // Failed to allocate memory for parser context\r
+               //\r
+        return  NULL;\r
+    }\r
+    \r
+    /* -------------------------------------------------------------------\r
+     * Memory for basic structure is allocated, now to fill in\r
+     * the base ANTLR3 structures. We initialize the function pointers\r
+     * for the standard ANTLR3 parser 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 SimanticsDataParser.h here, in order that you can get a sense\r
+     * of what goes where.\r
+     */\r
+\r
+    /* Create a base parser/recognizer, using the supplied token stream\r
+     */\r
+    ctx->pParser           = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state);\r
+    /* Install the implementation of our SimanticsDataParser interface\r
+     */\r
+    ctx->typeDefinitions       = typeDefinitions;\r
+    ctx->typeDefinition        = typeDefinition;\r
+    ctx->unionType     = unionType;\r
+    ctx->unionComponent        = unionComponent;\r
+    ctx->type  = type;\r
+    ctx->arrayLength   = arrayLength;\r
+    ctx->basicType     = basicType;\r
+    ctx->tupleType     = tupleType;\r
+    ctx->recordType    = recordType;\r
+    ctx->component     = component;\r
+    ctx->typeReference = typeReference;\r
+    ctx->parameter     = parameter;\r
+    ctx->parameterValue        = parameterValue;\r
+    ctx->range = range;\r
+    ctx->number        = number;\r
+    ctx->string        = string;\r
+    ctx->boolean       = boolean;\r
+    ctx->valueDefinitions      = valueDefinitions;\r
+    ctx->valueDefinition       = valueDefinition;\r
+    ctx->value = value;\r
+    ctx->basicValue    = basicValue;\r
+    ctx->array = array;\r
+    ctx->tuple = tuple;\r
+    ctx->taggedValue   = taggedValue;\r
+    ctx->record        = record;\r
+    ctx->recordAssignment      = recordAssignment;\r
+    ctx->map   = map;\r
+    ctx->mapAssignment = mapAssignment;\r
+    ctx->free                  = SimanticsDataParserFree;\r
+    ctx->getGrammarFileName    = getGrammarFileName;\r
+    \r
+    /* Install the scope pushing methods.\r
+     */\r
+    ADAPTOR    = ANTLR3_TREE_ADAPTORNew(instream->tstream->tokenSource->strFactory);\r
+    ctx->vectors       = antlr3VectorFactoryNew(0);\r
+    \r
+\r
+       \r
+    /* Install the token table\r
+     */\r
+    PSRSTATE->tokenNames   = SimanticsDataParserTokenNames;\r
+    \r
+    \r
+    /* Return the newly built parser to the caller\r
+     */\r
+    return  ctx;\r
+}\r
+\r
+/** Free the parser resources\r
+ */\r
+ static void\r
+ SimanticsDataParserFree(pSimanticsDataParser ctx)\r
+ {\r
+    /* Free any scope memory\r
+     */\r
+    \r
+    ctx->vectors->close(ctx->vectors);\r
+    /* We created the adaptor so we must free it\r
+     */\r
+    ADAPTOR->free(ADAPTOR);\r
+       // Free this parser\r
+       //\r
+    ctx->pParser->free(ctx->pParser);\r
+    ANTLR3_FREE(ctx);\r
+\r
+    /* Everything is released, so we can return\r
+     */\r
+    return;\r
+ }\r
\r
+/** Return token names used by this parser\r
+ *\r
+ * The returned pointer is used as an index into the token names table (using the token \r
+ * number as the index).\r
+ * \r
+ * \return Pointer to first char * in the table.\r
+ */\r
+static pANTLR3_UINT8    *getTokenNames() \r
+{\r
+        return SimanticsDataParserTokenNames; \r
+}\r
+\r
+    \r
+/* Declare the bitsets\r
+ */\r
+\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeDefinition_in_typeDefinitions768  */\r
+static ANTLR3_BITWORD FOLLOW_typeDefinition_in_typeDefinitions768_bits[]       = { ANTLR3_UINT64_LIT(0x0000000400000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_typeDefinition_in_typeDefinitions768 = { FOLLOW_typeDefinition_in_typeDefinitions768_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_34_in_typeDefinition791  */\r
+static ANTLR3_BITWORD FOLLOW_34_in_typeDefinition791_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_34_in_typeDefinition791      = { FOLLOW_34_in_typeDefinition791_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_typeDefinition793  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_typeDefinition793_bits[]    = { ANTLR3_UINT64_LIT(0x0000000800000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_typeDefinition793      = { FOLLOW_ID_in_typeDefinition793_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_35_in_typeDefinition795  */\r
+static ANTLR3_BITWORD FOLLOW_35_in_typeDefinition795_bits[]    = { ANTLR3_UINT64_LIT(0x0000091000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_35_in_typeDefinition795      = { FOLLOW_35_in_typeDefinition795_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionType_in_typeDefinition797  */\r
+static ANTLR3_BITWORD FOLLOW_unionType_in_typeDefinition797_bits[]     = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionType_in_typeDefinition797       = { FOLLOW_unionType_in_typeDefinition797_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_unionType829  */\r
+static ANTLR3_BITWORD FOLLOW_type_in_unionType829_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_unionType829 = { FOLLOW_type_in_unionType829_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_36_in_unionType838  */\r
+static ANTLR3_BITWORD FOLLOW_36_in_unionType838_bits[] = { ANTLR3_UINT64_LIT(0x0000000000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_36_in_unionType838   = { FOLLOW_36_in_unionType838_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionComponent_in_unionType840  */\r
+static ANTLR3_BITWORD FOLLOW_unionComponent_in_unionType840_bits[]     = { ANTLR3_UINT64_LIT(0x0000001000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionComponent_in_unionType840       = { FOLLOW_unionComponent_in_unionType840_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_unionComponent871  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_unionComponent871_bits[]    = { ANTLR3_UINT64_LIT(0x0000090000800002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_unionComponent871      = { FOLLOW_ID_in_unionComponent871_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_unionComponent873  */\r
+static ANTLR3_BITWORD FOLLOW_type_in_unionComponent873_bits[]  = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_unionComponent873    = { FOLLOW_type_in_unionComponent873_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_basicType_in_type900  */\r
+static ANTLR3_BITWORD FOLLOW_basicType_in_type900_bits[]       = { ANTLR3_UINT64_LIT(0x0000002000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_basicType_in_type900 = { FOLLOW_basicType_in_type900_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_37_in_type914  */\r
+static ANTLR3_BITWORD FOLLOW_37_in_type914_bits[]      = { ANTLR3_UINT64_LIT(0x000000C001000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_37_in_type914        = { FOLLOW_37_in_type914_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayLength_in_type916  */\r
+static ANTLR3_BITWORD FOLLOW_arrayLength_in_type916_bits[]     = { ANTLR3_UINT64_LIT(0x0000004000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_arrayLength_in_type916       = { FOLLOW_arrayLength_in_type916_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_38_in_type919  */\r
+static ANTLR3_BITWORD FOLLOW_38_in_type919_bits[]      = { ANTLR3_UINT64_LIT(0x0000002000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_38_in_type919        = { FOLLOW_38_in_type919_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_arrayLength947  */\r
+static ANTLR3_BITWORD FOLLOW_INT_in_arrayLength947_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_INT_in_arrayLength947        = { FOLLOW_INT_in_arrayLength947_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_arrayLength955  */\r
+static ANTLR3_BITWORD FOLLOW_INT_in_arrayLength955_bits[]      = { ANTLR3_UINT64_LIT(0x0000008000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_INT_in_arrayLength955        = { FOLLOW_INT_in_arrayLength955_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_39_in_arrayLength957  */\r
+static ANTLR3_BITWORD FOLLOW_39_in_arrayLength957_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_39_in_arrayLength957 = { FOLLOW_39_in_arrayLength957_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_39_in_arrayLength965  */\r
+static ANTLR3_BITWORD FOLLOW_39_in_arrayLength965_bits[]       = { ANTLR3_UINT64_LIT(0x0000000001000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_39_in_arrayLength965 = { FOLLOW_39_in_arrayLength965_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_arrayLength967  */\r
+static ANTLR3_BITWORD FOLLOW_INT_in_arrayLength967_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_INT_in_arrayLength967        = { FOLLOW_INT_in_arrayLength967_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_arrayLength976  */\r
+static ANTLR3_BITWORD FOLLOW_INT_in_arrayLength976_bits[]      = { ANTLR3_UINT64_LIT(0x0000008000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_INT_in_arrayLength976        = { FOLLOW_INT_in_arrayLength976_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_39_in_arrayLength978  */\r
+static ANTLR3_BITWORD FOLLOW_39_in_arrayLength978_bits[]       = { ANTLR3_UINT64_LIT(0x0000000001000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_39_in_arrayLength978 = { FOLLOW_39_in_arrayLength978_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_arrayLength980  */\r
+static ANTLR3_BITWORD FOLLOW_INT_in_arrayLength980_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_INT_in_arrayLength980        = { FOLLOW_INT_in_arrayLength980_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleType_in_basicType998  */\r
+static ANTLR3_BITWORD FOLLOW_tupleType_in_basicType998_bits[]  = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_tupleType_in_basicType998    = { FOLLOW_tupleType_in_basicType998_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordType_in_basicType1006  */\r
+static ANTLR3_BITWORD FOLLOW_recordType_in_basicType1006_bits[]        = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_recordType_in_basicType1006  = { FOLLOW_recordType_in_basicType1006_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeReference_in_basicType1014  */\r
+static ANTLR3_BITWORD FOLLOW_typeReference_in_basicType1014_bits[]     = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_typeReference_in_basicType1014       = { FOLLOW_typeReference_in_basicType1014_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_40_in_tupleType1036  */\r
+static ANTLR3_BITWORD FOLLOW_40_in_tupleType1036_bits[]        = { ANTLR3_UINT64_LIT(0x00000D1000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_40_in_tupleType1036  = { FOLLOW_40_in_tupleType1036_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionType_in_tupleType1039  */\r
+static ANTLR3_BITWORD FOLLOW_unionType_in_tupleType1039_bits[] = { ANTLR3_UINT64_LIT(0x0000060000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionType_in_tupleType1039   = { FOLLOW_unionType_in_tupleType1039_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_tupleType1042  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_tupleType1042_bits[]        = { ANTLR3_UINT64_LIT(0x0000091000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_tupleType1042  = { FOLLOW_41_in_tupleType1042_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionType_in_tupleType1044  */\r
+static ANTLR3_BITWORD FOLLOW_unionType_in_tupleType1044_bits[] = { ANTLR3_UINT64_LIT(0x0000060000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionType_in_tupleType1044   = { FOLLOW_unionType_in_tupleType1044_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_42_in_tupleType1050  */\r
+static ANTLR3_BITWORD FOLLOW_42_in_tupleType1050_bits[]        = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_42_in_tupleType1050  = { FOLLOW_42_in_tupleType1050_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_43_in_recordType1083  */\r
+static ANTLR3_BITWORD FOLLOW_43_in_recordType1083_bits[]       = { ANTLR3_UINT64_LIT(0x0000100000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_43_in_recordType1083 = { FOLLOW_43_in_recordType1083_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_component_in_recordType1086  */\r
+static ANTLR3_BITWORD FOLLOW_component_in_recordType1086_bits[]        = { ANTLR3_UINT64_LIT(0x0000120000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_component_in_recordType1086  = { FOLLOW_component_in_recordType1086_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_recordType1089  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_recordType1089_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_recordType1089 = { FOLLOW_41_in_recordType1089_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_component_in_recordType1091  */\r
+static ANTLR3_BITWORD FOLLOW_component_in_recordType1091_bits[]        = { ANTLR3_UINT64_LIT(0x0000120000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_component_in_recordType1091  = { FOLLOW_component_in_recordType1091_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_44_in_recordType1097  */\r
+static ANTLR3_BITWORD FOLLOW_44_in_recordType1097_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_44_in_recordType1097 = { FOLLOW_44_in_recordType1097_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_component1129  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_component1129_bits[]        = { ANTLR3_UINT64_LIT(0x0000200000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_component1129  = { FOLLOW_ID_in_component1129_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_45_in_component1131  */\r
+static ANTLR3_BITWORD FOLLOW_45_in_component1131_bits[]        = { ANTLR3_UINT64_LIT(0x0000091000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_45_in_component1131  = { FOLLOW_45_in_component1131_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionType_in_component1133  */\r
+static ANTLR3_BITWORD FOLLOW_unionType_in_component1133_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionType_in_component1133   = { FOLLOW_unionType_in_component1133_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_typeReference1167  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_typeReference1167_bits[]    = { ANTLR3_UINT64_LIT(0x0000010000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_typeReference1167      = { FOLLOW_ID_in_typeReference1167_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_40_in_typeReference1170  */\r
+static ANTLR3_BITWORD FOLLOW_40_in_typeReference1170_bits[]    = { ANTLR3_UINT64_LIT(0x0000091000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_40_in_typeReference1170      = { FOLLOW_40_in_typeReference1170_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameter_in_typeReference1172  */\r
+static ANTLR3_BITWORD FOLLOW_parameter_in_typeReference1172_bits[]     = { ANTLR3_UINT64_LIT(0x0000060000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_parameter_in_typeReference1172       = { FOLLOW_parameter_in_typeReference1172_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_typeReference1175  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_typeReference1175_bits[]    = { ANTLR3_UINT64_LIT(0x0000091000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_typeReference1175      = { FOLLOW_41_in_typeReference1175_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameter_in_typeReference1177  */\r
+static ANTLR3_BITWORD FOLLOW_parameter_in_typeReference1177_bits[]     = { ANTLR3_UINT64_LIT(0x0000060000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_parameter_in_typeReference1177       = { FOLLOW_parameter_in_typeReference1177_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_42_in_typeReference1181  */\r
+static ANTLR3_BITWORD FOLLOW_42_in_typeReference1181_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_42_in_typeReference1181      = { FOLLOW_42_in_typeReference1181_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_parameter1217  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_parameter1217_bits[]        = { ANTLR3_UINT64_LIT(0x0000000800000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_parameter1217  = { FOLLOW_ID_in_parameter1217_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_35_in_parameter1219  */\r
+static ANTLR3_BITWORD FOLLOW_35_in_parameter1219_bits[]        = { ANTLR3_UINT64_LIT(0x0000C12045000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_35_in_parameter1219  = { FOLLOW_35_in_parameter1219_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameterValue_in_parameter1221  */\r
+static ANTLR3_BITWORD FOLLOW_parameterValue_in_parameter1221_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_parameterValue_in_parameter1221      = { FOLLOW_parameterValue_in_parameter1221_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionType_in_parameter1239  */\r
+static ANTLR3_BITWORD FOLLOW_unionType_in_parameter1239_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionType_in_parameter1239   = { FOLLOW_unionType_in_parameter1239_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_string_in_parameterValue1258  */\r
+static ANTLR3_BITWORD FOLLOW_string_in_parameterValue1258_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_string_in_parameterValue1258 = { FOLLOW_string_in_parameterValue1258_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boolean_in_parameterValue1266  */\r
+static ANTLR3_BITWORD FOLLOW_boolean_in_parameterValue1266_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_boolean_in_parameterValue1266        = { FOLLOW_boolean_in_parameterValue1266_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_parameterValue1274  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_parameterValue1274_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_parameterValue1274 = { FOLLOW_number_in_parameterValue1274_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_parameterValue1282  */\r
+static ANTLR3_BITWORD FOLLOW_set_in_parameterValue1282_bits[]  = { ANTLR3_UINT64_LIT(0x0000008005000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_parameterValue1282    = { FOLLOW_set_in_parameterValue1282_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_range_in_parameterValue1290  */\r
+static ANTLR3_BITWORD FOLLOW_range_in_parameterValue1290_bits[]        = { ANTLR3_UINT64_LIT(0x0000044000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_range_in_parameterValue1290  = { FOLLOW_range_in_parameterValue1290_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_parameterValue1292  */\r
+static ANTLR3_BITWORD FOLLOW_set_in_parameterValue1292_bits[]  = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_parameterValue1292    = { FOLLOW_set_in_parameterValue1292_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_range1319  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_range1319_bits[]        = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_range1319  = { FOLLOW_number_in_range1319_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_range1327  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_range1327_bits[]        = { ANTLR3_UINT64_LIT(0x0000008000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_range1327  = { FOLLOW_number_in_range1327_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_39_in_range1329  */\r
+static ANTLR3_BITWORD FOLLOW_39_in_range1329_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_39_in_range1329      = { FOLLOW_39_in_range1329_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_39_in_range1337  */\r
+static ANTLR3_BITWORD FOLLOW_39_in_range1337_bits[]    = { ANTLR3_UINT64_LIT(0x0000000005000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_39_in_range1337      = { FOLLOW_39_in_range1337_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_range1339  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_range1339_bits[]        = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_range1339  = { FOLLOW_number_in_range1339_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_range1348  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_range1348_bits[]        = { ANTLR3_UINT64_LIT(0x0000008000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_range1348  = { FOLLOW_number_in_range1348_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_39_in_range1350  */\r
+static ANTLR3_BITWORD FOLLOW_39_in_range1350_bits[]    = { ANTLR3_UINT64_LIT(0x0000000005000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_39_in_range1350      = { FOLLOW_39_in_range1350_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_range1352  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_range1352_bits[]        = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_range1352  = { FOLLOW_number_in_range1352_bits, 1  };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_number0  */\r
+static ANTLR3_BITWORD FOLLOW_set_in_number0_bits[]     = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_number0       = { FOLLOW_set_in_number0_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_in_string1402  */\r
+static ANTLR3_BITWORD FOLLOW_STRING_in_string1402_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_in_string1402 = { FOLLOW_STRING_in_string1402_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_boolean0  */\r
+static ANTLR3_BITWORD FOLLOW_set_in_boolean0_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_boolean0      = { FOLLOW_set_in_boolean0_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_valueDefinition_in_valueDefinitions1447  */\r
+static ANTLR3_BITWORD FOLLOW_valueDefinition_in_valueDefinitions1447_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000800002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_valueDefinition_in_valueDefinitions1447      = { FOLLOW_valueDefinition_in_valueDefinitions1447_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_valueDefinition1470  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_valueDefinition1470_bits[]  = { ANTLR3_UINT64_LIT(0x0000200000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_valueDefinition1470    = { FOLLOW_ID_in_valueDefinition1470_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_45_in_valueDefinition1472  */\r
+static ANTLR3_BITWORD FOLLOW_45_in_valueDefinition1472_bits[]  = { ANTLR3_UINT64_LIT(0x0000091000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_45_in_valueDefinition1472    = { FOLLOW_45_in_valueDefinition1472_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unionType_in_valueDefinition1474  */\r
+static ANTLR3_BITWORD FOLLOW_unionType_in_valueDefinition1474_bits[]   = { ANTLR3_UINT64_LIT(0x0000000800000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_unionType_in_valueDefinition1474     = { FOLLOW_unionType_in_valueDefinition1474_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_35_in_valueDefinition1476  */\r
+static ANTLR3_BITWORD FOLLOW_35_in_valueDefinition1476_bits[]  = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_35_in_valueDefinition1476    = { FOLLOW_35_in_valueDefinition1476_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_valueDefinition1478  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_valueDefinition1478_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_valueDefinition1478 = { FOLLOW_value_in_valueDefinition1478_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_basicValue_in_value1514  */\r
+static ANTLR3_BITWORD FOLLOW_basicValue_in_value1514_bits[]    = { ANTLR3_UINT64_LIT(0x0000200000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_basicValue_in_value1514      = { FOLLOW_basicValue_in_value1514_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_45_in_value1528  */\r
+static ANTLR3_BITWORD FOLLOW_45_in_value1528_bits[]    = { ANTLR3_UINT64_LIT(0x0000090000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_45_in_value1528      = { FOLLOW_45_in_value1528_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_value1530  */\r
+static ANTLR3_BITWORD FOLLOW_type_in_value1530_bits[]  = { ANTLR3_UINT64_LIT(0x0000200000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_value1530    = { FOLLOW_type_in_value1530_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_48_in_basicValue1562  */\r
+static ANTLR3_BITWORD FOLLOW_48_in_basicValue1562_bits[]       = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_48_in_basicValue1562 = { FOLLOW_48_in_basicValue1562_bits, 1 };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_string_in_basicValue1574  */\r
+static ANTLR3_BITWORD FOLLOW_string_in_basicValue1574_bits[]   = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_string_in_basicValue1574     = { FOLLOW_string_in_basicValue1574_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_number_in_basicValue1582  */\r
+static ANTLR3_BITWORD FOLLOW_number_in_basicValue1582_bits[]   = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_number_in_basicValue1582     = { FOLLOW_number_in_basicValue1582_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boolean_in_basicValue1590  */\r
+static ANTLR3_BITWORD FOLLOW_boolean_in_basicValue1590_bits[]  = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_boolean_in_basicValue1590    = { FOLLOW_boolean_in_basicValue1590_bits, 1    };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_array_in_basicValue1598  */\r
+static ANTLR3_BITWORD FOLLOW_array_in_basicValue1598_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_array_in_basicValue1598      = { FOLLOW_array_in_basicValue1598_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tuple_in_basicValue1606  */\r
+static ANTLR3_BITWORD FOLLOW_tuple_in_basicValue1606_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_tuple_in_basicValue1606      = { FOLLOW_tuple_in_basicValue1606_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_taggedValue_in_basicValue1614  */\r
+static ANTLR3_BITWORD FOLLOW_taggedValue_in_basicValue1614_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_taggedValue_in_basicValue1614        = { FOLLOW_taggedValue_in_basicValue1614_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_map_in_basicValue1622  */\r
+static ANTLR3_BITWORD FOLLOW_map_in_basicValue1622_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_map_in_basicValue1622        = { FOLLOW_map_in_basicValue1622_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_record_in_basicValue1630  */\r
+static ANTLR3_BITWORD FOLLOW_record_in_basicValue1630_bits[]   = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_record_in_basicValue1630     = { FOLLOW_record_in_basicValue1630_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_37_in_array1648  */\r
+static ANTLR3_BITWORD FOLLOW_37_in_array1648_bits[]    = { ANTLR3_UINT64_LIT(0x0003C96045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_37_in_array1648      = { FOLLOW_37_in_array1648_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_array1651  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_array1651_bits[] = { ANTLR3_UINT64_LIT(0x0000024000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_array1651   = { FOLLOW_value_in_array1651_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_array1654  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_array1654_bits[]    = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_array1654      = { FOLLOW_41_in_array1654_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_array1656  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_array1656_bits[] = { ANTLR3_UINT64_LIT(0x0000024000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_array1656   = { FOLLOW_value_in_array1656_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_38_in_array1662  */\r
+static ANTLR3_BITWORD FOLLOW_38_in_array1662_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_38_in_array1662      = { FOLLOW_38_in_array1662_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_40_in_tuple1694  */\r
+static ANTLR3_BITWORD FOLLOW_40_in_tuple1694_bits[]    = { ANTLR3_UINT64_LIT(0x0003CD2045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_40_in_tuple1694      = { FOLLOW_40_in_tuple1694_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_tuple1697  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_tuple1697_bits[] = { ANTLR3_UINT64_LIT(0x0000060000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_tuple1697   = { FOLLOW_value_in_tuple1697_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_tuple1700  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_tuple1700_bits[]    = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_tuple1700      = { FOLLOW_41_in_tuple1700_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_tuple1702  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_tuple1702_bits[] = { ANTLR3_UINT64_LIT(0x0000060000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_tuple1702   = { FOLLOW_value_in_tuple1702_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_42_in_tuple1708  */\r
+static ANTLR3_BITWORD FOLLOW_42_in_tuple1708_bits[]    = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_42_in_tuple1708      = { FOLLOW_42_in_tuple1708_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_taggedValue1740  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_taggedValue1740_bits[]      = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_taggedValue1740        = { FOLLOW_ID_in_taggedValue1740_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_basicValue_in_taggedValue1742  */\r
+static ANTLR3_BITWORD FOLLOW_basicValue_in_taggedValue1742_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_basicValue_in_taggedValue1742        = { FOLLOW_basicValue_in_taggedValue1742_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_43_in_record1775  */\r
+static ANTLR3_BITWORD FOLLOW_43_in_record1775_bits[]   = { ANTLR3_UINT64_LIT(0x0000100000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_43_in_record1775     = { FOLLOW_43_in_record1775_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordAssignment_in_record1778  */\r
+static ANTLR3_BITWORD FOLLOW_recordAssignment_in_record1778_bits[]     = { ANTLR3_UINT64_LIT(0x0000120000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_recordAssignment_in_record1778       = { FOLLOW_recordAssignment_in_record1778_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_record1781  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_record1781_bits[]   = { ANTLR3_UINT64_LIT(0x0000000000800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_record1781     = { FOLLOW_41_in_record1781_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordAssignment_in_record1783  */\r
+static ANTLR3_BITWORD FOLLOW_recordAssignment_in_record1783_bits[]     = { ANTLR3_UINT64_LIT(0x0000120000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_recordAssignment_in_record1783       = { FOLLOW_recordAssignment_in_record1783_bits, 1       };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_44_in_record1789  */\r
+static ANTLR3_BITWORD FOLLOW_44_in_record1789_bits[]   = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_44_in_record1789     = { FOLLOW_44_in_record1789_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ID_in_recordAssignment1821  */\r
+static ANTLR3_BITWORD FOLLOW_ID_in_recordAssignment1821_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_ID_in_recordAssignment1821   = { FOLLOW_ID_in_recordAssignment1821_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_35_in_recordAssignment1823  */\r
+static ANTLR3_BITWORD FOLLOW_35_in_recordAssignment1823_bits[] = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_35_in_recordAssignment1823   = { FOLLOW_35_in_recordAssignment1823_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_recordAssignment1825  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_recordAssignment1825_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_recordAssignment1825        = { FOLLOW_value_in_recordAssignment1825_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_49_in_map1852  */\r
+static ANTLR3_BITWORD FOLLOW_49_in_map1852_bits[]      = { ANTLR3_UINT64_LIT(0x0000080000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_49_in_map1852        = { FOLLOW_49_in_map1852_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_43_in_map1854  */\r
+static ANTLR3_BITWORD FOLLOW_43_in_map1854_bits[]      = { ANTLR3_UINT64_LIT(0x0003D92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_43_in_map1854        = { FOLLOW_43_in_map1854_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_mapAssignment_in_map1857  */\r
+static ANTLR3_BITWORD FOLLOW_mapAssignment_in_map1857_bits[]   = { ANTLR3_UINT64_LIT(0x0000120000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_mapAssignment_in_map1857     = { FOLLOW_mapAssignment_in_map1857_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_41_in_map1860  */\r
+static ANTLR3_BITWORD FOLLOW_41_in_map1860_bits[]      = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_41_in_map1860        = { FOLLOW_41_in_map1860_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_mapAssignment_in_map1862  */\r
+static ANTLR3_BITWORD FOLLOW_mapAssignment_in_map1862_bits[]   = { ANTLR3_UINT64_LIT(0x0000120000000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_mapAssignment_in_map1862     = { FOLLOW_mapAssignment_in_map1862_bits, 1     };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_44_in_map1868  */\r
+static ANTLR3_BITWORD FOLLOW_44_in_map1868_bits[]      = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_44_in_map1868        = { FOLLOW_44_in_map1868_bits, 1        };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_mapAssignment1900  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_mapAssignment1900_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_mapAssignment1900   = { FOLLOW_value_in_mapAssignment1900_bits, 1   };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_35_in_mapAssignment1902  */\r
+static ANTLR3_BITWORD FOLLOW_35_in_mapAssignment1902_bits[]    = { ANTLR3_UINT64_LIT(0x0003C92045800000) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_35_in_mapAssignment1902      = { FOLLOW_35_in_mapAssignment1902_bits, 1      };\r
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_value_in_mapAssignment1904  */\r
+static ANTLR3_BITWORD FOLLOW_value_in_mapAssignment1904_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };\r
+static  ANTLR3_BITSET_LIST FOLLOW_value_in_mapAssignment1904   = { FOLLOW_value_in_mapAssignment1904_bits, 1   };\r
+     \r
+\r
\r
\r
+/* ==============================================\r
+ * Parsing rules\r
+ */\r
+/** \r
+ * $ANTLR start typeDefinitions\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:93:1: typeDefinitions : ( typeDefinition )* -> ^( TYPE_DEFINITIONS ( typeDefinition )* ) ;\r
+ */\r
+static SimanticsDataParser_typeDefinitions_return\r
+typeDefinitions(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_typeDefinitions_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    SimanticsDataParser_typeDefinition_return typeDefinition1;\r
+    #undef     RETURN_TYPE_typeDefinition1\r
+    #define    RETURN_TYPE_typeDefinition1 SimanticsDataParser_typeDefinition_return\r
+\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_typeDefinition;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    typeDefinition1.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+\r
+    stream_typeDefinition   = NULL;\r
+    #define CREATE_stream_typeDefinition  if (stream_typeDefinition == NULL) {stream_typeDefinition = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule typeDefinition"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:93:17: ( ( typeDefinition )* -> ^( TYPE_DEFINITIONS ( typeDefinition )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:93:19: ( typeDefinition )*\r
+        {\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:93:19: ( typeDefinition )*\r
+\r
+            for (;;)\r
+            {\r
+                int alt1=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                case 34:\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:93:19: typeDefinition\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_typeDefinition_in_typeDefinitions768);\r
+                       typeDefinition1=typeDefinition(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletypeDefinitionsEx;\r
+                       }\r
+\r
+                       CREATE_stream_typeDefinition; stream_typeDefinition->add(stream_typeDefinition, typeDefinition1.tree, NULL);\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
+            /* AST REWRITE\r
+             * elements          : typeDefinition\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 93:35: -> ^( TYPE_DEFINITIONS ( typeDefinition )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:93:38: ^( TYPE_DEFINITIONS ( typeDefinition )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TYPE_DEFINITIONS, (pANTLR3_UINT8)"TYPE_DEFINITIONS"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:93:57: ( typeDefinition )*\r
+                       {\r
+                               while ( (stream_typeDefinition != NULL && stream_typeDefinition->hasNext(stream_typeDefinition))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_typeDefinition == NULL ? NULL : stream_typeDefinition->nextTree(stream_typeDefinition));\r
+\r
+                               }\r
+                               if (stream_typeDefinition != NULL) stream_typeDefinition->reset(stream_typeDefinition);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletypeDefinitionsEx; /* Prevent compiler warnings */\r
+    ruletypeDefinitionsEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_typeDefinition != NULL) stream_typeDefinition->free(stream_typeDefinition);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end typeDefinitions */\r
+\r
+/** \r
+ * $ANTLR start typeDefinition\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:95:1: typeDefinition : 'type' ID '=' unionType -> ^( TYPE_DEFINITION ID unionType ) ;\r
+ */\r
+static SimanticsDataParser_typeDefinition_return\r
+typeDefinition(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_typeDefinition_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    string_literal2;\r
+    pANTLR3_COMMON_TOKEN    ID3;\r
+    pANTLR3_COMMON_TOKEN    char_literal4;\r
+    SimanticsDataParser_unionType_return unionType5;\r
+    #undef     RETURN_TYPE_unionType5\r
+    #define    RETURN_TYPE_unionType5 SimanticsDataParser_unionType_return\r
+\r
+    pANTLR3_BASE_TREE string_literal2_tree;\r
+    pANTLR3_BASE_TREE ID3_tree;\r
+    pANTLR3_BASE_TREE char_literal4_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_35;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_34;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_unionType;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    string_literal2       = NULL;\r
+    ID3       = NULL;\r
+    char_literal4       = NULL;\r
+    unionType5.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    string_literal2_tree   = NULL;\r
+    ID3_tree   = NULL;\r
+    char_literal4_tree   = NULL;\r
+\r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_35   = NULL;\r
+    #define CREATE_stream_35  if (stream_35 == NULL) {stream_35 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 35"); } \r
+    stream_34   = NULL;\r
+    #define CREATE_stream_34  if (stream_34 == NULL) {stream_34 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 34"); } \r
+    stream_unionType   = NULL;\r
+    #define CREATE_stream_unionType  if (stream_unionType == NULL) {stream_unionType = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule unionType"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:96:5: ( 'type' ID '=' unionType -> ^( TYPE_DEFINITION ID unionType ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:96:7: 'type' ID '=' unionType\r
+        {\r
+            string_literal2 = (pANTLR3_COMMON_TOKEN) MATCHT(34, &FOLLOW_34_in_typeDefinition791); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletypeDefinitionEx;\r
+            }\r
+             \r
+            CREATE_stream_34; stream_34->add(stream_34, string_literal2, NULL);\r
+\r
+            ID3 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_typeDefinition793); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletypeDefinitionEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID3, NULL);\r
+\r
+            char_literal4 = (pANTLR3_COMMON_TOKEN) MATCHT(35, &FOLLOW_35_in_typeDefinition795); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletypeDefinitionEx;\r
+            }\r
+             \r
+            CREATE_stream_35; stream_35->add(stream_35, char_literal4, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_unionType_in_typeDefinition797);\r
+            unionType5=unionType(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletypeDefinitionEx;\r
+            }\r
+\r
+            CREATE_stream_unionType; stream_unionType->add(stream_unionType, unionType5.tree, NULL);\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : unionType, ID\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 96:31: -> ^( TYPE_DEFINITION ID unionType )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:96:34: ^( TYPE_DEFINITION ID unionType )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TYPE_DEFINITION, (pANTLR3_UINT8)"TYPE_DEFINITION"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_unionType == NULL ? NULL : stream_unionType->nextTree(stream_unionType));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletypeDefinitionEx; /* Prevent compiler warnings */\r
+    ruletypeDefinitionEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_35 != NULL) stream_35->free(stream_35);\r
+        if (stream_34 != NULL) stream_34->free(stream_34);\r
+        if (stream_unionType != NULL) stream_unionType->free(stream_unionType);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end typeDefinition */\r
+\r
+/** \r
+ * $ANTLR start unionType\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:99:1: unionType : ( type | ( '|' unionComponent )+ -> ^( UNION_TYPE ( unionComponent )+ ) );\r
+ */\r
+static SimanticsDataParser_unionType_return\r
+unionType(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_unionType_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal7;\r
+    SimanticsDataParser_type_return type6;\r
+    #undef     RETURN_TYPE_type6\r
+    #define    RETURN_TYPE_type6 SimanticsDataParser_type_return\r
+\r
+    SimanticsDataParser_unionComponent_return unionComponent8;\r
+    #undef     RETURN_TYPE_unionComponent8\r
+    #define    RETURN_TYPE_unionComponent8 SimanticsDataParser_unionComponent_return\r
+\r
+    pANTLR3_BASE_TREE char_literal7_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_36;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_unionComponent;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal7       = NULL;\r
+    type6.tree = NULL;\r
+\r
+    unionComponent8.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal7_tree   = NULL;\r
+\r
+    stream_36   = NULL;\r
+    #define CREATE_stream_36  if (stream_36 == NULL) {stream_36 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 36"); } \r
+    stream_unionComponent   = NULL;\r
+    #define CREATE_stream_unionComponent  if (stream_unionComponent == NULL) {stream_unionComponent = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule unionComponent"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:100:5: ( type | ( '|' unionComponent )+ -> ^( UNION_TYPE ( unionComponent )+ ) )\r
+            \r
+            ANTLR3_UINT32 alt3;\r
+\r
+            alt3=2;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case ID:\r
+            case 40:\r
+            case 43:\r
+               {\r
+                       alt3=1;\r
+               }\r
+                break;\r
+            case 36:\r
+               {\r
+                       alt3=2;\r
+               }\r
+                break;\r
+\r
+            default:\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                EXCEPTION->message      = (void *)"";\r
+                EXCEPTION->decisionNum  = 3;\r
+                EXCEPTION->state        = 0;\r
+\r
+\r
+                goto ruleunionTypeEx;\r
+            }\r
+\r
+            switch (alt3) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:100:7: type\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_type_in_unionType829);\r
+                       type6=type(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleunionTypeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, type6.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:101:7: ( '|' unionComponent )+\r
+                   {\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:101:7: ( '|' unionComponent )+\r
+                       {\r
+                           int cnt2=0;\r
+\r
+                           for (;;)\r
+                           {\r
+                               int alt2=2;\r
+                               switch ( LA(1) ) \r
+                               {\r
+                               case 36:\r
+                                       {\r
+                                               alt2=1;\r
+                                       }\r
+                                   break;\r
+\r
+                               }\r
+\r
+                               switch (alt2) \r
+                               {\r
+                                   case 1:\r
+                                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:101:8: '|' unionComponent\r
+                                       {\r
+                                           char_literal7 = (pANTLR3_COMMON_TOKEN) MATCHT(36, &FOLLOW_36_in_unionType838); \r
+                                           if  (HASEXCEPTION())\r
+                                           {\r
+                                               goto ruleunionTypeEx;\r
+                                           }\r
+                                            \r
+                                           CREATE_stream_36; stream_36->add(stream_36, char_literal7, NULL);\r
+\r
+                                           FOLLOWPUSH(FOLLOW_unionComponent_in_unionType840);\r
+                                           unionComponent8=unionComponent(ctx);\r
+\r
+                                           FOLLOWPOP();\r
+                                           if  (HASEXCEPTION())\r
+                                           {\r
+                                               goto ruleunionTypeEx;\r
+                                           }\r
+\r
+                                           CREATE_stream_unionComponent; stream_unionComponent->add(stream_unionComponent, unionComponent8.tree, NULL);\r
+\r
+                                       }\r
+                                       break;\r
+\r
+                                   default:\r
+                                   \r
+                                       if ( cnt2 >= 1 )\r
+                                       {\r
+                                           goto loop2;\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 ruleunionTypeEx;\r
+                               }\r
+                               cnt2++;\r
+                           }\r
+                           loop2: ;    /* Jump to here if this rule does not match */\r
+                       }\r
+\r
+                        \r
+                       /* AST REWRITE\r
+                        * elements          : unionComponent\r
+                        * token labels      : \r
+                        * rule labels       : retval\r
+                        * token list labels : \r
+                        * rule list labels  : \r
+                        */\r
+                       {\r
+                               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                               retval.tree    = root_0;\r
+                               // 102:5: -> ^( UNION_TYPE ( unionComponent )+ )\r
+                               {\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:102:8: ^( UNION_TYPE ( unionComponent )+ )\r
+                                   {\r
+                                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, UNION_TYPE, (pANTLR3_UINT8)"UNION_TYPE"), root_1));\r
+\r
+                                       if ((stream_unionComponent == NULL || !stream_unionComponent->hasNext(stream_unionComponent))  )\r
+                                       {\r
+                                           CONSTRUCTEX();\r
+                                           EXCEPTION->type         = ANTLR3_REWRITE_EARLY_EXCEPTION;\r
+                                           EXCEPTION->name         = (void *)ANTLR3_REWRITE_EARLY_EXCEPTION_NAME;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               while ( (stream_unionComponent->hasNext(stream_unionComponent))  ) {\r
+                                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_unionComponent == NULL ? NULL : stream_unionComponent->nextTree(stream_unionComponent));\r
+\r
+                                               }\r
+                                               stream_unionComponent->reset(stream_unionComponent);\r
+\r
+                                       }\r
+                                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                                   }\r
+\r
+                               }\r
+\r
+                               retval.tree = root_0; // set result root\r
+                               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                       }\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleunionTypeEx; /* Prevent compiler warnings */\r
+    ruleunionTypeEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_36 != NULL) stream_36->free(stream_36);\r
+        if (stream_unionComponent != NULL) stream_unionComponent->free(stream_unionComponent);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end unionType */\r
+\r
+/** \r
+ * $ANTLR start unionComponent\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:105:1: unionComponent : ID ( type )? -> ^( TYPE_COMPONENT ID ( type )? ) ;\r
+ */\r
+static SimanticsDataParser_unionComponent_return\r
+unionComponent(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_unionComponent_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID9;\r
+    SimanticsDataParser_type_return type10;\r
+    #undef     RETURN_TYPE_type10\r
+    #define    RETURN_TYPE_type10 SimanticsDataParser_type_return\r
+\r
+    pANTLR3_BASE_TREE ID9_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_type;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID9       = NULL;\r
+    type10.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID9_tree   = NULL;\r
+\r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_type   = NULL;\r
+    #define CREATE_stream_type  if (stream_type == NULL) {stream_type = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule type"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:105:16: ( ID ( type )? -> ^( TYPE_COMPONENT ID ( type )? ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:105:18: ID ( type )?\r
+        {\r
+            ID9 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_unionComponent871); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruleunionComponentEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID9, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:105:21: ( type )?\r
+            {\r
+                int alt4=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\r
+                    case 40:\r
+                    case 43:\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:105:21: type\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_type_in_unionComponent873);\r
+                       type10=type(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleunionComponentEx;\r
+                       }\r
+\r
+                       CREATE_stream_type; stream_type->add(stream_type, type10.tree, NULL);\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : ID, type\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 105:27: -> ^( TYPE_COMPONENT ID ( type )? )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:105:30: ^( TYPE_COMPONENT ID ( type )? )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TYPE_COMPONENT, (pANTLR3_UINT8)"TYPE_COMPONENT"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:105:50: ( type )?\r
+                       {\r
+                               if ( (stream_type != NULL && stream_type->hasNext(stream_type))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_type == NULL ? NULL : stream_type->nextTree(stream_type));\r
+\r
+                               }\r
+                               if ( stream_type != NULL) stream_type->reset(stream_type);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleunionComponentEx; /* Prevent compiler warnings */\r
+    ruleunionComponentEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_type != NULL) stream_type->free(stream_type);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end unionComponent */\r
+\r
+/** \r
+ * $ANTLR start type\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:107:1: type : ( basicType -> basicType ) ( '[' ( arrayLength )? ']' -> ^( ARRAY_TYPE $type ( arrayLength )? ) )* ;\r
+ */\r
+static SimanticsDataParser_type_return\r
+type(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_type_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal12;\r
+    pANTLR3_COMMON_TOKEN    char_literal14;\r
+    SimanticsDataParser_basicType_return basicType11;\r
+    #undef     RETURN_TYPE_basicType11\r
+    #define    RETURN_TYPE_basicType11 SimanticsDataParser_basicType_return\r
+\r
+    SimanticsDataParser_arrayLength_return arrayLength13;\r
+    #undef     RETURN_TYPE_arrayLength13\r
+    #define    RETURN_TYPE_arrayLength13 SimanticsDataParser_arrayLength_return\r
+\r
+    pANTLR3_BASE_TREE char_literal12_tree;\r
+    pANTLR3_BASE_TREE char_literal14_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_37;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_38;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_arrayLength;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_basicType;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal12       = NULL;\r
+    char_literal14       = NULL;\r
+    basicType11.tree = NULL;\r
+\r
+    arrayLength13.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal12_tree   = NULL;\r
+    char_literal14_tree   = NULL;\r
+\r
+    stream_37   = NULL;\r
+    #define CREATE_stream_37  if (stream_37 == NULL) {stream_37 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 37"); } \r
+    stream_38   = NULL;\r
+    #define CREATE_stream_38  if (stream_38 == NULL) {stream_38 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 38"); } \r
+    stream_arrayLength   = NULL;\r
+    #define CREATE_stream_arrayLength  if (stream_arrayLength == NULL) {stream_arrayLength = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule arrayLength"); }\r
+    stream_basicType   = NULL;\r
+    #define CREATE_stream_basicType  if (stream_basicType == NULL) {stream_basicType = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule basicType"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:108:5: ( ( basicType -> basicType ) ( '[' ( arrayLength )? ']' -> ^( ARRAY_TYPE $type ( arrayLength )? ) )* )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:108:7: ( basicType -> basicType ) ( '[' ( arrayLength )? ']' -> ^( ARRAY_TYPE $type ( arrayLength )? ) )*\r
+        {\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:108:7: ( basicType -> basicType )\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:108:8: basicType\r
+            {\r
+                FOLLOWPUSH(FOLLOW_basicType_in_type900);\r
+                basicType11=basicType(ctx);\r
+\r
+                FOLLOWPOP();\r
+                if  (HASEXCEPTION())\r
+                {\r
+                    goto ruletypeEx;\r
+                }\r
+\r
+                CREATE_stream_basicType; stream_basicType->add(stream_basicType, basicType11.tree, NULL);\r
+\r
+                 \r
+                /* AST REWRITE\r
+                 * elements          : basicType\r
+                 * token labels      : \r
+                 * rule labels       : retval\r
+                 * token list labels : \r
+                 * rule list labels  : \r
+                 */\r
+                {\r
+                       pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                       stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                       root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       retval.tree    = root_0;\r
+                       // 108:18: -> basicType\r
+                       {\r
+                           ADAPTOR->addChild(ADAPTOR, root_0, stream_basicType == NULL ? NULL : stream_basicType->nextTree(stream_basicType));\r
+\r
+                       }\r
+\r
+                       retval.tree = root_0; // set result root\r
+                       if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                }\r
+            }\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:109:7: ( '[' ( arrayLength )? ']' -> ^( ARRAY_TYPE $type ( arrayLength )? ) )*\r
+\r
+            for (;;)\r
+            {\r
+                int alt6=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                case 37:\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:109:8: '[' ( arrayLength )? ']'\r
+                   {\r
+                       char_literal12 = (pANTLR3_COMMON_TOKEN) MATCHT(37, &FOLLOW_37_in_type914); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletypeEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_37; stream_37->add(stream_37, char_literal12, NULL);\r
+\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:109:12: ( arrayLength )?\r
+                       {\r
+                           int alt5=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                               case INT:\r
+                               case 39:\r
+                                       {\r
+                                               alt5=1;\r
+                                       }\r
+                                   break;\r
+                           }\r
+\r
+                           switch (alt5) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:109:12: arrayLength\r
+                                   {\r
+                                       FOLLOWPUSH(FOLLOW_arrayLength_in_type916);\r
+                                       arrayLength13=arrayLength(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletypeEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_arrayLength; stream_arrayLength->add(stream_arrayLength, arrayLength13.tree, NULL);\r
+\r
+                                   }\r
+                                   break;\r
+\r
+                           }\r
+                       }\r
+                       char_literal14 = (pANTLR3_COMMON_TOKEN) MATCHT(38, &FOLLOW_38_in_type919); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletypeEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_38; stream_38->add(stream_38, char_literal14, NULL);\r
+\r
+\r
+                        \r
+                       /* AST REWRITE\r
+                        * elements          : arrayLength, type\r
+                        * token labels      : \r
+                        * rule labels       : retval\r
+                        * token list labels : \r
+                        * rule list labels  : \r
+                        */\r
+                       {\r
+                               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                               retval.tree    = root_0;\r
+                               // 109:29: -> ^( ARRAY_TYPE $type ( arrayLength )? )\r
+                               {\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:109:32: ^( ARRAY_TYPE $type ( arrayLength )? )\r
+                                   {\r
+                                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, ARRAY_TYPE, (pANTLR3_UINT8)"ARRAY_TYPE"), root_1));\r
+\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_retval == NULL ? NULL : stream_retval->nextTree(stream_retval));\r
+                                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:109:51: ( arrayLength )?\r
+                                       {\r
+                                               if ( (stream_arrayLength != NULL && stream_arrayLength->hasNext(stream_arrayLength))  )\r
+                                               {\r
+                                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_arrayLength == NULL ? NULL : stream_arrayLength->nextTree(stream_arrayLength));\r
+\r
+                                               }\r
+                                               if ( stream_arrayLength != NULL) stream_arrayLength->reset(stream_arrayLength);\r
+\r
+                                       }\r
+\r
+                                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                                   }\r
+\r
+                               }\r
+\r
+                               retval.tree = root_0; // set result root\r
+                               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                       }\r
+                   }\r
+                   break;\r
+\r
+               default:\r
+                   goto loop6; /* break out of the loop */\r
+                   break;\r
+                }\r
+            }\r
+            loop6: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletypeEx; /* Prevent compiler warnings */\r
+    ruletypeEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_37 != NULL) stream_37->free(stream_37);\r
+        if (stream_38 != NULL) stream_38->free(stream_38);\r
+        if (stream_arrayLength != NULL) stream_arrayLength->free(stream_arrayLength);\r
+        if (stream_basicType != NULL) stream_basicType->free(stream_basicType);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end type */\r
+\r
+/** \r
+ * $ANTLR start arrayLength\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:111:1: arrayLength : ( INT | INT '..' | '..' INT | INT '..' INT );\r
+ */\r
+static SimanticsDataParser_arrayLength_return\r
+arrayLength(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_arrayLength_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    INT15;\r
+    pANTLR3_COMMON_TOKEN    INT16;\r
+    pANTLR3_COMMON_TOKEN    string_literal17;\r
+    pANTLR3_COMMON_TOKEN    string_literal18;\r
+    pANTLR3_COMMON_TOKEN    INT19;\r
+    pANTLR3_COMMON_TOKEN    INT20;\r
+    pANTLR3_COMMON_TOKEN    string_literal21;\r
+    pANTLR3_COMMON_TOKEN    INT22;\r
+\r
+    pANTLR3_BASE_TREE INT15_tree;\r
+    pANTLR3_BASE_TREE INT16_tree;\r
+    pANTLR3_BASE_TREE string_literal17_tree;\r
+    pANTLR3_BASE_TREE string_literal18_tree;\r
+    pANTLR3_BASE_TREE INT19_tree;\r
+    pANTLR3_BASE_TREE INT20_tree;\r
+    pANTLR3_BASE_TREE string_literal21_tree;\r
+    pANTLR3_BASE_TREE INT22_tree;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    INT15       = NULL;\r
+    INT16       = NULL;\r
+    string_literal17       = NULL;\r
+    string_literal18       = NULL;\r
+    INT19       = NULL;\r
+    INT20       = NULL;\r
+    string_literal21       = NULL;\r
+    INT22       = NULL;\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    INT15_tree   = NULL;\r
+    INT16_tree   = NULL;\r
+    string_literal17_tree   = NULL;\r
+    string_literal18_tree   = NULL;\r
+    INT19_tree   = NULL;\r
+    INT20_tree   = NULL;\r
+    string_literal21_tree   = NULL;\r
+    INT22_tree   = NULL;\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:112:5: ( INT | INT '..' | '..' INT | INT '..' INT )\r
+            \r
+            ANTLR3_UINT32 alt7;\r
+\r
+            alt7=4;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case INT:\r
+               {\r
+                       switch ( LA(2) ) \r
+                       {\r
+                       case 39:\r
+                               {\r
+                                       switch ( LA(3) ) \r
+                                       {\r
+                                       case INT:\r
+                                               {\r
+                                                       alt7=4;\r
+                                               }\r
+                                           break;\r
+                                       case 38:\r
+                                               {\r
+                                                       alt7=2;\r
+                                               }\r
+                                           break;\r
+\r
+                                       default:\r
+                                           CONSTRUCTEX();\r
+                                           EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                                           EXCEPTION->message      = (void *)"";\r
+                                           EXCEPTION->decisionNum  = 7;\r
+                                           EXCEPTION->state        = 3;\r
+\r
+\r
+                                           goto rulearrayLengthEx;\r
+                                       }\r
+\r
+                               }\r
+                           break;\r
+                       case 38:\r
+                               {\r
+                                       alt7=1;\r
+                               }\r
+                           break;\r
+\r
+                       default:\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                           EXCEPTION->message      = (void *)"";\r
+                           EXCEPTION->decisionNum  = 7;\r
+                           EXCEPTION->state        = 1;\r
+\r
+\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+               }\r
+                break;\r
+            case 39:\r
+               {\r
+                       alt7=3;\r
+               }\r
+                break;\r
+\r
+            default:\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                EXCEPTION->message      = (void *)"";\r
+                EXCEPTION->decisionNum  = 7;\r
+                EXCEPTION->state        = 0;\r
+\r
+\r
+                goto rulearrayLengthEx;\r
+            }\r
+\r
+            switch (alt7) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:112:7: INT\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       INT15 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_arrayLength947); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       INT15_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, INT15));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, INT15_tree);\r
+\r
+\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:113:7: INT '..'\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       INT16 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_arrayLength955); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       INT16_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, INT16));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, INT16_tree);\r
+\r
+                       string_literal17 = (pANTLR3_COMMON_TOKEN) MATCHT(39, &FOLLOW_39_in_arrayLength957); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       string_literal17_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, string_literal17));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string_literal17_tree);\r
+\r
+\r
+                   }\r
+                   break;\r
+               case 3:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:114:7: '..' INT\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       string_literal18 = (pANTLR3_COMMON_TOKEN) MATCHT(39, &FOLLOW_39_in_arrayLength965); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       string_literal18_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, string_literal18));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string_literal18_tree);\r
+\r
+                       INT19 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_arrayLength967); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       INT19_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, INT19));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, INT19_tree);\r
+\r
+\r
+                   }\r
+                   break;\r
+               case 4:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:115:7: INT '..' INT\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       INT20 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_arrayLength976); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       INT20_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, INT20));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, INT20_tree);\r
+\r
+                       string_literal21 = (pANTLR3_COMMON_TOKEN) MATCHT(39, &FOLLOW_39_in_arrayLength978); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       string_literal21_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, string_literal21));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string_literal21_tree);\r
+\r
+                       INT22 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_arrayLength980); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayLengthEx;\r
+                       }\r
+\r
+                       INT22_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, INT22));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, INT22_tree);\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulearrayLengthEx; /* Prevent compiler warnings */\r
+    rulearrayLengthEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end arrayLength */\r
+\r
+/** \r
+ * $ANTLR start basicType\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:118:1: basicType : ( tupleType | recordType | typeReference );\r
+ */\r
+static SimanticsDataParser_basicType_return\r
+basicType(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_basicType_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    SimanticsDataParser_tupleType_return tupleType23;\r
+    #undef     RETURN_TYPE_tupleType23\r
+    #define    RETURN_TYPE_tupleType23 SimanticsDataParser_tupleType_return\r
+\r
+    SimanticsDataParser_recordType_return recordType24;\r
+    #undef     RETURN_TYPE_recordType24\r
+    #define    RETURN_TYPE_recordType24 SimanticsDataParser_recordType_return\r
+\r
+    SimanticsDataParser_typeReference_return typeReference25;\r
+    #undef     RETURN_TYPE_typeReference25\r
+    #define    RETURN_TYPE_typeReference25 SimanticsDataParser_typeReference_return\r
+\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    tupleType23.tree = NULL;\r
+\r
+    recordType24.tree = NULL;\r
+\r
+    typeReference25.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:119:5: ( tupleType | recordType | typeReference )\r
+            \r
+            ANTLR3_UINT32 alt8;\r
+\r
+            alt8=3;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case 40:\r
+               {\r
+                       alt8=1;\r
+               }\r
+                break;\r
+            case 43:\r
+               {\r
+                       alt8=2;\r
+               }\r
+                break;\r
+            case ID:\r
+               {\r
+                       alt8=3;\r
+               }\r
+                break;\r
+\r
+            default:\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                EXCEPTION->message      = (void *)"";\r
+                EXCEPTION->decisionNum  = 8;\r
+                EXCEPTION->state        = 0;\r
+\r
+\r
+                goto rulebasicTypeEx;\r
+            }\r
+\r
+            switch (alt8) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:119:7: tupleType\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_tupleType_in_basicType998);\r
+                       tupleType23=tupleType(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicTypeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, tupleType23.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:120:7: recordType\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_recordType_in_basicType1006);\r
+                       recordType24=recordType(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicTypeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, recordType24.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 3:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:121:7: typeReference\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_typeReference_in_basicType1014);\r
+                       typeReference25=typeReference(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicTypeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, typeReference25.tree);\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulebasicTypeEx; /* Prevent compiler warnings */\r
+    rulebasicTypeEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end basicType */\r
+\r
+/** \r
+ * $ANTLR start tupleType\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:124:1: tupleType : '(' ( unionType ( ',' unionType )* )? ')' -> ^( TUPLE_TYPE ( unionType )* ) ;\r
+ */\r
+static SimanticsDataParser_tupleType_return\r
+tupleType(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_tupleType_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal26;\r
+    pANTLR3_COMMON_TOKEN    char_literal28;\r
+    pANTLR3_COMMON_TOKEN    char_literal30;\r
+    SimanticsDataParser_unionType_return unionType27;\r
+    #undef     RETURN_TYPE_unionType27\r
+    #define    RETURN_TYPE_unionType27 SimanticsDataParser_unionType_return\r
+\r
+    SimanticsDataParser_unionType_return unionType29;\r
+    #undef     RETURN_TYPE_unionType29\r
+    #define    RETURN_TYPE_unionType29 SimanticsDataParser_unionType_return\r
+\r
+    pANTLR3_BASE_TREE char_literal26_tree;\r
+    pANTLR3_BASE_TREE char_literal28_tree;\r
+    pANTLR3_BASE_TREE char_literal30_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_42;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_40;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_unionType;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal26       = NULL;\r
+    char_literal28       = NULL;\r
+    char_literal30       = NULL;\r
+    unionType27.tree = NULL;\r
+\r
+    unionType29.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal26_tree   = NULL;\r
+    char_literal28_tree   = NULL;\r
+    char_literal30_tree   = NULL;\r
+\r
+    stream_42   = NULL;\r
+    #define CREATE_stream_42  if (stream_42 == NULL) {stream_42 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 42"); } \r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_40   = NULL;\r
+    #define CREATE_stream_40  if (stream_40 == NULL) {stream_40 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 40"); } \r
+    stream_unionType   = NULL;\r
+    #define CREATE_stream_unionType  if (stream_unionType == NULL) {stream_unionType = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule unionType"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:125:5: ( '(' ( unionType ( ',' unionType )* )? ')' -> ^( TUPLE_TYPE ( unionType )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:125:7: '(' ( unionType ( ',' unionType )* )? ')'\r
+        {\r
+            char_literal26 = (pANTLR3_COMMON_TOKEN) MATCHT(40, &FOLLOW_40_in_tupleType1036); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletupleTypeEx;\r
+            }\r
+             \r
+            CREATE_stream_40; stream_40->add(stream_40, char_literal26, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:125:11: ( unionType ( ',' unionType )* )?\r
+            {\r
+                int alt10=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\r
+                    case 36:\r
+                    case 40:\r
+                    case 43:\r
+                       {\r
+                               alt10=1;\r
+                       }\r
+                        break;\r
+                }\r
+\r
+                switch (alt10) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:125:12: unionType ( ',' unionType )*\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_unionType_in_tupleType1039);\r
+                       unionType27=unionType(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletupleTypeEx;\r
+                       }\r
+\r
+                       CREATE_stream_unionType; stream_unionType->add(stream_unionType, unionType27.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:125:22: ( ',' unionType )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt9=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\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:125:23: ',' unionType\r
+                                   {\r
+                                       char_literal28 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_tupleType1042); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletupleTypeEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal28, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_unionType_in_tupleType1044);\r
+                                       unionType29=unionType(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletupleTypeEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_unionType; stream_unionType->add(stream_unionType, unionType29.tree, NULL);\r
+\r
+                                   }\r
+                                   break;\r
+\r
+                               default:\r
+                                   goto loop9; /* break out of the loop */\r
+                                   break;\r
+                           }\r
+                       }\r
+                       loop9: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+            char_literal30 = (pANTLR3_COMMON_TOKEN) MATCHT(42, &FOLLOW_42_in_tupleType1050); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletupleTypeEx;\r
+            }\r
+             \r
+            CREATE_stream_42; stream_42->add(stream_42, char_literal30, NULL);\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : unionType\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 126:5: -> ^( TUPLE_TYPE ( unionType )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:126:8: ^( TUPLE_TYPE ( unionType )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TUPLE_TYPE, (pANTLR3_UINT8)"TUPLE_TYPE"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:126:21: ( unionType )*\r
+                       {\r
+                               while ( (stream_unionType != NULL && stream_unionType->hasNext(stream_unionType))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_unionType == NULL ? NULL : stream_unionType->nextTree(stream_unionType));\r
+\r
+                               }\r
+                               if (stream_unionType != NULL) stream_unionType->reset(stream_unionType);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletupleTypeEx; /* Prevent compiler warnings */\r
+    ruletupleTypeEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_42 != NULL) stream_42->free(stream_42);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_40 != NULL) stream_40->free(stream_40);\r
+        if (stream_unionType != NULL) stream_unionType->free(stream_unionType);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end tupleType */\r
+\r
+/** \r
+ * $ANTLR start recordType\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:129:1: recordType : '{' ( component ( ',' component )* )? '}' -> ^( RECORD_TYPE ( component )* ) ;\r
+ */\r
+static SimanticsDataParser_recordType_return\r
+recordType(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_recordType_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal31;\r
+    pANTLR3_COMMON_TOKEN    char_literal33;\r
+    pANTLR3_COMMON_TOKEN    char_literal35;\r
+    SimanticsDataParser_component_return component32;\r
+    #undef     RETURN_TYPE_component32\r
+    #define    RETURN_TYPE_component32 SimanticsDataParser_component_return\r
+\r
+    SimanticsDataParser_component_return component34;\r
+    #undef     RETURN_TYPE_component34\r
+    #define    RETURN_TYPE_component34 SimanticsDataParser_component_return\r
+\r
+    pANTLR3_BASE_TREE char_literal31_tree;\r
+    pANTLR3_BASE_TREE char_literal33_tree;\r
+    pANTLR3_BASE_TREE char_literal35_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_43;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_44;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_component;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal31       = NULL;\r
+    char_literal33       = NULL;\r
+    char_literal35       = NULL;\r
+    component32.tree = NULL;\r
+\r
+    component34.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal31_tree   = NULL;\r
+    char_literal33_tree   = NULL;\r
+    char_literal35_tree   = NULL;\r
+\r
+    stream_43   = NULL;\r
+    #define CREATE_stream_43  if (stream_43 == NULL) {stream_43 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 43"); } \r
+    stream_44   = NULL;\r
+    #define CREATE_stream_44  if (stream_44 == NULL) {stream_44 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 44"); } \r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_component   = NULL;\r
+    #define CREATE_stream_component  if (stream_component == NULL) {stream_component = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule component"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:130:5: ( '{' ( component ( ',' component )* )? '}' -> ^( RECORD_TYPE ( component )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:130:7: '{' ( component ( ',' component )* )? '}'\r
+        {\r
+            char_literal31 = (pANTLR3_COMMON_TOKEN) MATCHT(43, &FOLLOW_43_in_recordType1083); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordTypeEx;\r
+            }\r
+             \r
+            CREATE_stream_43; stream_43->add(stream_43, char_literal31, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:130:11: ( component ( ',' component )* )?\r
+            {\r
+                int alt12=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\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:130:12: component ( ',' component )*\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_component_in_recordType1086);\r
+                       component32=component(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerecordTypeEx;\r
+                       }\r
+\r
+                       CREATE_stream_component; stream_component->add(stream_component, component32.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:130:22: ( ',' component )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt11=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\r
+                               {\r
+                                       alt11=1;\r
+                               }\r
+                               break;\r
+\r
+                           }\r
+\r
+                           switch (alt11) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:130:23: ',' component\r
+                                   {\r
+                                       char_literal33 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_recordType1089); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulerecordTypeEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal33, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_component_in_recordType1091);\r
+                                       component34=component(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulerecordTypeEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_component; stream_component->add(stream_component, component34.tree, NULL);\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
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+            char_literal35 = (pANTLR3_COMMON_TOKEN) MATCHT(44, &FOLLOW_44_in_recordType1097); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordTypeEx;\r
+            }\r
+             \r
+            CREATE_stream_44; stream_44->add(stream_44, char_literal35, NULL);\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : component\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 131:5: -> ^( RECORD_TYPE ( component )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:131:8: ^( RECORD_TYPE ( component )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, RECORD_TYPE, (pANTLR3_UINT8)"RECORD_TYPE"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:131:22: ( component )*\r
+                       {\r
+                               while ( (stream_component != NULL && stream_component->hasNext(stream_component))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_component == NULL ? NULL : stream_component->nextTree(stream_component));\r
+\r
+                               }\r
+                               if (stream_component != NULL) stream_component->reset(stream_component);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulerecordTypeEx; /* Prevent compiler warnings */\r
+    rulerecordTypeEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_43 != NULL) stream_43->free(stream_43);\r
+        if (stream_44 != NULL) stream_44->free(stream_44);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_component != NULL) stream_component->free(stream_component);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end recordType */\r
+\r
+/** \r
+ * $ANTLR start component\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:134:1: component : ID ':' unionType -> ^( TYPE_COMPONENT ID unionType ) ;\r
+ */\r
+static SimanticsDataParser_component_return\r
+component(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_component_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID36;\r
+    pANTLR3_COMMON_TOKEN    char_literal37;\r
+    SimanticsDataParser_unionType_return unionType38;\r
+    #undef     RETURN_TYPE_unionType38\r
+    #define    RETURN_TYPE_unionType38 SimanticsDataParser_unionType_return\r
+\r
+    pANTLR3_BASE_TREE ID36_tree;\r
+    pANTLR3_BASE_TREE char_literal37_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_45;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_unionType;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID36       = NULL;\r
+    char_literal37       = NULL;\r
+    unionType38.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID36_tree   = NULL;\r
+    char_literal37_tree   = NULL;\r
+\r
+    stream_45   = NULL;\r
+    #define CREATE_stream_45  if (stream_45 == NULL) {stream_45 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 45"); } \r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_unionType   = NULL;\r
+    #define CREATE_stream_unionType  if (stream_unionType == NULL) {stream_unionType = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule unionType"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:135:5: ( ID ':' unionType -> ^( TYPE_COMPONENT ID unionType ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:135:7: ID ':' unionType\r
+        {\r
+            ID36 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_component1129); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulecomponentEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID36, NULL);\r
+\r
+            char_literal37 = (pANTLR3_COMMON_TOKEN) MATCHT(45, &FOLLOW_45_in_component1131); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulecomponentEx;\r
+            }\r
+             \r
+            CREATE_stream_45; stream_45->add(stream_45, char_literal37, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_unionType_in_component1133);\r
+            unionType38=unionType(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulecomponentEx;\r
+            }\r
+\r
+            CREATE_stream_unionType; stream_unionType->add(stream_unionType, unionType38.tree, NULL);\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : ID, unionType\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 136:5: -> ^( TYPE_COMPONENT ID unionType )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:136:8: ^( TYPE_COMPONENT ID unionType )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TYPE_COMPONENT, (pANTLR3_UINT8)"TYPE_COMPONENT"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_unionType == NULL ? NULL : stream_unionType->nextTree(stream_unionType));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulecomponentEx; /* Prevent compiler warnings */\r
+    rulecomponentEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_45 != NULL) stream_45->free(stream_45);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_unionType != NULL) stream_unionType->free(stream_unionType);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end component */\r
+\r
+/** \r
+ * $ANTLR start typeReference\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:139:1: typeReference : ID ( '(' parameter ( ',' parameter )* ')' )? -> ^( TYPE_REFERENCE ID ( parameter )* ) ;\r
+ */\r
+static SimanticsDataParser_typeReference_return\r
+typeReference(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_typeReference_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID39;\r
+    pANTLR3_COMMON_TOKEN    char_literal40;\r
+    pANTLR3_COMMON_TOKEN    char_literal42;\r
+    pANTLR3_COMMON_TOKEN    char_literal44;\r
+    SimanticsDataParser_parameter_return parameter41;\r
+    #undef     RETURN_TYPE_parameter41\r
+    #define    RETURN_TYPE_parameter41 SimanticsDataParser_parameter_return\r
+\r
+    SimanticsDataParser_parameter_return parameter43;\r
+    #undef     RETURN_TYPE_parameter43\r
+    #define    RETURN_TYPE_parameter43 SimanticsDataParser_parameter_return\r
+\r
+    pANTLR3_BASE_TREE ID39_tree;\r
+    pANTLR3_BASE_TREE char_literal40_tree;\r
+    pANTLR3_BASE_TREE char_literal42_tree;\r
+    pANTLR3_BASE_TREE char_literal44_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_42;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_40;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_parameter;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID39       = NULL;\r
+    char_literal40       = NULL;\r
+    char_literal42       = NULL;\r
+    char_literal44       = NULL;\r
+    parameter41.tree = NULL;\r
+\r
+    parameter43.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID39_tree   = NULL;\r
+    char_literal40_tree   = NULL;\r
+    char_literal42_tree   = NULL;\r
+    char_literal44_tree   = NULL;\r
+\r
+    stream_42   = NULL;\r
+    #define CREATE_stream_42  if (stream_42 == NULL) {stream_42 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 42"); } \r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_40   = NULL;\r
+    #define CREATE_stream_40  if (stream_40 == NULL) {stream_40 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 40"); } \r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_parameter   = NULL;\r
+    #define CREATE_stream_parameter  if (stream_parameter == NULL) {stream_parameter = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule parameter"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:140:5: ( ID ( '(' parameter ( ',' parameter )* ')' )? -> ^( TYPE_REFERENCE ID ( parameter )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:140:7: ID ( '(' parameter ( ',' parameter )* ')' )?\r
+        {\r
+            ID39 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_typeReference1167); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletypeReferenceEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID39, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:140:10: ( '(' parameter ( ',' parameter )* ')' )?\r
+            {\r
+                int alt14=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case 40:\r
+                       {\r
+                               alt14=1;\r
+                       }\r
+                        break;\r
+                }\r
+\r
+                switch (alt14) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:140:11: '(' parameter ( ',' parameter )* ')'\r
+                   {\r
+                       char_literal40 = (pANTLR3_COMMON_TOKEN) MATCHT(40, &FOLLOW_40_in_typeReference1170); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletypeReferenceEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_40; stream_40->add(stream_40, char_literal40, NULL);\r
+\r
+                       FOLLOWPUSH(FOLLOW_parameter_in_typeReference1172);\r
+                       parameter41=parameter(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletypeReferenceEx;\r
+                       }\r
+\r
+                       CREATE_stream_parameter; stream_parameter->add(stream_parameter, parameter41.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:140:25: ( ',' parameter )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt13=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\r
+                               {\r
+                                       alt13=1;\r
+                               }\r
+                               break;\r
+\r
+                           }\r
+\r
+                           switch (alt13) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:140:26: ',' parameter\r
+                                   {\r
+                                       char_literal42 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_typeReference1175); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletypeReferenceEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal42, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_parameter_in_typeReference1177);\r
+                                       parameter43=parameter(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletypeReferenceEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_parameter; stream_parameter->add(stream_parameter, parameter43.tree, NULL);\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
+                       char_literal44 = (pANTLR3_COMMON_TOKEN) MATCHT(42, &FOLLOW_42_in_typeReference1181); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletypeReferenceEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_42; stream_42->add(stream_42, char_literal44, NULL);\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : ID, parameter\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 141:5: -> ^( TYPE_REFERENCE ID ( parameter )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:141:8: ^( TYPE_REFERENCE ID ( parameter )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TYPE_REFERENCE, (pANTLR3_UINT8)"TYPE_REFERENCE"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:141:28: ( parameter )*\r
+                       {\r
+                               while ( (stream_parameter != NULL && stream_parameter->hasNext(stream_parameter))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_parameter == NULL ? NULL : stream_parameter->nextTree(stream_parameter));\r
+\r
+                               }\r
+                               if (stream_parameter != NULL) stream_parameter->reset(stream_parameter);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletypeReferenceEx; /* Prevent compiler warnings */\r
+    ruletypeReferenceEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_42 != NULL) stream_42->free(stream_42);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_40 != NULL) stream_40->free(stream_40);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_parameter != NULL) stream_parameter->free(stream_parameter);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end typeReference */\r
+\r
+/** \r
+ * $ANTLR start parameter\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:144:1: parameter : ( ID '=' parameterValue -> ^( TYPE_ANNOTATION ID parameterValue ) | unionType );\r
+ */\r
+static SimanticsDataParser_parameter_return\r
+parameter(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_parameter_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID45;\r
+    pANTLR3_COMMON_TOKEN    char_literal46;\r
+    SimanticsDataParser_parameterValue_return parameterValue47;\r
+    #undef     RETURN_TYPE_parameterValue47\r
+    #define    RETURN_TYPE_parameterValue47 SimanticsDataParser_parameterValue_return\r
+\r
+    SimanticsDataParser_unionType_return unionType48;\r
+    #undef     RETURN_TYPE_unionType48\r
+    #define    RETURN_TYPE_unionType48 SimanticsDataParser_unionType_return\r
+\r
+    pANTLR3_BASE_TREE ID45_tree;\r
+    pANTLR3_BASE_TREE char_literal46_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_35;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_parameterValue;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID45       = NULL;\r
+    char_literal46       = NULL;\r
+    parameterValue47.tree = NULL;\r
+\r
+    unionType48.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID45_tree   = NULL;\r
+    char_literal46_tree   = NULL;\r
+\r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_35   = NULL;\r
+    #define CREATE_stream_35  if (stream_35 == NULL) {stream_35 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 35"); } \r
+    stream_parameterValue   = NULL;\r
+    #define CREATE_stream_parameterValue  if (stream_parameterValue == NULL) {stream_parameterValue = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule parameterValue"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:145:5: ( ID '=' parameterValue -> ^( TYPE_ANNOTATION ID parameterValue ) | unionType )\r
+            \r
+            ANTLR3_UINT32 alt15;\r
+\r
+            alt15=2;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case ID:\r
+               {\r
+                       switch ( LA(2) ) \r
+                       {\r
+                       case 35:\r
+                               {\r
+                                       alt15=1;\r
+                               }\r
+                           break;\r
+                       case 37:\r
+                       case 40:\r
+                       case 41:\r
+                       case 42:\r
+                               {\r
+                                       alt15=2;\r
+                               }\r
+                           break;\r
+\r
+                       default:\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                           EXCEPTION->message      = (void *)"";\r
+                           EXCEPTION->decisionNum  = 15;\r
+                           EXCEPTION->state        = 1;\r
+\r
+\r
+                           goto ruleparameterEx;\r
+                       }\r
+\r
+               }\r
+                break;\r
+            case 36:\r
+            case 40:\r
+            case 43:\r
+               {\r
+                       alt15=2;\r
+               }\r
+                break;\r
+\r
+            default:\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                EXCEPTION->message      = (void *)"";\r
+                EXCEPTION->decisionNum  = 15;\r
+                EXCEPTION->state        = 0;\r
+\r
+\r
+                goto ruleparameterEx;\r
+            }\r
+\r
+            switch (alt15) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:145:7: ID '=' parameterValue\r
+                   {\r
+                       ID45 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_parameter1217); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_ID; stream_ID->add(stream_ID, ID45, NULL);\r
+\r
+                       char_literal46 = (pANTLR3_COMMON_TOKEN) MATCHT(35, &FOLLOW_35_in_parameter1219); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_35; stream_35->add(stream_35, char_literal46, NULL);\r
+\r
+                       FOLLOWPUSH(FOLLOW_parameterValue_in_parameter1221);\r
+                       parameterValue47=parameterValue(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterEx;\r
+                       }\r
+\r
+                       CREATE_stream_parameterValue; stream_parameterValue->add(stream_parameterValue, parameterValue47.tree, NULL);\r
+\r
+                        \r
+                       /* AST REWRITE\r
+                        * elements          : ID, parameterValue\r
+                        * token labels      : \r
+                        * rule labels       : retval\r
+                        * token list labels : \r
+                        * rule list labels  : \r
+                        */\r
+                       {\r
+                               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                               retval.tree    = root_0;\r
+                               // 145:29: -> ^( TYPE_ANNOTATION ID parameterValue )\r
+                               {\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:145:32: ^( TYPE_ANNOTATION ID parameterValue )\r
+                                   {\r
+                                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TYPE_ANNOTATION, (pANTLR3_UINT8)"TYPE_ANNOTATION"), root_1));\r
+\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_parameterValue == NULL ? NULL : stream_parameterValue->nextTree(stream_parameterValue));\r
+\r
+                                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                                   }\r
+\r
+                               }\r
+\r
+                               retval.tree = root_0; // set result root\r
+                               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                       }\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:146:7: unionType\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_unionType_in_parameter1239);\r
+                       unionType48=unionType(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, unionType48.tree);\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleparameterEx; /* Prevent compiler warnings */\r
+    ruleparameterEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_35 != NULL) stream_35->free(stream_35);\r
+        if (stream_parameterValue != NULL) stream_parameterValue->free(stream_parameterValue);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end parameter */\r
+\r
+/** \r
+ * $ANTLR start parameterValue\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:149:1: parameterValue : ( string | boolean | number | ( '[' | '(' ) range ( ']' | ')' ) );\r
+ */\r
+static SimanticsDataParser_parameterValue_return\r
+parameterValue(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_parameterValue_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    set52;\r
+    pANTLR3_COMMON_TOKEN    set54;\r
+    SimanticsDataParser_string_return string49;\r
+    #undef     RETURN_TYPE_string49\r
+    #define    RETURN_TYPE_string49 SimanticsDataParser_string_return\r
+\r
+    SimanticsDataParser_boolean_return boolean50;\r
+    #undef     RETURN_TYPE_boolean50\r
+    #define    RETURN_TYPE_boolean50 SimanticsDataParser_boolean_return\r
+\r
+    SimanticsDataParser_number_return number51;\r
+    #undef     RETURN_TYPE_number51\r
+    #define    RETURN_TYPE_number51 SimanticsDataParser_number_return\r
+\r
+    SimanticsDataParser_range_return range53;\r
+    #undef     RETURN_TYPE_range53\r
+    #define    RETURN_TYPE_range53 SimanticsDataParser_range_return\r
+\r
+    pANTLR3_BASE_TREE set52_tree;\r
+    pANTLR3_BASE_TREE set54_tree;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    set52       = NULL;\r
+    set54       = NULL;\r
+    string49.tree = NULL;\r
+\r
+    boolean50.tree = NULL;\r
+\r
+    number51.tree = NULL;\r
+\r
+    range53.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    set52_tree   = NULL;\r
+    set54_tree   = NULL;\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:150:5: ( string | boolean | number | ( '[' | '(' ) range ( ']' | ')' ) )\r
+            \r
+            ANTLR3_UINT32 alt16;\r
+\r
+            alt16=4;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case STRING:\r
+               {\r
+                       alt16=1;\r
+               }\r
+                break;\r
+            case 46:\r
+            case 47:\r
+               {\r
+                       alt16=2;\r
+               }\r
+                break;\r
+            case INT:\r
+            case FLOAT:\r
+               {\r
+                       alt16=3;\r
+               }\r
+                break;\r
+            case 37:\r
+            case 40:\r
+               {\r
+                       alt16=4;\r
+               }\r
+                break;\r
+\r
+            default:\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;\r
+                EXCEPTION->message      = (void *)"";\r
+                EXCEPTION->decisionNum  = 16;\r
+                EXCEPTION->state        = 0;\r
+\r
+\r
+                goto ruleparameterValueEx;\r
+            }\r
+\r
+            switch (alt16) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:150:7: string\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_string_in_parameterValue1258);\r
+                       string49=string(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string49.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:151:7: boolean\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_boolean_in_parameterValue1266);\r
+                       boolean50=boolean(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, boolean50.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 3:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:152:7: number\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_parameterValue1274);\r
+                       number51=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number51.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 4:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:153:7: ( '[' | '(' ) range ( ']' | ')' )\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       set52=(pANTLR3_COMMON_TOKEN)LT(1);\r
+                       if ( LA(1) == 37 || LA(1) == 40 )\r
+                       {\r
+                           CONSUME();\r
+                           ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set52)));\r
+                           PERRORRECOVERY=ANTLR3_FALSE;\r
+                       }\r
+                       else \r
+                       {\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                           EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+                           EXCEPTION->expectingSet = &FOLLOW_set_in_parameterValue1282;\r
+                           RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_parameterValue1282);    goto ruleparameterValueEx;\r
+                       }\r
+\r
+                       FOLLOWPUSH(FOLLOW_range_in_parameterValue1290);\r
+                       range53=range(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruleparameterValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, range53.tree);\r
+                       set54=(pANTLR3_COMMON_TOKEN)LT(1);\r
+                       if ( LA(1) == 38 || LA(1) == 42 )\r
+                       {\r
+                           CONSUME();\r
+                           ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set54)));\r
+                           PERRORRECOVERY=ANTLR3_FALSE;\r
+                       }\r
+                       else \r
+                       {\r
+                           CONSTRUCTEX();\r
+                           EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                           EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+                           EXCEPTION->expectingSet = &FOLLOW_set_in_parameterValue1292;\r
+                           RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_parameterValue1292);    goto ruleparameterValueEx;\r
+                       }\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruleparameterValueEx; /* Prevent compiler warnings */\r
+    ruleparameterValueEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end parameterValue */\r
+\r
+/** \r
+ * $ANTLR start range\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:156:1: range : ( number | number '..' | '..' number | number '..' number );\r
+ */\r
+static SimanticsDataParser_range_return\r
+range(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_range_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    string_literal57;\r
+    pANTLR3_COMMON_TOKEN    string_literal58;\r
+    pANTLR3_COMMON_TOKEN    string_literal61;\r
+    SimanticsDataParser_number_return number55;\r
+    #undef     RETURN_TYPE_number55\r
+    #define    RETURN_TYPE_number55 SimanticsDataParser_number_return\r
+\r
+    SimanticsDataParser_number_return number56;\r
+    #undef     RETURN_TYPE_number56\r
+    #define    RETURN_TYPE_number56 SimanticsDataParser_number_return\r
+\r
+    SimanticsDataParser_number_return number59;\r
+    #undef     RETURN_TYPE_number59\r
+    #define    RETURN_TYPE_number59 SimanticsDataParser_number_return\r
+\r
+    SimanticsDataParser_number_return number60;\r
+    #undef     RETURN_TYPE_number60\r
+    #define    RETURN_TYPE_number60 SimanticsDataParser_number_return\r
+\r
+    SimanticsDataParser_number_return number62;\r
+    #undef     RETURN_TYPE_number62\r
+    #define    RETURN_TYPE_number62 SimanticsDataParser_number_return\r
+\r
+    pANTLR3_BASE_TREE string_literal57_tree;\r
+    pANTLR3_BASE_TREE string_literal58_tree;\r
+    pANTLR3_BASE_TREE string_literal61_tree;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    string_literal57       = NULL;\r
+    string_literal58       = NULL;\r
+    string_literal61       = NULL;\r
+    number55.tree = NULL;\r
+\r
+    number56.tree = NULL;\r
+\r
+    number59.tree = NULL;\r
+\r
+    number60.tree = NULL;\r
+\r
+    number62.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    string_literal57_tree   = NULL;\r
+    string_literal58_tree   = NULL;\r
+    string_literal61_tree   = NULL;\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:157:5: ( number | number '..' | '..' number | number '..' number )\r
+            \r
+            ANTLR3_UINT32 alt17;\r
+\r
+            alt17=4;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case INT:\r
+            case FLOAT:\r
+               {\r
+                       switch ( LA(2) ) \r
+                       {\r
+                       case 39:\r
+                               {\r
+                                       switch ( LA(3) ) \r
+                                       {\r
+                                       case INT:\r
+                                       case FLOAT:\r
+                                               {\r
+                                                       alt17=4;\r
+                                               }\r
+                                           break;\r
+                                       case 38:\r
+                                       case 42:\r
+                                               {\r
+                                                       alt17=2;\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        = 3;\r
+\r
+\r
+                                           goto rulerangeEx;\r
+                                       }\r
+\r
+                               }\r
+                           break;\r
+                       case 38:\r
+                       case 42:\r
+                               {\r
+                                       alt17=1;\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        = 1;\r
+\r
+\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+               }\r
+                break;\r
+            case 39:\r
+               {\r
+                       alt17=3;\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 rulerangeEx;\r
+            }\r
+\r
+            switch (alt17) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:157:7: number\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_range1319);\r
+                       number55=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number55.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:158:7: number '..'\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_range1327);\r
+                       number56=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number56.tree);\r
+                       string_literal57 = (pANTLR3_COMMON_TOKEN) MATCHT(39, &FOLLOW_39_in_range1329); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       string_literal57_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, string_literal57));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string_literal57_tree);\r
+\r
+\r
+                   }\r
+                   break;\r
+               case 3:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:159:7: '..' number\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       string_literal58 = (pANTLR3_COMMON_TOKEN) MATCHT(39, &FOLLOW_39_in_range1337); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       string_literal58_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, string_literal58));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string_literal58_tree);\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_range1339);\r
+                       number59=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number59.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 4:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:160:7: number '..' number\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_range1348);\r
+                       number60=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number60.tree);\r
+                       string_literal61 = (pANTLR3_COMMON_TOKEN) MATCHT(39, &FOLLOW_39_in_range1350); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       string_literal61_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, string_literal61));\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string_literal61_tree);\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_range1352);\r
+                       number62=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerangeEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number62.tree);\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulerangeEx; /* Prevent compiler warnings */\r
+    rulerangeEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end range */\r
+\r
+/** \r
+ * $ANTLR start number\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:163:1: number : ( INT | FLOAT );\r
+ */\r
+static SimanticsDataParser_number_return\r
+number(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_number_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    set63;\r
+\r
+    pANTLR3_BASE_TREE set63_tree;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    set63       = NULL;\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    set63_tree   = NULL;\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:164:5: ( INT | FLOAT )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:\r
+        {\r
+            root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+            set63=(pANTLR3_COMMON_TOKEN)LT(1);\r
+            if ( LA(1) == INT || LA(1) == FLOAT )\r
+            {\r
+                CONSUME();\r
+                ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set63)));\r
+                PERRORRECOVERY=ANTLR3_FALSE;\r
+            }\r
+            else \r
+            {\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+                EXCEPTION->expectingSet = &FOLLOW_set_in_number0;\r
+                RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_number0);    goto rulenumberEx;\r
+            }\r
+\r
+\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulenumberEx; /* Prevent compiler warnings */\r
+    rulenumberEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end number */\r
+\r
+/** \r
+ * $ANTLR start string\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:168:1: string : STRING ;\r
+ */\r
+static SimanticsDataParser_string_return\r
+string(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_string_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    STRING64;\r
+\r
+    pANTLR3_BASE_TREE STRING64_tree;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    STRING64       = NULL;\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    STRING64_tree   = NULL;\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:169:5: ( STRING )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:169:7: STRING\r
+        {\r
+            root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+            STRING64 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING, &FOLLOW_STRING_in_string1402); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulestringEx;\r
+            }\r
+\r
+            STRING64_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, STRING64));\r
+            ADAPTOR->addChild(ADAPTOR, root_0, STRING64_tree);\r
+\r
+\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulestringEx; /* Prevent compiler warnings */\r
+    rulestringEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end string */\r
+\r
+/** \r
+ * $ANTLR start boolean\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:172:1: boolean : ( 'true' | 'false' );\r
+ */\r
+static SimanticsDataParser_boolean_return\r
+boolean(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_boolean_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    set65;\r
+\r
+    pANTLR3_BASE_TREE set65_tree;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    set65       = NULL;\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    set65_tree   = NULL;\r
+\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:173:5: ( 'true' | 'false' )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:\r
+        {\r
+            root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+            set65=(pANTLR3_COMMON_TOKEN)LT(1);\r
+            if ( ((LA(1) >= 46) && (LA(1) <= 47)) )\r
+            {\r
+                CONSUME();\r
+                ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set65)));\r
+                PERRORRECOVERY=ANTLR3_FALSE;\r
+            }\r
+            else \r
+            {\r
+                CONSTRUCTEX();\r
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;\r
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;\r
+                EXCEPTION->expectingSet = &FOLLOW_set_in_boolean0;\r
+                RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_boolean0);    goto rulebooleanEx;\r
+            }\r
+\r
+\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulebooleanEx; /* Prevent compiler warnings */\r
+    rulebooleanEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end boolean */\r
+\r
+/** \r
+ * $ANTLR start valueDefinitions\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:1: valueDefinitions : ( valueDefinition )* -> ^( VALUE_DEFINITIONS ( valueDefinition )* ) ;\r
+ */\r
+static SimanticsDataParser_valueDefinitions_return\r
+valueDefinitions(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_valueDefinitions_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    SimanticsDataParser_valueDefinition_return valueDefinition66;\r
+    #undef     RETURN_TYPE_valueDefinition66\r
+    #define    RETURN_TYPE_valueDefinition66 SimanticsDataParser_valueDefinition_return\r
+\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_valueDefinition;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    valueDefinition66.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+\r
+    stream_valueDefinition   = NULL;\r
+    #define CREATE_stream_valueDefinition  if (stream_valueDefinition == NULL) {stream_valueDefinition = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule valueDefinition"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:18: ( ( valueDefinition )* -> ^( VALUE_DEFINITIONS ( valueDefinition )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:20: ( valueDefinition )*\r
+        {\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:20: ( valueDefinition )*\r
+\r
+            for (;;)\r
+            {\r
+                int alt18=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                case ID:\r
+                       {\r
+                               alt18=1;\r
+                       }\r
+                    break;\r
+\r
+                }\r
+\r
+                switch (alt18) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:20: valueDefinition\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_valueDefinition_in_valueDefinitions1447);\r
+                       valueDefinition66=valueDefinition(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulevalueDefinitionsEx;\r
+                       }\r
+\r
+                       CREATE_stream_valueDefinition; stream_valueDefinition->add(stream_valueDefinition, valueDefinition66.tree, NULL);\r
+\r
+                   }\r
+                   break;\r
+\r
+               default:\r
+                   goto loop18;        /* break out of the loop */\r
+                   break;\r
+                }\r
+            }\r
+            loop18: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : valueDefinition\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 181:37: -> ^( VALUE_DEFINITIONS ( valueDefinition )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:40: ^( VALUE_DEFINITIONS ( valueDefinition )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, VALUE_DEFINITIONS, (pANTLR3_UINT8)"VALUE_DEFINITIONS"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:181:60: ( valueDefinition )*\r
+                       {\r
+                               while ( (stream_valueDefinition != NULL && stream_valueDefinition->hasNext(stream_valueDefinition))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_valueDefinition == NULL ? NULL : stream_valueDefinition->nextTree(stream_valueDefinition));\r
+\r
+                               }\r
+                               if (stream_valueDefinition != NULL) stream_valueDefinition->reset(stream_valueDefinition);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulevalueDefinitionsEx; /* Prevent compiler warnings */\r
+    rulevalueDefinitionsEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_valueDefinition != NULL) stream_valueDefinition->free(stream_valueDefinition);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end valueDefinitions */\r
+\r
+/** \r
+ * $ANTLR start valueDefinition\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:183:1: valueDefinition : ID ':' unionType '=' value -> ^( VALUE_DEFINITION ID unionType value ) ;\r
+ */\r
+static SimanticsDataParser_valueDefinition_return\r
+valueDefinition(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_valueDefinition_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID67;\r
+    pANTLR3_COMMON_TOKEN    char_literal68;\r
+    pANTLR3_COMMON_TOKEN    char_literal70;\r
+    SimanticsDataParser_unionType_return unionType69;\r
+    #undef     RETURN_TYPE_unionType69\r
+    #define    RETURN_TYPE_unionType69 SimanticsDataParser_unionType_return\r
+\r
+    SimanticsDataParser_value_return value71;\r
+    #undef     RETURN_TYPE_value71\r
+    #define    RETURN_TYPE_value71 SimanticsDataParser_value_return\r
+\r
+    pANTLR3_BASE_TREE ID67_tree;\r
+    pANTLR3_BASE_TREE char_literal68_tree;\r
+    pANTLR3_BASE_TREE char_literal70_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_45;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_35;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_unionType;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_value;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID67       = NULL;\r
+    char_literal68       = NULL;\r
+    char_literal70       = NULL;\r
+    unionType69.tree = NULL;\r
+\r
+    value71.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID67_tree   = NULL;\r
+    char_literal68_tree   = NULL;\r
+    char_literal70_tree   = NULL;\r
+\r
+    stream_45   = NULL;\r
+    #define CREATE_stream_45  if (stream_45 == NULL) {stream_45 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 45"); } \r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_35   = NULL;\r
+    #define CREATE_stream_35  if (stream_35 == NULL) {stream_35 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 35"); } \r
+    stream_unionType   = NULL;\r
+    #define CREATE_stream_unionType  if (stream_unionType == NULL) {stream_unionType = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule unionType"); }\r
+    stream_value   = NULL;\r
+    #define CREATE_stream_value  if (stream_value == NULL) {stream_value = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule value"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:184:5: ( ID ':' unionType '=' value -> ^( VALUE_DEFINITION ID unionType value ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:184:7: ID ':' unionType '=' value\r
+        {\r
+            ID67 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_valueDefinition1470); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulevalueDefinitionEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID67, NULL);\r
+\r
+            char_literal68 = (pANTLR3_COMMON_TOKEN) MATCHT(45, &FOLLOW_45_in_valueDefinition1472); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulevalueDefinitionEx;\r
+            }\r
+             \r
+            CREATE_stream_45; stream_45->add(stream_45, char_literal68, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_unionType_in_valueDefinition1474);\r
+            unionType69=unionType(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulevalueDefinitionEx;\r
+            }\r
+\r
+            CREATE_stream_unionType; stream_unionType->add(stream_unionType, unionType69.tree, NULL);\r
+            char_literal70 = (pANTLR3_COMMON_TOKEN) MATCHT(35, &FOLLOW_35_in_valueDefinition1476); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulevalueDefinitionEx;\r
+            }\r
+             \r
+            CREATE_stream_35; stream_35->add(stream_35, char_literal70, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_value_in_valueDefinition1478);\r
+            value71=value(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulevalueDefinitionEx;\r
+            }\r
+\r
+            CREATE_stream_value; stream_value->add(stream_value, value71.tree, NULL);\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : value, unionType, ID\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 185:5: -> ^( VALUE_DEFINITION ID unionType value )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:185:8: ^( VALUE_DEFINITION ID unionType value )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, VALUE_DEFINITION, (pANTLR3_UINT8)"VALUE_DEFINITION"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_unionType == NULL ? NULL : stream_unionType->nextTree(stream_unionType));\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_value == NULL ? NULL : stream_value->nextTree(stream_value));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulevalueDefinitionEx; /* Prevent compiler warnings */\r
+    rulevalueDefinitionEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_45 != NULL) stream_45->free(stream_45);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_35 != NULL) stream_35->free(stream_35);\r
+        if (stream_unionType != NULL) stream_unionType->free(stream_unionType);\r
+        if (stream_value != NULL) stream_value->free(stream_value);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end valueDefinition */\r
+\r
+/** \r
+ * $ANTLR start value\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:188:1: value : ( basicValue -> basicValue ) ( ':' type -> ^( VARIANT type $value) )* ;\r
+ */\r
+static SimanticsDataParser_value_return\r
+value(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_value_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal73;\r
+    SimanticsDataParser_basicValue_return basicValue72;\r
+    #undef     RETURN_TYPE_basicValue72\r
+    #define    RETURN_TYPE_basicValue72 SimanticsDataParser_basicValue_return\r
+\r
+    SimanticsDataParser_type_return type74;\r
+    #undef     RETURN_TYPE_type74\r
+    #define    RETURN_TYPE_type74 SimanticsDataParser_type_return\r
+\r
+    pANTLR3_BASE_TREE char_literal73_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_45;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_basicValue;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_type;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal73       = NULL;\r
+    basicValue72.tree = NULL;\r
+\r
+    type74.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal73_tree   = NULL;\r
+\r
+    stream_45   = NULL;\r
+    #define CREATE_stream_45  if (stream_45 == NULL) {stream_45 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 45"); } \r
+    stream_basicValue   = NULL;\r
+    #define CREATE_stream_basicValue  if (stream_basicValue == NULL) {stream_basicValue = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule basicValue"); }\r
+    stream_type   = NULL;\r
+    #define CREATE_stream_type  if (stream_type == NULL) {stream_type = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule type"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:189:5: ( ( basicValue -> basicValue ) ( ':' type -> ^( VARIANT type $value) )* )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:189:7: ( basicValue -> basicValue ) ( ':' type -> ^( VARIANT type $value) )*\r
+        {\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:189:7: ( basicValue -> basicValue )\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:189:8: basicValue\r
+            {\r
+                FOLLOWPUSH(FOLLOW_basicValue_in_value1514);\r
+                basicValue72=basicValue(ctx);\r
+\r
+                FOLLOWPOP();\r
+                if  (HASEXCEPTION())\r
+                {\r
+                    goto rulevalueEx;\r
+                }\r
+\r
+                CREATE_stream_basicValue; stream_basicValue->add(stream_basicValue, basicValue72.tree, NULL);\r
+\r
+                 \r
+                /* AST REWRITE\r
+                 * elements          : basicValue\r
+                 * token labels      : \r
+                 * rule labels       : retval\r
+                 * token list labels : \r
+                 * rule list labels  : \r
+                 */\r
+                {\r
+                       pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                       stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                       root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       retval.tree    = root_0;\r
+                       // 189:19: -> basicValue\r
+                       {\r
+                           ADAPTOR->addChild(ADAPTOR, root_0, stream_basicValue == NULL ? NULL : stream_basicValue->nextTree(stream_basicValue));\r
+\r
+                       }\r
+\r
+                       retval.tree = root_0; // set result root\r
+                       if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                }\r
+            }\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:190:7: ( ':' type -> ^( VARIANT type $value) )*\r
+\r
+            for (;;)\r
+            {\r
+                int alt19=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                case 45:\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:190:8: ':' type\r
+                   {\r
+                       char_literal73 = (pANTLR3_COMMON_TOKEN) MATCHT(45, &FOLLOW_45_in_value1528); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulevalueEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_45; stream_45->add(stream_45, char_literal73, NULL);\r
+\r
+                       FOLLOWPUSH(FOLLOW_type_in_value1530);\r
+                       type74=type(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulevalueEx;\r
+                       }\r
+\r
+                       CREATE_stream_type; stream_type->add(stream_type, type74.tree, NULL);\r
+\r
+                        \r
+                       /* AST REWRITE\r
+                        * elements          : value, type\r
+                        * token labels      : \r
+                        * rule labels       : retval\r
+                        * token list labels : \r
+                        * rule list labels  : \r
+                        */\r
+                       {\r
+                               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                               retval.tree    = root_0;\r
+                               // 190:17: -> ^( VARIANT type $value)\r
+                               {\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:190:20: ^( VARIANT type $value)\r
+                                   {\r
+                                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, VARIANT, (pANTLR3_UINT8)"VARIANT"), root_1));\r
+\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_type == NULL ? NULL : stream_type->nextTree(stream_type));\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_retval == NULL ? NULL : stream_retval->nextTree(stream_retval));\r
+\r
+                                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                                   }\r
+\r
+                               }\r
+\r
+                               retval.tree = root_0; // set result root\r
+                               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                       }\r
+                   }\r
+                   break;\r
+\r
+               default:\r
+                   goto loop19;        /* break out of the loop */\r
+                   break;\r
+                }\r
+            }\r
+            loop19: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulevalueEx; /* Prevent compiler warnings */\r
+    rulevalueEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_45 != NULL) stream_45->free(stream_45);\r
+        if (stream_basicValue != NULL) stream_basicValue->free(stream_basicValue);\r
+        if (stream_type != NULL) stream_type->free(stream_type);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end value */\r
+\r
+/** \r
+ * $ANTLR start basicValue\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:193:1: basicValue : ( 'null' -> NO_VALUE | string | number | boolean | array | tuple | taggedValue | map | record );\r
+ */\r
+static SimanticsDataParser_basicValue_return\r
+basicValue(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_basicValue_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    string_literal75;\r
+    SimanticsDataParser_string_return string76;\r
+    #undef     RETURN_TYPE_string76\r
+    #define    RETURN_TYPE_string76 SimanticsDataParser_string_return\r
+\r
+    SimanticsDataParser_number_return number77;\r
+    #undef     RETURN_TYPE_number77\r
+    #define    RETURN_TYPE_number77 SimanticsDataParser_number_return\r
+\r
+    SimanticsDataParser_boolean_return boolean78;\r
+    #undef     RETURN_TYPE_boolean78\r
+    #define    RETURN_TYPE_boolean78 SimanticsDataParser_boolean_return\r
+\r
+    SimanticsDataParser_array_return array79;\r
+    #undef     RETURN_TYPE_array79\r
+    #define    RETURN_TYPE_array79 SimanticsDataParser_array_return\r
+\r
+    SimanticsDataParser_tuple_return tuple80;\r
+    #undef     RETURN_TYPE_tuple80\r
+    #define    RETURN_TYPE_tuple80 SimanticsDataParser_tuple_return\r
+\r
+    SimanticsDataParser_taggedValue_return taggedValue81;\r
+    #undef     RETURN_TYPE_taggedValue81\r
+    #define    RETURN_TYPE_taggedValue81 SimanticsDataParser_taggedValue_return\r
+\r
+    SimanticsDataParser_map_return map82;\r
+    #undef     RETURN_TYPE_map82\r
+    #define    RETURN_TYPE_map82 SimanticsDataParser_map_return\r
+\r
+    SimanticsDataParser_record_return record83;\r
+    #undef     RETURN_TYPE_record83\r
+    #define    RETURN_TYPE_record83 SimanticsDataParser_record_return\r
+\r
+    pANTLR3_BASE_TREE string_literal75_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_48;\r
+\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    string_literal75       = NULL;\r
+    string76.tree = NULL;\r
+\r
+    number77.tree = NULL;\r
+\r
+    boolean78.tree = NULL;\r
+\r
+    array79.tree = NULL;\r
+\r
+    tuple80.tree = NULL;\r
+\r
+    taggedValue81.tree = NULL;\r
+\r
+    map82.tree = NULL;\r
+\r
+    record83.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    string_literal75_tree   = NULL;\r
+\r
+    stream_48   = NULL;\r
+    #define CREATE_stream_48  if (stream_48 == NULL) {stream_48 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 48"); } \r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        {\r
+            //  C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:194:5: ( 'null' -> NO_VALUE | string | number | boolean | array | tuple | taggedValue | map | record )\r
+            \r
+            ANTLR3_UINT32 alt20;\r
+\r
+            alt20=9;\r
+\r
+            switch ( LA(1) ) \r
+            {\r
+            case 48:\r
+               {\r
+                       alt20=1;\r
+               }\r
+                break;\r
+            case STRING:\r
+               {\r
+                       alt20=2;\r
+               }\r
+                break;\r
+            case INT:\r
+            case FLOAT:\r
+               {\r
+                       alt20=3;\r
+               }\r
+                break;\r
+            case 46:\r
+            case 47:\r
+               {\r
+                       alt20=4;\r
+               }\r
+                break;\r
+            case 37:\r
+               {\r
+                       alt20=5;\r
+               }\r
+                break;\r
+            case 40:\r
+               {\r
+                       alt20=6;\r
+               }\r
+                break;\r
+            case ID:\r
+               {\r
+                       alt20=7;\r
+               }\r
+                break;\r
+            case 49:\r
+               {\r
+                       alt20=8;\r
+               }\r
+                break;\r
+            case 43:\r
+               {\r
+                       alt20=9;\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 rulebasicValueEx;\r
+            }\r
+\r
+            switch (alt20) \r
+            {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:194:7: 'null'\r
+                   {\r
+                       string_literal75 = (pANTLR3_COMMON_TOKEN) MATCHT(48, &FOLLOW_48_in_basicValue1562); \r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+                        \r
+                       CREATE_stream_48; stream_48->add(stream_48, string_literal75, NULL);\r
+\r
+\r
+                        \r
+                       /* AST REWRITE\r
+                        * elements          : \r
+                        * token labels      : \r
+                        * rule labels       : retval\r
+                        * token list labels : \r
+                        * rule list labels  : \r
+                        */\r
+                       {\r
+                               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+                               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+                               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                               retval.tree    = root_0;\r
+                               // 194:14: -> NO_VALUE\r
+                               {\r
+                                   ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, NO_VALUE, (pANTLR3_UINT8)"NO_VALUE"));\r
+\r
+                               }\r
+\r
+                               retval.tree = root_0; // set result root\r
+                               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+                       }\r
+                   }\r
+                   break;\r
+               case 2:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:195:7: string\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_string_in_basicValue1574);\r
+                       string76=string(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, string76.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 3:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:196:7: number\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_number_in_basicValue1582);\r
+                       number77=number(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, number77.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 4:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:197:7: boolean\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_boolean_in_basicValue1590);\r
+                       boolean78=boolean(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, boolean78.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 5:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:198:7: array\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_array_in_basicValue1598);\r
+                       array79=array(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, array79.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 6:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:199:7: tuple\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_tuple_in_basicValue1606);\r
+                       tuple80=tuple(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, tuple80.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 7:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:200:7: taggedValue\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_taggedValue_in_basicValue1614);\r
+                       taggedValue81=taggedValue(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, taggedValue81.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 8:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:201:7: map\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_map_in_basicValue1622);\r
+                       map82=map(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, map82.tree);\r
+\r
+                   }\r
+                   break;\r
+               case 9:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:202:7: record\r
+                   {\r
+                       root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+\r
+                       FOLLOWPUSH(FOLLOW_record_in_basicValue1630);\r
+                       record83=record(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulebasicValueEx;\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, record83.tree);\r
+\r
+                   }\r
+                   break;\r
+\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulebasicValueEx; /* Prevent compiler warnings */\r
+    rulebasicValueEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_48 != NULL) stream_48->free(stream_48);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end basicValue */\r
+\r
+/** \r
+ * $ANTLR start array\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:205:1: array : '[' ( value ( ',' value )* )? ']' -> ^( ARRAY ( value )* ) ;\r
+ */\r
+static SimanticsDataParser_array_return\r
+array(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_array_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal84;\r
+    pANTLR3_COMMON_TOKEN    char_literal86;\r
+    pANTLR3_COMMON_TOKEN    char_literal88;\r
+    SimanticsDataParser_value_return value85;\r
+    #undef     RETURN_TYPE_value85\r
+    #define    RETURN_TYPE_value85 SimanticsDataParser_value_return\r
+\r
+    SimanticsDataParser_value_return value87;\r
+    #undef     RETURN_TYPE_value87\r
+    #define    RETURN_TYPE_value87 SimanticsDataParser_value_return\r
+\r
+    pANTLR3_BASE_TREE char_literal84_tree;\r
+    pANTLR3_BASE_TREE char_literal86_tree;\r
+    pANTLR3_BASE_TREE char_literal88_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_37;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_38;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_value;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal84       = NULL;\r
+    char_literal86       = NULL;\r
+    char_literal88       = NULL;\r
+    value85.tree = NULL;\r
+\r
+    value87.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal84_tree   = NULL;\r
+    char_literal86_tree   = NULL;\r
+    char_literal88_tree   = NULL;\r
+\r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_37   = NULL;\r
+    #define CREATE_stream_37  if (stream_37 == NULL) {stream_37 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 37"); } \r
+    stream_38   = NULL;\r
+    #define CREATE_stream_38  if (stream_38 == NULL) {stream_38 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 38"); } \r
+    stream_value   = NULL;\r
+    #define CREATE_stream_value  if (stream_value == NULL) {stream_value = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule value"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:206:5: ( '[' ( value ( ',' value )* )? ']' -> ^( ARRAY ( value )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:206:7: '[' ( value ( ',' value )* )? ']'\r
+        {\r
+            char_literal84 = (pANTLR3_COMMON_TOKEN) MATCHT(37, &FOLLOW_37_in_array1648); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulearrayEx;\r
+            }\r
+             \r
+            CREATE_stream_37; stream_37->add(stream_37, char_literal84, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:206:11: ( value ( ',' value )* )?\r
+            {\r
+                int alt22=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\r
+                    case INT:\r
+                    case FLOAT:\r
+                    case STRING:\r
+                    case 37:\r
+                    case 40:\r
+                    case 43:\r
+                    case 46:\r
+                    case 47:\r
+                    case 48:\r
+                    case 49:\r
+                       {\r
+                               alt22=1;\r
+                       }\r
+                        break;\r
+                }\r
+\r
+                switch (alt22) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:206:12: value ( ',' value )*\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_value_in_array1651);\r
+                       value85=value(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulearrayEx;\r
+                       }\r
+\r
+                       CREATE_stream_value; stream_value->add(stream_value, value85.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:206:18: ( ',' value )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt21=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\r
+                               {\r
+                                       alt21=1;\r
+                               }\r
+                               break;\r
+\r
+                           }\r
+\r
+                           switch (alt21) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:206:19: ',' value\r
+                                   {\r
+                                       char_literal86 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_array1654); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulearrayEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal86, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_value_in_array1656);\r
+                                       value87=value(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulearrayEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_value; stream_value->add(stream_value, value87.tree, NULL);\r
+\r
+                                   }\r
+                                   break;\r
+\r
+                               default:\r
+                                   goto loop21;        /* break out of the loop */\r
+                                   break;\r
+                           }\r
+                       }\r
+                       loop21: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+            char_literal88 = (pANTLR3_COMMON_TOKEN) MATCHT(38, &FOLLOW_38_in_array1662); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulearrayEx;\r
+            }\r
+             \r
+            CREATE_stream_38; stream_38->add(stream_38, char_literal88, NULL);\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : value\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 207:5: -> ^( ARRAY ( value )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:207:8: ^( ARRAY ( value )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, ARRAY, (pANTLR3_UINT8)"ARRAY"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:207:16: ( value )*\r
+                       {\r
+                               while ( (stream_value != NULL && stream_value->hasNext(stream_value))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_value == NULL ? NULL : stream_value->nextTree(stream_value));\r
+\r
+                               }\r
+                               if (stream_value != NULL) stream_value->reset(stream_value);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulearrayEx; /* Prevent compiler warnings */\r
+    rulearrayEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_37 != NULL) stream_37->free(stream_37);\r
+        if (stream_38 != NULL) stream_38->free(stream_38);\r
+        if (stream_value != NULL) stream_value->free(stream_value);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end array */\r
+\r
+/** \r
+ * $ANTLR start tuple\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:210:1: tuple : '(' ( value ( ',' value )* )? ')' -> ^( TUPLE ( value )* ) ;\r
+ */\r
+static SimanticsDataParser_tuple_return\r
+tuple(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_tuple_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal89;\r
+    pANTLR3_COMMON_TOKEN    char_literal91;\r
+    pANTLR3_COMMON_TOKEN    char_literal93;\r
+    SimanticsDataParser_value_return value90;\r
+    #undef     RETURN_TYPE_value90\r
+    #define    RETURN_TYPE_value90 SimanticsDataParser_value_return\r
+\r
+    SimanticsDataParser_value_return value92;\r
+    #undef     RETURN_TYPE_value92\r
+    #define    RETURN_TYPE_value92 SimanticsDataParser_value_return\r
+\r
+    pANTLR3_BASE_TREE char_literal89_tree;\r
+    pANTLR3_BASE_TREE char_literal91_tree;\r
+    pANTLR3_BASE_TREE char_literal93_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_42;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_40;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_value;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal89       = NULL;\r
+    char_literal91       = NULL;\r
+    char_literal93       = NULL;\r
+    value90.tree = NULL;\r
+\r
+    value92.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal89_tree   = NULL;\r
+    char_literal91_tree   = NULL;\r
+    char_literal93_tree   = NULL;\r
+\r
+    stream_42   = NULL;\r
+    #define CREATE_stream_42  if (stream_42 == NULL) {stream_42 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 42"); } \r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_40   = NULL;\r
+    #define CREATE_stream_40  if (stream_40 == NULL) {stream_40 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 40"); } \r
+    stream_value   = NULL;\r
+    #define CREATE_stream_value  if (stream_value == NULL) {stream_value = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule value"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:211:5: ( '(' ( value ( ',' value )* )? ')' -> ^( TUPLE ( value )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:211:7: '(' ( value ( ',' value )* )? ')'\r
+        {\r
+            char_literal89 = (pANTLR3_COMMON_TOKEN) MATCHT(40, &FOLLOW_40_in_tuple1694); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletupleEx;\r
+            }\r
+             \r
+            CREATE_stream_40; stream_40->add(stream_40, char_literal89, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:211:11: ( value ( ',' value )* )?\r
+            {\r
+                int alt24=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\r
+                    case INT:\r
+                    case FLOAT:\r
+                    case STRING:\r
+                    case 37:\r
+                    case 40:\r
+                    case 43:\r
+                    case 46:\r
+                    case 47:\r
+                    case 48:\r
+                    case 49:\r
+                       {\r
+                               alt24=1;\r
+                       }\r
+                        break;\r
+                }\r
+\r
+                switch (alt24) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:211:12: value ( ',' value )*\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_value_in_tuple1697);\r
+                       value90=value(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto ruletupleEx;\r
+                       }\r
+\r
+                       CREATE_stream_value; stream_value->add(stream_value, value90.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:211:18: ( ',' value )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt23=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\r
+                               {\r
+                                       alt23=1;\r
+                               }\r
+                               break;\r
+\r
+                           }\r
+\r
+                           switch (alt23) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:211:19: ',' value\r
+                                   {\r
+                                       char_literal91 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_tuple1700); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletupleEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal91, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_value_in_tuple1702);\r
+                                       value92=value(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto ruletupleEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_value; stream_value->add(stream_value, value92.tree, NULL);\r
+\r
+                                   }\r
+                                   break;\r
+\r
+                               default:\r
+                                   goto loop23;        /* break out of the loop */\r
+                                   break;\r
+                           }\r
+                       }\r
+                       loop23: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+            char_literal93 = (pANTLR3_COMMON_TOKEN) MATCHT(42, &FOLLOW_42_in_tuple1708); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletupleEx;\r
+            }\r
+             \r
+            CREATE_stream_42; stream_42->add(stream_42, char_literal93, NULL);\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : value\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 212:5: -> ^( TUPLE ( value )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:212:8: ^( TUPLE ( value )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TUPLE, (pANTLR3_UINT8)"TUPLE"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:212:16: ( value )*\r
+                       {\r
+                               while ( (stream_value != NULL && stream_value->hasNext(stream_value))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_value == NULL ? NULL : stream_value->nextTree(stream_value));\r
+\r
+                               }\r
+                               if (stream_value != NULL) stream_value->reset(stream_value);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletupleEx; /* Prevent compiler warnings */\r
+    ruletupleEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_42 != NULL) stream_42->free(stream_42);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_40 != NULL) stream_40->free(stream_40);\r
+        if (stream_value != NULL) stream_value->free(stream_value);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end tuple */\r
+\r
+/** \r
+ * $ANTLR start taggedValue\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:215:1: taggedValue : ID basicValue -> ^( TAGGED_VALUE ID basicValue ) ;\r
+ */\r
+static SimanticsDataParser_taggedValue_return\r
+taggedValue(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_taggedValue_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID94;\r
+    SimanticsDataParser_basicValue_return basicValue95;\r
+    #undef     RETURN_TYPE_basicValue95\r
+    #define    RETURN_TYPE_basicValue95 SimanticsDataParser_basicValue_return\r
+\r
+    pANTLR3_BASE_TREE ID94_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_basicValue;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID94       = NULL;\r
+    basicValue95.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID94_tree   = NULL;\r
+\r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_basicValue   = NULL;\r
+    #define CREATE_stream_basicValue  if (stream_basicValue == NULL) {stream_basicValue = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule basicValue"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:216:5: ( ID basicValue -> ^( TAGGED_VALUE ID basicValue ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:216:7: ID basicValue\r
+        {\r
+            ID94 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_taggedValue1740); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletaggedValueEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID94, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_basicValue_in_taggedValue1742);\r
+            basicValue95=basicValue(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto ruletaggedValueEx;\r
+            }\r
+\r
+            CREATE_stream_basicValue; stream_basicValue->add(stream_basicValue, basicValue95.tree, NULL);\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : basicValue, ID\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 217:5: -> ^( TAGGED_VALUE ID basicValue )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:217:8: ^( TAGGED_VALUE ID basicValue )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, TAGGED_VALUE, (pANTLR3_UINT8)"TAGGED_VALUE"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_basicValue == NULL ? NULL : stream_basicValue->nextTree(stream_basicValue));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto ruletaggedValueEx; /* Prevent compiler warnings */\r
+    ruletaggedValueEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_basicValue != NULL) stream_basicValue->free(stream_basicValue);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end taggedValue */\r
+\r
+/** \r
+ * $ANTLR start record\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:220:1: record : '{' ( recordAssignment ( ',' recordAssignment )* )? '}' -> ^( RECORD ( recordAssignment )* ) ;\r
+ */\r
+static SimanticsDataParser_record_return\r
+record(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_record_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal96;\r
+    pANTLR3_COMMON_TOKEN    char_literal98;\r
+    pANTLR3_COMMON_TOKEN    char_literal100;\r
+    SimanticsDataParser_recordAssignment_return recordAssignment97;\r
+    #undef     RETURN_TYPE_recordAssignment97\r
+    #define    RETURN_TYPE_recordAssignment97 SimanticsDataParser_recordAssignment_return\r
+\r
+    SimanticsDataParser_recordAssignment_return recordAssignment99;\r
+    #undef     RETURN_TYPE_recordAssignment99\r
+    #define    RETURN_TYPE_recordAssignment99 SimanticsDataParser_recordAssignment_return\r
+\r
+    pANTLR3_BASE_TREE char_literal96_tree;\r
+    pANTLR3_BASE_TREE char_literal98_tree;\r
+    pANTLR3_BASE_TREE char_literal100_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_43;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_44;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_recordAssignment;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal96       = NULL;\r
+    char_literal98       = NULL;\r
+    char_literal100       = NULL;\r
+    recordAssignment97.tree = NULL;\r
+\r
+    recordAssignment99.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal96_tree   = NULL;\r
+    char_literal98_tree   = NULL;\r
+    char_literal100_tree   = NULL;\r
+\r
+    stream_43   = NULL;\r
+    #define CREATE_stream_43  if (stream_43 == NULL) {stream_43 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 43"); } \r
+    stream_44   = NULL;\r
+    #define CREATE_stream_44  if (stream_44 == NULL) {stream_44 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 44"); } \r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_recordAssignment   = NULL;\r
+    #define CREATE_stream_recordAssignment  if (stream_recordAssignment == NULL) {stream_recordAssignment = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule recordAssignment"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:221:5: ( '{' ( recordAssignment ( ',' recordAssignment )* )? '}' -> ^( RECORD ( recordAssignment )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:221:7: '{' ( recordAssignment ( ',' recordAssignment )* )? '}'\r
+        {\r
+            char_literal96 = (pANTLR3_COMMON_TOKEN) MATCHT(43, &FOLLOW_43_in_record1775); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordEx;\r
+            }\r
+             \r
+            CREATE_stream_43; stream_43->add(stream_43, char_literal96, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:221:11: ( recordAssignment ( ',' recordAssignment )* )?\r
+            {\r
+                int alt26=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\r
+                       {\r
+                               alt26=1;\r
+                       }\r
+                        break;\r
+                }\r
+\r
+                switch (alt26) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:221:12: recordAssignment ( ',' recordAssignment )*\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_recordAssignment_in_record1778);\r
+                       recordAssignment97=recordAssignment(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulerecordEx;\r
+                       }\r
+\r
+                       CREATE_stream_recordAssignment; stream_recordAssignment->add(stream_recordAssignment, recordAssignment97.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:221:29: ( ',' recordAssignment )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt25=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\r
+                               {\r
+                                       alt25=1;\r
+                               }\r
+                               break;\r
+\r
+                           }\r
+\r
+                           switch (alt25) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:221:30: ',' recordAssignment\r
+                                   {\r
+                                       char_literal98 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_record1781); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulerecordEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal98, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_recordAssignment_in_record1783);\r
+                                       recordAssignment99=recordAssignment(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulerecordEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_recordAssignment; stream_recordAssignment->add(stream_recordAssignment, recordAssignment99.tree, NULL);\r
+\r
+                                   }\r
+                                   break;\r
+\r
+                               default:\r
+                                   goto loop25;        /* break out of the loop */\r
+                                   break;\r
+                           }\r
+                       }\r
+                       loop25: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+            char_literal100 = (pANTLR3_COMMON_TOKEN) MATCHT(44, &FOLLOW_44_in_record1789); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordEx;\r
+            }\r
+             \r
+            CREATE_stream_44; stream_44->add(stream_44, char_literal100, NULL);\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : recordAssignment\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 222:5: -> ^( RECORD ( recordAssignment )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:222:8: ^( RECORD ( recordAssignment )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, RECORD, (pANTLR3_UINT8)"RECORD"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:222:17: ( recordAssignment )*\r
+                       {\r
+                               while ( (stream_recordAssignment != NULL && stream_recordAssignment->hasNext(stream_recordAssignment))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_recordAssignment == NULL ? NULL : stream_recordAssignment->nextTree(stream_recordAssignment));\r
+\r
+                               }\r
+                               if (stream_recordAssignment != NULL) stream_recordAssignment->reset(stream_recordAssignment);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulerecordEx; /* Prevent compiler warnings */\r
+    rulerecordEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_43 != NULL) stream_43->free(stream_43);\r
+        if (stream_44 != NULL) stream_44->free(stream_44);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_recordAssignment != NULL) stream_recordAssignment->free(stream_recordAssignment);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end record */\r
+\r
+/** \r
+ * $ANTLR start recordAssignment\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:225:1: recordAssignment : ID '=' value -> ^( ASSIGNMENT ID value ) ;\r
+ */\r
+static SimanticsDataParser_recordAssignment_return\r
+recordAssignment(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_recordAssignment_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    ID101;\r
+    pANTLR3_COMMON_TOKEN    char_literal102;\r
+    SimanticsDataParser_value_return value103;\r
+    #undef     RETURN_TYPE_value103\r
+    #define    RETURN_TYPE_value103 SimanticsDataParser_value_return\r
+\r
+    pANTLR3_BASE_TREE ID101_tree;\r
+    pANTLR3_BASE_TREE char_literal102_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_ID;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_35;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_value;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    ID101       = NULL;\r
+    char_literal102       = NULL;\r
+    value103.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    ID101_tree   = NULL;\r
+    char_literal102_tree   = NULL;\r
+\r
+    stream_ID   = NULL;\r
+    #define CREATE_stream_ID  if (stream_ID == NULL) {stream_ID = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token ID"); } \r
+    stream_35   = NULL;\r
+    #define CREATE_stream_35  if (stream_35 == NULL) {stream_35 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 35"); } \r
+    stream_value   = NULL;\r
+    #define CREATE_stream_value  if (stream_value == NULL) {stream_value = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule value"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:226:5: ( ID '=' value -> ^( ASSIGNMENT ID value ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:226:7: ID '=' value\r
+        {\r
+            ID101 = (pANTLR3_COMMON_TOKEN) MATCHT(ID, &FOLLOW_ID_in_recordAssignment1821); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordAssignmentEx;\r
+            }\r
+             \r
+            CREATE_stream_ID; stream_ID->add(stream_ID, ID101, NULL);\r
+\r
+            char_literal102 = (pANTLR3_COMMON_TOKEN) MATCHT(35, &FOLLOW_35_in_recordAssignment1823); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordAssignmentEx;\r
+            }\r
+             \r
+            CREATE_stream_35; stream_35->add(stream_35, char_literal102, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_value_in_recordAssignment1825);\r
+            value103=value(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulerecordAssignmentEx;\r
+            }\r
+\r
+            CREATE_stream_value; stream_value->add(stream_value, value103.tree, NULL);\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : value, ID\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 227:5: -> ^( ASSIGNMENT ID value )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:227:8: ^( ASSIGNMENT ID value )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, ASSIGNMENT, (pANTLR3_UINT8)"ASSIGNMENT"), root_1));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_ID == NULL ? NULL : stream_ID->nextNode(stream_ID));\r
+                       ADAPTOR->addChild(ADAPTOR, root_1, stream_value == NULL ? NULL : stream_value->nextTree(stream_value));\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulerecordAssignmentEx; /* Prevent compiler warnings */\r
+    rulerecordAssignmentEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_ID != NULL) stream_ID->free(stream_ID);\r
+        if (stream_35 != NULL) stream_35->free(stream_35);\r
+        if (stream_value != NULL) stream_value->free(stream_value);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end recordAssignment */\r
+\r
+/** \r
+ * $ANTLR start map\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:1: map : 'map' '{' ( mapAssignment ( ',' mapAssignment )* )? '}' -> ^( MAP ( mapAssignment )* ) ;\r
+ */\r
+static SimanticsDataParser_map_return\r
+map(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_map_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    string_literal104;\r
+    pANTLR3_COMMON_TOKEN    char_literal105;\r
+    pANTLR3_COMMON_TOKEN    char_literal107;\r
+    pANTLR3_COMMON_TOKEN    char_literal109;\r
+    SimanticsDataParser_mapAssignment_return mapAssignment106;\r
+    #undef     RETURN_TYPE_mapAssignment106\r
+    #define    RETURN_TYPE_mapAssignment106 SimanticsDataParser_mapAssignment_return\r
+\r
+    SimanticsDataParser_mapAssignment_return mapAssignment108;\r
+    #undef     RETURN_TYPE_mapAssignment108\r
+    #define    RETURN_TYPE_mapAssignment108 SimanticsDataParser_mapAssignment_return\r
+\r
+    pANTLR3_BASE_TREE string_literal104_tree;\r
+    pANTLR3_BASE_TREE char_literal105_tree;\r
+    pANTLR3_BASE_TREE char_literal107_tree;\r
+    pANTLR3_BASE_TREE char_literal109_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_49;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_43;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_44;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_41;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_mapAssignment;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    string_literal104       = NULL;\r
+    char_literal105       = NULL;\r
+    char_literal107       = NULL;\r
+    char_literal109       = NULL;\r
+    mapAssignment106.tree = NULL;\r
+\r
+    mapAssignment108.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    string_literal104_tree   = NULL;\r
+    char_literal105_tree   = NULL;\r
+    char_literal107_tree   = NULL;\r
+    char_literal109_tree   = NULL;\r
+\r
+    stream_49   = NULL;\r
+    #define CREATE_stream_49  if (stream_49 == NULL) {stream_49 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 49"); } \r
+    stream_43   = NULL;\r
+    #define CREATE_stream_43  if (stream_43 == NULL) {stream_43 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 43"); } \r
+    stream_44   = NULL;\r
+    #define CREATE_stream_44  if (stream_44 == NULL) {stream_44 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 44"); } \r
+    stream_41   = NULL;\r
+    #define CREATE_stream_41  if (stream_41 == NULL) {stream_41 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 41"); } \r
+    stream_mapAssignment   = NULL;\r
+    #define CREATE_stream_mapAssignment  if (stream_mapAssignment == NULL) {stream_mapAssignment = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule mapAssignment"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:5: ( 'map' '{' ( mapAssignment ( ',' mapAssignment )* )? '}' -> ^( MAP ( mapAssignment )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:7: 'map' '{' ( mapAssignment ( ',' mapAssignment )* )? '}'\r
+        {\r
+            string_literal104 = (pANTLR3_COMMON_TOKEN) MATCHT(49, &FOLLOW_49_in_map1852); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulemapEx;\r
+            }\r
+             \r
+            CREATE_stream_49; stream_49->add(stream_49, string_literal104, NULL);\r
+\r
+            char_literal105 = (pANTLR3_COMMON_TOKEN) MATCHT(43, &FOLLOW_43_in_map1854); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulemapEx;\r
+            }\r
+             \r
+            CREATE_stream_43; stream_43->add(stream_43, char_literal105, NULL);\r
+\r
+\r
+            // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:17: ( mapAssignment ( ',' mapAssignment )* )?\r
+            {\r
+                int alt28=2;\r
+                switch ( LA(1) ) \r
+                {\r
+                    case ID:\r
+                    case INT:\r
+                    case FLOAT:\r
+                    case STRING:\r
+                    case 37:\r
+                    case 40:\r
+                    case 43:\r
+                    case 46:\r
+                    case 47:\r
+                    case 48:\r
+                    case 49:\r
+                       {\r
+                               alt28=1;\r
+                       }\r
+                        break;\r
+                }\r
+\r
+                switch (alt28) \r
+                {\r
+               case 1:\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:18: mapAssignment ( ',' mapAssignment )*\r
+                   {\r
+                       FOLLOWPUSH(FOLLOW_mapAssignment_in_map1857);\r
+                       mapAssignment106=mapAssignment(ctx);\r
+\r
+                       FOLLOWPOP();\r
+                       if  (HASEXCEPTION())\r
+                       {\r
+                           goto rulemapEx;\r
+                       }\r
+\r
+                       CREATE_stream_mapAssignment; stream_mapAssignment->add(stream_mapAssignment, mapAssignment106.tree, NULL);\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:32: ( ',' mapAssignment )*\r
+\r
+                       for (;;)\r
+                       {\r
+                           int alt27=2;\r
+                           switch ( LA(1) ) \r
+                           {\r
+                           case 41:\r
+                               {\r
+                                       alt27=1;\r
+                               }\r
+                               break;\r
+\r
+                           }\r
+\r
+                           switch (alt27) \r
+                           {\r
+                               case 1:\r
+                                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:230:33: ',' mapAssignment\r
+                                   {\r
+                                       char_literal107 = (pANTLR3_COMMON_TOKEN) MATCHT(41, &FOLLOW_41_in_map1860); \r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulemapEx;\r
+                                       }\r
+                                        \r
+                                       CREATE_stream_41; stream_41->add(stream_41, char_literal107, NULL);\r
+\r
+                                       FOLLOWPUSH(FOLLOW_mapAssignment_in_map1862);\r
+                                       mapAssignment108=mapAssignment(ctx);\r
+\r
+                                       FOLLOWPOP();\r
+                                       if  (HASEXCEPTION())\r
+                                       {\r
+                                           goto rulemapEx;\r
+                                       }\r
+\r
+                                       CREATE_stream_mapAssignment; stream_mapAssignment->add(stream_mapAssignment, mapAssignment108.tree, NULL);\r
+\r
+                                   }\r
+                                   break;\r
+\r
+                               default:\r
+                                   goto loop27;        /* break out of the loop */\r
+                                   break;\r
+                           }\r
+                       }\r
+                       loop27: ; /* Jump out to here if this rule does not match */\r
+\r
+\r
+                   }\r
+                   break;\r
+\r
+                }\r
+            }\r
+            char_literal109 = (pANTLR3_COMMON_TOKEN) MATCHT(44, &FOLLOW_44_in_map1868); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulemapEx;\r
+            }\r
+             \r
+            CREATE_stream_44; stream_44->add(stream_44, char_literal109, NULL);\r
+\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : mapAssignment\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 231:5: -> ^( MAP ( mapAssignment )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:231:8: ^( MAP ( mapAssignment )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, MAP, (pANTLR3_UINT8)"MAP"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:231:14: ( mapAssignment )*\r
+                       {\r
+                               while ( (stream_mapAssignment != NULL && stream_mapAssignment->hasNext(stream_mapAssignment))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_mapAssignment == NULL ? NULL : stream_mapAssignment->nextTree(stream_mapAssignment));\r
+\r
+                               }\r
+                               if (stream_mapAssignment != NULL) stream_mapAssignment->reset(stream_mapAssignment);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulemapEx; /* Prevent compiler warnings */\r
+    rulemapEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_49 != NULL) stream_49->free(stream_49);\r
+        if (stream_43 != NULL) stream_43->free(stream_43);\r
+        if (stream_44 != NULL) stream_44->free(stream_44);\r
+        if (stream_41 != NULL) stream_41->free(stream_41);\r
+        if (stream_mapAssignment != NULL) stream_mapAssignment->free(stream_mapAssignment);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end map */\r
+\r
+/** \r
+ * $ANTLR start mapAssignment\r
+ * C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:234:1: mapAssignment : value '=' value -> ^( ASSIGNMENT ( value )* ) ;\r
+ */\r
+static SimanticsDataParser_mapAssignment_return\r
+mapAssignment(pSimanticsDataParser ctx)\r
+{   \r
+    SimanticsDataParser_mapAssignment_return retval;\r
+\r
+    pANTLR3_BASE_TREE root_0;\r
+\r
+    pANTLR3_COMMON_TOKEN    char_literal111;\r
+    SimanticsDataParser_value_return value110;\r
+    #undef     RETURN_TYPE_value110\r
+    #define    RETURN_TYPE_value110 SimanticsDataParser_value_return\r
+\r
+    SimanticsDataParser_value_return value112;\r
+    #undef     RETURN_TYPE_value112\r
+    #define    RETURN_TYPE_value112 SimanticsDataParser_value_return\r
+\r
+    pANTLR3_BASE_TREE char_literal111_tree;\r
+    pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_35;\r
+    pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_value;\r
+    /* Initialize rule variables\r
+     */\r
+\r
+\r
+    root_0 = NULL;\r
+\r
+    char_literal111       = NULL;\r
+    value110.tree = NULL;\r
+\r
+    value112.tree = NULL;\r
+\r
+    retval.start = LT(1); retval.stop = retval.start;\r
+\r
+    char_literal111_tree   = NULL;\r
+\r
+    stream_35   = NULL;\r
+    #define CREATE_stream_35  if (stream_35 == NULL) {stream_35 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 35"); } \r
+    stream_value   = NULL;\r
+    #define CREATE_stream_value  if (stream_value == NULL) {stream_value = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule value"); }\r
+\r
+    retval.tree  = NULL;\r
+    {\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:235:5: ( value '=' value -> ^( ASSIGNMENT ( value )* ) )\r
+        // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:235:7: value '=' value\r
+        {\r
+            FOLLOWPUSH(FOLLOW_value_in_mapAssignment1900);\r
+            value110=value(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulemapAssignmentEx;\r
+            }\r
+\r
+            CREATE_stream_value; stream_value->add(stream_value, value110.tree, NULL);\r
+            char_literal111 = (pANTLR3_COMMON_TOKEN) MATCHT(35, &FOLLOW_35_in_mapAssignment1902); \r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulemapAssignmentEx;\r
+            }\r
+             \r
+            CREATE_stream_35; stream_35->add(stream_35, char_literal111, NULL);\r
+\r
+            FOLLOWPUSH(FOLLOW_value_in_mapAssignment1904);\r
+            value112=value(ctx);\r
+\r
+            FOLLOWPOP();\r
+            if  (HASEXCEPTION())\r
+            {\r
+                goto rulemapAssignmentEx;\r
+            }\r
+\r
+            CREATE_stream_value; stream_value->add(stream_value, value112.tree, NULL);\r
+\r
+             \r
+            /* AST REWRITE\r
+             * elements          : value\r
+             * token labels      : \r
+             * rule labels       : retval\r
+             * token list labels : \r
+             * rule list labels  : \r
+             */\r
+            {\r
+               pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval;\r
+\r
+               stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR,  RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL);\r
+\r
+               root_0                      = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+               retval.tree    = root_0;\r
+               // 236:5: -> ^( ASSIGNMENT ( value )* )\r
+               {\r
+                   // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:236:8: ^( ASSIGNMENT ( value )* )\r
+                   {\r
+                       pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));\r
+                       root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, ASSIGNMENT, (pANTLR3_UINT8)"ASSIGNMENT"), root_1));\r
+\r
+                       // C:\\Simantics\\workspace\\org.simantics.databoard\\cpp\\DataBoardTest\\DataBoard\\SimanticsData.g:236:21: ( value )*\r
+                       {\r
+                               while ( (stream_value != NULL && stream_value->hasNext(stream_value))  )\r
+                               {\r
+                                       ADAPTOR->addChild(ADAPTOR, root_1, stream_value == NULL ? NULL : stream_value->nextTree(stream_value));\r
+\r
+                               }\r
+                               if (stream_value != NULL) stream_value->reset(stream_value);\r
+\r
+                       }\r
+\r
+                       ADAPTOR->addChild(ADAPTOR, root_0, root_1);\r
+                   }\r
+\r
+               }\r
+\r
+               retval.tree = root_0; // set result root\r
+               if (stream_retval != NULL) stream_retval->free(stream_retval);\r
+\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+    \r
+\r
+    // This is where rules clean up and exit\r
+    //\r
+    goto rulemapAssignmentEx; /* Prevent compiler warnings */\r
+    rulemapAssignmentEx: ;\r
+    retval.stop = LT(-1);\r
+\r
+       retval.stop = LT(-1);\r
+       retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0));\r
+       ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop);\r
+        if (stream_35 != NULL) stream_35->free(stream_35);\r
+        if (stream_value != NULL) stream_value->free(stream_value);\r
+\r
+            if (HASEXCEPTION())\r
+            {\r
+                PREPORTERROR();\r
+                PRECOVER();\r
+                retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION));\r
+            }\r
+\r
+\r
+    return retval;\r
+}\r
+/* $ANTLR end mapAssignment */\r
+/* End of parsing rules\r
+ * ==============================================\r
+ */\r
+\r
+/* ==============================================\r
+ * Syntactic predicates\r
+ */\r
+/* End of syntactic predicates\r
+ * ==============================================\r
+ */\r
+\r
\r
\r
+\r
+\r
+\r
+/* End of code\r
+ * =============================================================================\r
+ */\r