David Rose 21 years ago
parent
commit
b312099dda
1 changed files with 256 additions and 232 deletions
  1. 256 232
      direct/src/dcparser/dcParser.cxx.prebuilt

+ 256 - 232
direct/src/dcparser/dcParser.cxx.prebuilt

@@ -92,12 +92,12 @@ dc_cleanup_parser() {
 
 
 
-#define	YYFINAL		116
+#define	YYFINAL		122
 #define	YYFLAG		-32768
-#define	YYNTBASE	50
+#define	YYNTBASE	51
 
 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-#define YYTRANSLATE(x) ((unsigned)(x) <= 293 ? yytranslate[x] : 79)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 293 ? yytranslate[x] : 82)
 
 /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
 static const char yytranslate[] =
@@ -106,9 +106,9 @@ static const char yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      46,    47,    43,     2,    44,     2,     2,    48,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    45,    40,
-       2,    49,     2,     2,     2,     2,     2,     2,     2,     2,
+      48,    49,    45,     2,    46,     2,    44,    43,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    47,    40,
+       2,    50,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -137,42 +137,44 @@ static const char yytranslate[] =
 #if YYDEBUG
 static const short yyprhs[] =
 {
-       0,     0,     2,     5,     8,    11,    12,    20,    22,    25,
-      26,    32,    34,    36,    38,    42,    44,    47,    49,    53,
-      55,    58,    61,    64,    65,    72,    74,    76,    78,    80,
-      84,    85,    89,    91,    95,    98,   102,   106,   110,   114,
-     120,   122,   125,   127,   129,   131,   135,   137,   139,   141,
-     143,   147,   151,   155,   157,   159,   161,   163,   165,   167,
-     169,   171,   173,   175,   177,   179,   181,   183,   185,   187,
-     189,   191,   193,   195,   198,   201,   204,   207,   210,   213,
-     216,   219,   222,   223,   228,   230,   234
+       0,     0,     2,     5,     8,    11,    12,    20,    22,    24,
+      28,    30,    34,    37,    38,    44,    46,    48,    50,    54,
+      56,    59,    61,    65,    67,    70,    73,    76,    77,    84,
+      86,    88,    90,    92,    96,    97,   101,   103,   107,   110,
+     114,   118,   122,   126,   132,   134,   137,   139,   141,   143,
+     147,   149,   151,   153,   155,   159,   163,   167,   169,   171,
+     173,   175,   177,   179,   181,   183,   185,   187,   189,   191,
+     193,   195,   197,   199,   201,   203,   205,   207,   210,   213,
+     216,   219,   222,   225,   228,   231,   234,   235,   240,   242,
+     246
 };
 static const short yyrhs[] =
 {
-      78,     0,    50,    40,     0,    50,    51,     0,    50,    54,
-       0,     0,     8,     7,    52,    58,    41,    60,    42,     0,
-       7,     0,    10,     7,     0,     0,     9,     7,    10,    55,
-      56,     0,    57,     0,    43,     0,     7,     0,    57,    44,
-       7,     0,    78,     0,    45,    59,     0,    53,     0,    59,
-      44,    53,     0,    78,     0,    60,    40,     0,    60,    61,
-       0,    60,    75,     0,     0,     7,    46,    62,    64,    47,
-      74,     0,     7,     0,    78,     0,    65,     0,    66,     0,
-      65,    44,    66,     0,     0,    73,    67,    68,     0,    78,
-       0,    68,    48,     3,     0,    68,     7,     0,    68,    49,
-       3,     0,    68,    49,     4,     0,    68,    49,     5,     0,
-      68,    49,     6,     0,    68,    49,    41,    69,    42,     0,
-      78,     0,    71,    70,     0,    78,     0,    44,     0,    72,
-       0,    71,    44,    72,     0,     3,     0,     4,     0,     5,
-       0,     6,     0,     3,    43,     3,     0,     4,    43,     3,
-       0,     6,    43,     3,     0,    11,     0,    12,     0,    13,
-       0,    14,     0,    15,     0,    16,     0,    17,     0,    18,
-       0,    19,     0,    20,     0,    21,     0,    22,     0,    23,
-       0,    24,     0,    25,     0,    26,     0,    27,     0,    28,
-       0,    29,     0,    78,     0,    74,    31,     0,    74,    32,
-       0,    74,    33,     0,    74,    34,     0,    74,    35,     0,
-      74,    36,     0,    74,    37,     0,    74,    38,     0,    74,
-      39,     0,     0,     7,    45,    76,    77,     0,    63,     0,
-      77,    44,    63,     0,     0
+      81,     0,    51,    40,     0,    51,    52,     0,    51,    57,
+       0,     0,     8,     7,    53,    61,    41,    63,    42,     0,
+       7,     0,     7,     0,    55,    43,     7,     0,    55,     0,
+      56,    44,    55,     0,    10,    56,     0,     0,     9,    56,
+      10,    58,    59,     0,    60,     0,    45,     0,    55,     0,
+      60,    46,    55,     0,    81,     0,    47,    62,     0,    54,
+       0,    62,    46,    54,     0,    81,     0,    63,    40,     0,
+      63,    64,     0,    63,    78,     0,     0,     7,    48,    65,
+      67,    49,    77,     0,     7,     0,    81,     0,    68,     0,
+      69,     0,    68,    46,    69,     0,     0,    76,    70,    71,
+       0,    81,     0,    71,    43,     3,     0,    71,     7,     0,
+      71,    50,     3,     0,    71,    50,     4,     0,    71,    50,
+       5,     0,    71,    50,     6,     0,    71,    50,    41,    72,
+      42,     0,    81,     0,    74,    73,     0,    81,     0,    46,
+       0,    75,     0,    74,    46,    75,     0,     3,     0,     4,
+       0,     5,     0,     6,     0,     3,    45,     3,     0,     4,
+      45,     3,     0,     6,    45,     3,     0,    11,     0,    12,
+       0,    13,     0,    14,     0,    15,     0,    16,     0,    17,
+       0,    18,     0,    19,     0,    20,     0,    21,     0,    22,
+       0,    23,     0,    24,     0,    25,     0,    26,     0,    27,
+       0,    28,     0,    29,     0,    81,     0,    77,    31,     0,
+      77,    32,     0,    77,    33,     0,    77,    34,     0,    77,
+      35,     0,    77,    36,     0,    77,    37,     0,    77,    38,
+       0,    77,    39,     0,     0,     7,    47,    79,    80,     0,
+      66,     0,    80,    46,    66,     0,     0
 };
 
 #endif
@@ -181,15 +183,16 @@ static const short yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
 static const short yyrline[] =
 {
-       0,    91,    93,    94,    95,    98,    98,   109,   123,   128,
-     128,   135,   137,   143,   148,   154,   156,   159,   166,   174,
-     176,   177,   178,   181,   181,   192,   208,   210,   213,   215,
-     218,   218,   230,   232,   236,   240,   246,   252,   258,   264,
-     274,   276,   279,   281,   284,   286,   289,   296,   302,   308,
-     314,   323,   332,   343,   348,   352,   356,   360,   364,   368,
-     372,   376,   380,   384,   388,   392,   396,   400,   404,   408,
-     412,   416,   422,   424,   428,   432,   436,   440,   444,   448,
-     452,   456,   462,   462,   473,   480,   493
+       0,    93,    95,    96,    97,   100,   100,   111,   125,   127,
+     133,   135,   141,   146,   146,   153,   155,   161,   166,   172,
+     174,   177,   184,   192,   194,   195,   196,   199,   199,   210,
+     226,   228,   231,   233,   236,   236,   248,   250,   254,   258,
+     264,   270,   276,   282,   292,   294,   297,   299,   302,   304,
+     307,   314,   320,   326,   332,   341,   350,   361,   366,   370,
+     374,   378,   382,   386,   390,   394,   398,   402,   406,   410,
+     414,   418,   422,   426,   430,   434,   440,   442,   446,   450,
+     454,   458,   462,   466,   470,   474,   480,   480,   491,   498,
+     511
 };
 #endif
 
@@ -207,8 +210,9 @@ static const char *const yytname[] =
   "KW_UINT8ARRAY", "KW_UINT16ARRAY", "KW_UINT32ARRAY", 
   "KW_UINT32UINT8ARRAY", "KW_MOL", "KW_REQUIRED", "KW_BROADCAST", 
   "KW_P2P", "KW_RAM", "KW_DB", "KW_CLSEND", "KW_CLRECV", "KW_OWNSEND", 
-  "KW_AIRECV", "';'", "'{'", "'}'", "'*'", "','", "':'", "'('", "')'", 
-  "'/'", "'='", "dc", "dclass", "@1", "dclass_name", "import", "@2", 
+  "KW_AIRECV", "';'", "'{'", "'}'", "'/'", "'.'", "'*'", "','", "':'", 
+  "'('", "')'", "'='", "dc", "dclass", "@1", "dclass_name", 
+  "slash_identifier", "import_identifier", "import", "@2", 
   "import_symbol_list_or_star", "import_symbol_list", "dclass_derivation", 
   "base_list", "dclass_fields", "atomic_field", "@3", "atomic_name", 
   "parameter_list", "nonempty_parameter_list", "atomic_element", "@4", 
@@ -221,29 +225,31 @@ static const char *const yytname[] =
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
 static const short yyr1[] =
 {
-       0,    50,    50,    50,    50,    52,    51,    53,    54,    55,
-      54,    56,    56,    57,    57,    58,    58,    59,    59,    60,
-      60,    60,    60,    62,    61,    63,    64,    64,    65,    65,
-      67,    66,    68,    68,    68,    68,    68,    68,    68,    68,
-      69,    69,    70,    70,    71,    71,    72,    72,    72,    72,
-      72,    72,    72,    73,    73,    73,    73,    73,    73,    73,
-      73,    73,    73,    73,    73,    73,    73,    73,    73,    73,
-      73,    73,    74,    74,    74,    74,    74,    74,    74,    74,
-      74,    74,    76,    75,    77,    77,    78
+       0,    51,    51,    51,    51,    53,    52,    54,    55,    55,
+      56,    56,    57,    58,    57,    59,    59,    60,    60,    61,
+      61,    62,    62,    63,    63,    63,    63,    65,    64,    66,
+      67,    67,    68,    68,    70,    69,    71,    71,    71,    71,
+      71,    71,    71,    71,    72,    72,    73,    73,    74,    74,
+      75,    75,    75,    75,    75,    75,    75,    76,    76,    76,
+      76,    76,    76,    76,    76,    76,    76,    76,    76,    76,
+      76,    76,    76,    76,    76,    76,    77,    77,    77,    77,
+      77,    77,    77,    77,    77,    77,    79,    78,    80,    80,
+      81
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
 static const short yyr2[] =
 {
-       0,     1,     2,     2,     2,     0,     7,     1,     2,     0,
-       5,     1,     1,     1,     3,     1,     2,     1,     3,     1,
-       2,     2,     2,     0,     6,     1,     1,     1,     1,     3,
-       0,     3,     1,     3,     2,     3,     3,     3,     3,     5,
-       1,     2,     1,     1,     1,     3,     1,     1,     1,     1,
-       3,     3,     3,     1,     1,     1,     1,     1,     1,     1,
+       0,     1,     2,     2,     2,     0,     7,     1,     1,     3,
+       1,     3,     2,     0,     5,     1,     1,     1,     3,     1,
+       2,     1,     3,     1,     2,     2,     2,     0,     6,     1,
+       1,     1,     1,     3,     0,     3,     1,     3,     2,     3,
+       3,     3,     3,     5,     1,     2,     1,     1,     1,     3,
+       1,     1,     1,     1,     3,     3,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     0,     4,     1,     3,     0
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     0,     4,     1,     3,
+       0
 };
 
 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@@ -251,78 +257,84 @@ static const short yyr2[] =
    error. */
 static const short yydefact[] =
 {
-      86,     0,     1,     0,     0,     0,     2,     3,     4,     5,
-       0,     8,    86,     9,     0,     0,    15,     0,     7,    17,
-      16,    86,    13,    12,    10,    11,     0,     0,    19,     0,
-      18,     0,    20,     6,    21,    22,    14,    82,    23,     0,
-      86,    25,    84,    83,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,     0,    27,    28,    30,    26,     0,    86,
-       0,    86,    85,    24,    72,    29,    31,    32,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    34,     0,     0,
-      33,    35,    36,    37,    38,    86,    46,    47,    48,    49,
-       0,    86,    44,    40,     0,     0,     0,    39,    43,    41,
-      42,    50,    51,    52,    45,     0,     0
+      90,     0,     1,     0,     0,     0,     2,     3,     4,     5,
+       8,    10,     0,    12,    90,     0,    13,     0,     0,     0,
+      19,     9,     0,    11,     7,    21,    20,    90,    16,    17,
+      14,    15,     0,     0,    23,     0,    22,     0,    24,     6,
+      25,    26,    18,    86,    27,     0,    90,    29,    88,    87,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,     0,
+      31,    32,    34,    30,     0,    90,     0,    90,    89,    28,
+      76,    33,    35,    36,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    38,     0,     0,    37,    39,    40,    41,
+      42,    90,    50,    51,    52,    53,     0,    90,    48,    44,
+       0,     0,     0,    43,    47,    45,    46,    54,    55,    56,
+      49,     0,     0
 };
 
 static const short yydefgoto[] =
 {
-       1,     7,    12,    19,     8,    17,    24,    25,    15,    20,
-      27,    34,    40,    42,    63,    64,    65,    71,    76,   100,
-     109,   101,   102,    66,    73,    35,    39,    43,     2
+       1,     7,    14,    25,    11,    12,     8,    22,    30,    31,
+      19,    26,    33,    40,    46,    48,    69,    70,    71,    77,
+      82,   106,   115,   107,   108,    72,    79,    41,    45,    49,
+       2
 };
 
 static const short yypact[] =
 {
-  -32768,     4,-32768,    -4,     3,    17,-32768,-32768,-32768,-32768,
-       1,-32768,   -40,-32768,    18,   -18,-32768,    -5,-32768,-32768,
-     -17,-32768,-32768,-32768,-32768,     2,    18,    -1,-32768,    19,
-  -32768,   -38,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    33,
-      49,-32768,-32768,     5,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,     2,-32768,    27,    28,    28,-32768,-32768,-32768,-32768,
+  -32768,   -36,    -1,    -8,    -9,    32,-32768,    28,    33,     4,
+  -32768,-32768,     1,   -36,-32768,-32768,     5,-32768,-32768,   -36,
+  -32768,     6,    33,     7,-32768,    28,-32768,   -17,-32768,-32768,
+  -32768,-32768,   -36,-32768,-32768,    41,    53,-32768,-32768,     8,
   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  -32768,-32768,-32768,     0,     6,-32768,-32768,-32768,    33,-32768,
-      49,-32768,-32768,    -2,-32768,-32768,    -6,-32768,-32768,-32768,
-  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    42,    12,
-  -32768,-32768,-32768,-32768,-32768,    16,     8,     9,-32768,    11,
-      13,    14,-32768,-32768,    45,    53,    76,-32768,    16,-32768,
-  -32768,-32768,-32768,-32768,-32768,    80,-32768
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     9,
+      10,-32768,-32768,-32768,    41,-32768,    53,-32768,-32768,   -10,
+  -32768,-32768,    -6,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,    47,     0,-32768,-32768,-32768,-32768,
+  -32768,    13,    12,    14,-32768,    15,    11,    16,-32768,-32768,
+      52,    80,    81,-32768,    13,-32768,-32768,-32768,-32768,-32768,
+  -32768,    85,-32768
 };
 
 static const short yypgoto[] =
 {
-  -32768,-32768,-32768,    55,-32768,-32768,-32768,-32768,-32768,-32768,
-  -32768,-32768,-32768,    20,-32768,-32768,    15,-32768,-32768,-32768,
-  -32768,-32768,   -26,-32768,-32768,-32768,-32768,-32768,   -12
+  -32768,-32768,-32768,    54,    -2,    83,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,    17,-32768,-32768,    18,-32768,
+  -32768,-32768,-32768,-32768,   -25,-32768,-32768,-32768,-32768,-32768,
+     -14
 };
 
 
-#define	YYLAST		89
+#define	YYLAST		94
 
 
 static const short yytable[] =
 {
-      16,    87,    22,     9,   115,    14,    31,    37,    38,    28,
-      10,    13,     3,     4,     5,    91,    92,    93,    94,    96,
-      97,    98,    99,    21,    11,    18,    36,    26,    67,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    23,    32,
-      41,    33,    88,    89,     6,    90,    29,    69,   111,    68,
-      70,   104,   105,    95,   106,   107,   112,    74,   108,    77,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,   113,
-     116,    30,   114,   103,     0,    75,     0,     0,    72,   110
+      20,    93,   121,    97,    98,    99,   100,    15,    10,    16,
+       3,     4,     5,    34,    37,    23,   102,   103,   104,   105,
+      29,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      43,    44,    73,    42,     9,    10,    17,    94,    18,    21,
+      24,   101,     6,    17,    95,    27,    28,    38,    47,    39,
+      96,    32,    35,   113,    74,   117,    76,   110,    75,   111,
+     112,    80,   114,    83,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,   118,   119,   122,    36,   109,    13,   120,
+       0,    78,     0,   116,    81
 };
 
 static const short yycheck[] =
 {
-      12,     7,     7,     7,     0,    45,     7,    45,    46,    21,
-       7,    10,     8,     9,    10,     3,     4,     5,     6,     3,
-       4,     5,     6,    41,     7,     7,     7,    44,    40,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    43,    40,
-       7,    42,    48,    49,    40,     3,    44,    47,     3,    44,
-      44,    43,    43,    41,    43,    42,     3,    69,    44,    71,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,     3,
-       0,    26,   108,    95,    -1,    70,    -1,    -1,    68,   101
+      14,     7,     0,     3,     4,     5,     6,    43,     7,    10,
+       8,     9,    10,    27,     7,    17,     3,     4,     5,     6,
+      22,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      47,    48,    46,    35,     7,     7,    44,    43,    47,     7,
+       7,    41,    40,    44,    50,    41,    45,    40,     7,    42,
+       3,    46,    46,    42,    46,     3,    46,    45,    49,    45,
+      45,    75,    46,    77,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,     3,     3,     0,    32,   101,     5,   114,
+      -1,    74,    -1,   107,    76
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison/bison.simple"
@@ -1032,7 +1044,7 @@ yyreduce:
   switch (yyn) {
 
 case 5:
-#line 100 "dcParser.yxx"
+#line 102 "dcParser.yxx"
 {
   current_class = new DCClass(yyvsp[0].str);
   if (!dc_file->add_class(current_class)) {
@@ -1041,66 +1053,78 @@ case 5:
 }
     break;
 case 7:
-#line 111 "dcParser.yxx"
+#line 113 "dcParser.yxx"
 {
   DCFile::ClassesByName::const_iterator ni;
   ni = dc_file->_classes_by_name.find(yyvsp[0].str);
   if (ni == dc_file->_classes_by_name.end()) {
-    yyerror("Unknown class: " + yyvsp[0].str);
-    yyval.u.dclass = (DCClass *)NULL;
+    yyval.u.dclass = new DCClass(yyvsp[0].str, true);
+    dc_file->add_class(yyval.u.dclass);
   } else {
     yyval.u.dclass = (*ni).second;
   }
 }
     break;
-case 8:
-#line 125 "dcParser.yxx"
+case 9:
+#line 128 "dcParser.yxx"
+{
+  yyval.str = yyvsp[-2].str + string("/") + yyvsp[0].str;
+}
+    break;
+case 11:
+#line 136 "dcParser.yxx"
+{
+  yyval.str = yyvsp[-2].str + string(".") + yyvsp[0].str;
+}
+    break;
+case 12:
+#line 143 "dcParser.yxx"
 {
   dc_file->add_import_module(yyvsp[0].str);
 }
     break;
-case 9:
-#line 129 "dcParser.yxx"
+case 13:
+#line 147 "dcParser.yxx"
 {
   dc_file->add_import_module(yyvsp[-1].str);
 }
     break;
-case 12:
-#line 138 "dcParser.yxx"
+case 16:
+#line 156 "dcParser.yxx"
 {
   dc_file->add_import_symbol("*");
 }
     break;
-case 13:
-#line 145 "dcParser.yxx"
+case 17:
+#line 163 "dcParser.yxx"
 {
   dc_file->add_import_symbol(yyvsp[0].str);
 }
     break;
-case 14:
-#line 149 "dcParser.yxx"
+case 18:
+#line 167 "dcParser.yxx"
 {
   dc_file->add_import_symbol(yyvsp[0].str);
 }
     break;
-case 17:
-#line 161 "dcParser.yxx"
+case 21:
+#line 179 "dcParser.yxx"
 {
   if (yyvsp[0].u.dclass != (DCClass *)NULL) {
     current_class->add_parent(yyvsp[0].u.dclass);
   }
 }
     break;
-case 18:
-#line 167 "dcParser.yxx"
+case 22:
+#line 185 "dcParser.yxx"
 {
   if (yyvsp[0].u.dclass != (DCClass *)NULL) {
     current_class->add_parent(yyvsp[0].u.dclass);
   }
 }
     break;
-case 23:
-#line 183 "dcParser.yxx"
+case 27:
+#line 201 "dcParser.yxx"
 {
   current_atomic = new DCAtomicField(yyvsp[-1].str);
   if (!current_class->add_field(current_atomic)) {
@@ -1108,8 +1132,8 @@ case 23:
   }
 }
     break;
-case 25:
-#line 194 "dcParser.yxx"
+case 29:
+#line 212 "dcParser.yxx"
 {
   DCField *field = current_class->get_field_by_name(yyvsp[0].str);
   yyval.u.atomic = (DCAtomicField *)NULL;
@@ -1123,65 +1147,65 @@ case 25:
   }
 }
     break;
-case 30:
-#line 220 "dcParser.yxx"
+case 34:
+#line 238 "dcParser.yxx"
 {
   atomic_element = DCAtomicField::ElementType();
   atomic_element._type = yyvsp[0].u.subatomic;
 }
     break;
-case 31:
-#line 225 "dcParser.yxx"
+case 35:
+#line 243 "dcParser.yxx"
 {
   current_atomic->_elements.push_back(atomic_element);
 }
     break;
-case 33:
-#line 233 "dcParser.yxx"
+case 37:
+#line 251 "dcParser.yxx"
 {
   atomic_element._divisor = yyvsp[0].u.integer;
 }
     break;
-case 34:
-#line 237 "dcParser.yxx"
+case 38:
+#line 255 "dcParser.yxx"
 {
   atomic_element._name = yyvsp[0].str;
 }
     break;
-case 35:
-#line 241 "dcParser.yxx"
+case 39:
+#line 259 "dcParser.yxx"
 {
   if (!atomic_element.set_default_value(yyvsp[0].u.integer)) {
     yyerror("Invalid default value: " + yyvsp[0].str);
   }
 }
     break;
-case 36:
-#line 247 "dcParser.yxx"
+case 40:
+#line 265 "dcParser.yxx"
 {
   if (!atomic_element.set_default_value(yyvsp[0].u.real)) {
     yyerror("Invalid default value: " + yyvsp[0].str);
   }
 }
     break;
-case 37:
-#line 253 "dcParser.yxx"
+case 41:
+#line 271 "dcParser.yxx"
 {
   if (!atomic_element.set_default_value(yyvsp[0].str)) {
     yyerror("Invalid default value: \"" + yyvsp[0].str + "\"");
   }
 }
     break;
-case 38:
-#line 259 "dcParser.yxx"
+case 42:
+#line 277 "dcParser.yxx"
 {
   if (!atomic_element.set_default_value_literal(yyvsp[0].str)) {
     yyerror("Invalid default hex string value");
   }
 }
     break;
-case 39:
-#line 265 "dcParser.yxx"
+case 43:
+#line 283 "dcParser.yxx"
 {
   if (!atomic_element.end_array()) {
     yyerror("Array default value inappropriate");
@@ -1190,40 +1214,40 @@ case 39:
   }
 }
     break;
-case 46:
-#line 291 "dcParser.yxx"
+case 50:
+#line 309 "dcParser.yxx"
 {
   if (!atomic_element.add_default_value(yyvsp[0].u.integer)) {
     yyerror("Invalid default value: " + yyvsp[0].str);
   }
 }
     break;
-case 47:
-#line 297 "dcParser.yxx"
+case 51:
+#line 315 "dcParser.yxx"
 {
   if (!atomic_element.add_default_value(yyvsp[0].u.real)) {
     yyerror("Invalid default value: " + yyvsp[0].str);
   }
 }
     break;
-case 48:
-#line 303 "dcParser.yxx"
+case 52:
+#line 321 "dcParser.yxx"
 {
   if (!atomic_element.add_default_value(yyvsp[0].str)) {
     yyerror("Invalid default value: " + yyvsp[0].str);
   }
 }
     break;
-case 49:
-#line 309 "dcParser.yxx"
+case 53:
+#line 327 "dcParser.yxx"
 {
   if (!atomic_element.add_default_value_literal(yyvsp[0].str)) {
     yyerror("Invalid hex literal in default array");
   }
 }
     break;
-case 50:
-#line 315 "dcParser.yxx"
+case 54:
+#line 333 "dcParser.yxx"
 {
   for (int i = 0; i < yyvsp[0].u.integer; i++) {
     if (!atomic_element.add_default_value(yyvsp[-2].u.integer)) {
@@ -1233,8 +1257,8 @@ case 50:
   }
 }
     break;
-case 51:
-#line 324 "dcParser.yxx"
+case 55:
+#line 342 "dcParser.yxx"
 {
   for (int i = 0; i < yyvsp[0].u.integer; i++) {
     if (!atomic_element.add_default_value(yyvsp[-2].u.real)) {
@@ -1244,8 +1268,8 @@ case 51:
   }
 }
     break;
-case 52:
-#line 333 "dcParser.yxx"
+case 56:
+#line 351 "dcParser.yxx"
 {
   for (int i = 0; i < yyvsp[0].u.integer; i++) {
     if (!atomic_element.add_default_value_literal(yyvsp[-2].str)) {
@@ -1255,176 +1279,176 @@ case 52:
   }
 }
     break;
-case 53:
-#line 345 "dcParser.yxx"
+case 57:
+#line 363 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int8;
 }
     break;
-case 54:
-#line 349 "dcParser.yxx"
+case 58:
+#line 367 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int16;
 }
     break;
-case 55:
-#line 353 "dcParser.yxx"
+case 59:
+#line 371 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int32;
 }
     break;
-case 56:
-#line 357 "dcParser.yxx"
+case 60:
+#line 375 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int64;
 }
     break;
-case 57:
-#line 361 "dcParser.yxx"
+case 61:
+#line 379 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint8;
 }
     break;
-case 58:
-#line 365 "dcParser.yxx"
+case 62:
+#line 383 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint16;
 }
     break;
-case 59:
-#line 369 "dcParser.yxx"
+case 63:
+#line 387 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint32;
 }
     break;
-case 60:
-#line 373 "dcParser.yxx"
+case 64:
+#line 391 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint64;
 }
     break;
-case 61:
-#line 377 "dcParser.yxx"
+case 65:
+#line 395 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_float64;
 }
     break;
-case 62:
-#line 381 "dcParser.yxx"
+case 66:
+#line 399 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_string;
 }
     break;
-case 63:
-#line 385 "dcParser.yxx"
+case 67:
+#line 403 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_blob;
 }
     break;
-case 64:
-#line 389 "dcParser.yxx"
+case 68:
+#line 407 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_blob32;
 }
     break;
-case 65:
-#line 393 "dcParser.yxx"
+case 69:
+#line 411 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int8array;
 }
     break;
-case 66:
-#line 397 "dcParser.yxx"
+case 70:
+#line 415 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int16array;
 }
     break;
-case 67:
-#line 401 "dcParser.yxx"
+case 71:
+#line 419 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_int32array;
 }
     break;
-case 68:
-#line 405 "dcParser.yxx"
+case 72:
+#line 423 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint8array;
 }
     break;
-case 69:
-#line 409 "dcParser.yxx"
+case 73:
+#line 427 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint16array;
 }
     break;
-case 70:
-#line 413 "dcParser.yxx"
+case 74:
+#line 431 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint32array;
 }
     break;
-case 71:
-#line 417 "dcParser.yxx"
+case 75:
+#line 435 "dcParser.yxx"
 {
   yyval.u.subatomic = ST_uint32uint8array;
 }
     break;
-case 73:
-#line 425 "dcParser.yxx"
+case 77:
+#line 443 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_required;
 }
     break;
-case 74:
-#line 429 "dcParser.yxx"
+case 78:
+#line 447 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_broadcast;
 }
     break;
-case 75:
-#line 433 "dcParser.yxx"
+case 79:
+#line 451 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_p2p;
 }
     break;
-case 76:
-#line 437 "dcParser.yxx"
+case 80:
+#line 455 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_ram;
 }
     break;
-case 77:
-#line 441 "dcParser.yxx"
+case 81:
+#line 459 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_db;
 }
     break;
-case 78:
-#line 445 "dcParser.yxx"
+case 82:
+#line 463 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_clsend;
 }
     break;
-case 79:
-#line 449 "dcParser.yxx"
+case 83:
+#line 467 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_clrecv;
 }
     break;
-case 80:
-#line 453 "dcParser.yxx"
+case 84:
+#line 471 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_ownsend;
 }
     break;
-case 81:
-#line 457 "dcParser.yxx"
+case 85:
+#line 475 "dcParser.yxx"
 {
   current_atomic->_flags |= DCAtomicField::F_airecv;
 }
     break;
-case 82:
-#line 464 "dcParser.yxx"
+case 86:
+#line 482 "dcParser.yxx"
 {
   current_molecular = new DCMolecularField(yyvsp[-1].str);
   if (!current_class->add_field(current_molecular)) {
@@ -1432,16 +1456,16 @@ case 82:
   }
 }
     break;
-case 84:
-#line 475 "dcParser.yxx"
+case 88:
+#line 493 "dcParser.yxx"
 {
   if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) {
     current_molecular->_fields.push_back(yyvsp[0].u.atomic);
   }
 }
     break;
-case 85:
-#line 481 "dcParser.yxx"
+case 89:
+#line 499 "dcParser.yxx"
 {
   if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) {
     current_molecular->_fields.push_back(yyvsp[0].u.atomic);
@@ -1686,4 +1710,4 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 495 "dcParser.yxx"
+#line 513 "dcParser.yxx"