2010-04-06 Marek Safar <marek.safar@gmail.com>
[mono.git] / mcs / jay / output.c
index 37a60671cb08cf0b7b523c3c1dc535880b80abd1..41ebfb1dac3a1248443cfd157e18f9b132ecb94f 100644 (file)
@@ -854,6 +854,9 @@ output_debug()
     printf("  protected static %s int yyFinal = %d;\n", csharp ? "" : "final", final_state);
 
       ++outline;
+         printf ("%s // Put this array into a separate class so it is only initialized if debugging is actually used\n", prefix);
+         printf ("%s // Use MarshalByRefObject to disable inlining\n", prefix);
+         printf("%s class YYRules %s {\n", prefix, csharp ? ": MarshalByRefObject" : "");
       printf("%s  public static %s string [] yyRule = {\n", prefix, csharp ? "" : "final");
       for (i = 2; i < nrules; ++i)
       {
@@ -905,6 +908,10 @@ output_debug()
       }
       ++ outline;
       printf("%s  };\n", prefix);
+         printf ("%s public static string getRule (int index) {\n", prefix);
+         printf ("%s    return yyRule [index];\n", prefix);
+         printf ("%s }\n", prefix);
+         printf ("%s}\n", prefix);
 
     max = 0;
     for (i = 2; i < ntokens; ++i)