Author: bernhard
Date: Sat Jan  6 11:08:03 2007
New Revision: 16434

Modified:
   trunk/languages/plumhead/src/antlr3/GenPastPir.g
   trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java
   trunk/languages/plumhead/src/antlr3/Plumhead.g
   trunk/languages/plumhead/src/antlr3/PlumheadLexer.java
   trunk/languages/plumhead/src/antlr3/PlumheadParser.java

Log:
[Plumhead antlr3]
Print the sea surrounding the PHP code island.


Modified: trunk/languages/plumhead/src/antlr3/GenPastPir.g
==============================================================================
--- trunk/languages/plumhead/src/antlr3/GenPastPir.g    (original)
+++ trunk/languages/plumhead/src/antlr3/GenPastPir.g    Sat Jan  6 11:08:03 2007
@@ -76,7 +76,7 @@
         + "                                                                  
\n"
       );
     }
-    ^( CODE_START node["past_stmts"]* )
+    ^( PROGRAM node["past_stmts"]* )
     {
       System.out.println( 
           "                                                                  
\n"
@@ -114,6 +114,10 @@
 node[String reg_mother]
   : ^( ECHO STRING )
     {
+      String without_anno = $STRING.text;
+      without_anno = without_anno.replace( "start_sea", "\"" );
+      without_anno = without_anno.replace( "end_sea", "\"" );
+      without_anno = without_anno.replace( "\n", "\\n" );
       System.out.println( 
           "  # start of generic node                                         
\n"
         + "  .local pmc past_node_id2244476                                  
\n"
@@ -127,10 +131,7 @@
         + "  .local pmc past_node_id2244480                                  
\n"
         + "  past_node_id2244480 = new 'PAST::Val'                           
\n"
         + "                                                                  
\n"
-        + "      .local string decoded                                       
\n"
-        + "      decoded = " + $STRING.text + "                              
\n"
-        + "      past_node_id2244480.'attr'( 'name', decoded, 1 )            
\n"
-        + "      null decoded                                                
\n"
+        + "      past_node_id2244480.'attr'( 'name', " + without_anno + ", 1 ) 
      \n"
         + "  past_node_id2244480.'attr'( 'ctype', 's~', 1 )                  
\n"
         + "                                                                  
\n"
         + "                                                                  
\n"

Modified: trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java
==============================================================================
--- trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java       
(original)
+++ trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java       Sat Jan 
 6 11:08:03 2007
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 src/antlr3/GenPastPir.g 2007-01-06 17:04:43
+// $ANTLR 3.0b5 src/antlr3/GenPastPir.g 2007-01-06 19:05:11
 
   import java.util.regex.*;
 
@@ -10,28 +10,29 @@
 
 public class GenPastPirTreeParser extends TreeParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "SEA", "CODE_START", 
"CODE_END", "WS", "STRING", "ECHO", "';'", "PRINT", "FUNCTION", "LETTER", 
"ASSIGN_OP", "VAR", "NUMBER", "PLUS", "MINUS", "MUL_OP", "REL_OP", "NEWLINE", 
"If", "STMTS"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PROGRAM", "SEA", 
"CODE_START", "CODE_END", "WS", "STRING", "ECHO", "';'", "PRINT", "FUNCTION", 
"LETTER", "ASSIGN_OP", "VAR", "NUMBER", "PLUS", "MINUS", "MUL_OP", "REL_OP", 
"NEWLINE", "If", "STMTS"
     };
-    public static final int CODE_START=5;
-    public static final int LETTER=13;
-    public static final int MINUS=18;
-    public static final int If=22;
-    public static final int WS=7;
-    public static final int NUMBER=16;
-    public static final int STRING=8;
-    public static final int MUL_OP=19;
-    public static final int SEA=4;
-    public static final int CODE_END=6;
-    public static final int STMTS=23;
-    public static final int NEWLINE=21;
-    public static final int VAR=15;
-    public static final int ASSIGN_OP=14;
-    public static final int ECHO=9;
-    public static final int PRINT=11;
-    public static final int FUNCTION=12;
+    public static final int CODE_START=6;
+    public static final int LETTER=14;
+    public static final int MINUS=19;
+    public static final int If=23;
+    public static final int WS=8;
+    public static final int NUMBER=17;
+    public static final int STRING=9;
+    public static final int MUL_OP=20;
+    public static final int SEA=5;
+    public static final int CODE_END=7;
+    public static final int STMTS=24;
+    public static final int PROGRAM=4;
+    public static final int NEWLINE=22;
+    public static final int VAR=16;
+    public static final int ASSIGN_OP=15;
+    public static final int ECHO=10;
+    public static final int PRINT=12;
+    public static final int FUNCTION=13;
     public static final int EOF=-1;
-    public static final int REL_OP=20;
-    public static final int PLUS=17;
+    public static final int REL_OP=21;
+    public static final int PLUS=18;
 
         public GenPastPirTreeParser(TreeNodeStream input) {
             super(input);
@@ -48,11 +49,11 @@
 
 
     // $ANTLR start gen_pir_past
-    // src/antlr3/GenPastPir.g:28:1: gen_pir_past : ^( CODE_START ( 
node["past_stmts"] )* ) ;
+    // src/antlr3/GenPastPir.g:28:1: gen_pir_past : ^( PROGRAM ( 
node["past_stmts"] )* ) ;
     public void gen_pir_past() throws RecognitionException {   
         try {
-            // src/antlr3/GenPastPir.g:29:5: ( ^( CODE_START ( 
node[\"past_stmts\"] )* ) )
-            // src/antlr3/GenPastPir.g:29:5: ^( CODE_START ( 
node[\"past_stmts\"] )* )
+            // src/antlr3/GenPastPir.g:29:5: ( ^( PROGRAM ( 
node[\"past_stmts\"] )* ) )
+            // src/antlr3/GenPastPir.g:29:5: ^( PROGRAM ( node[\"past_stmts\"] 
)* )
             {
 
                   System.out.println( 
@@ -104,11 +105,11 @@
                     + "                                                        
          \n"
                   );
                 
-            match(input,CODE_START,FOLLOW_CODE_START_in_gen_pir_past75); 
+            match(input,PROGRAM,FOLLOW_PROGRAM_in_gen_pir_past75); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // src/antlr3/GenPastPir.g:79:19: ( node[\"past_stmts\"] )*
+                // src/antlr3/GenPastPir.g:79:16: ( node[\"past_stmts\"] )*
                 loop1:
                 do {
                     int alt1=2;
@@ -120,7 +121,7 @@
 
                     switch (alt1) {
                        case 1 :
-                           // src/antlr3/GenPastPir.g:79:19: 
node[\"past_stmts\"]
+                           // src/antlr3/GenPastPir.g:79:16: 
node[\"past_stmts\"]
                            {
                            pushFollow(FOLLOW_node_in_gen_pir_past77);
                            node("past_stmts");
@@ -254,6 +255,10 @@
 
                     match(input, Token.UP, null); 
 
+                          String without_anno = STRING1.getText();
+                          without_anno = without_anno.replace( "start_sea", 
"\"" );
+                          without_anno = without_anno.replace( "end_sea", "\"" 
);
+                          without_anno = without_anno.replace( "\n", "\\n" );
                           System.out.println( 
                               "  # start of generic node                       
                  \n"
                             + "  .local pmc past_node_id2244476                
                  \n"
@@ -267,10 +272,7 @@
                             + "  .local pmc past_node_id2244480                
                  \n"
                             + "  past_node_id2244480 = new 'PAST::Val'         
                  \n"
                             + "                                                
                  \n"
-                            + "      .local string decoded                     
                  \n"
-                            + "      decoded = " + STRING1.getText() + "       
                       \n"
-                            + "      past_node_id2244480.'attr'( 'name', 
decoded, 1 )            \n"
-                            + "      null decoded                              
                  \n"
+                            + "      past_node_id2244480.'attr'( 'name', " + 
without_anno + ", 1 )       \n"
                             + "  past_node_id2244480.'attr'( 'ctype', 's~', 1 
)                  \n"
                             + "                                                
                  \n"
                             + "                                                
                  \n"
@@ -292,7 +294,7 @@
                     }
                     break;
                 case 2 :
-                    // src/antlr3/GenPastPir.g:151:5: ^( PRINT 
node[\"reg_expression_exp\"] )
+                    // src/antlr3/GenPastPir.g:152:5: ^( PRINT 
node[\"reg_expression_exp\"] )
                     {
                     match(input,PRINT,FOLLOW_PRINT_in_node121); 
 
@@ -317,7 +319,7 @@
                     }
                     break;
                 case 3 :
-                    // src/antlr3/GenPastPir.g:162:5: ^( FUNCTION LETTER )
+                    // src/antlr3/GenPastPir.g:163:5: ^( FUNCTION LETTER )
                     {
                     match(input,FUNCTION,FOLLOW_FUNCTION_in_node140); 
 
@@ -332,7 +334,7 @@
                     }
                     break;
                 case 4 :
-                    // src/antlr3/GenPastPir.g:166:5: ^( ASSIGN_OP ^( VAR 
LETTER ) node[\"reg_assign_lhs\"] )
+                    // src/antlr3/GenPastPir.g:167:5: ^( ASSIGN_OP ^( VAR 
LETTER ) node[\"reg_assign_lhs\"] )
                     {
 
                           System.out.print( 
@@ -380,7 +382,7 @@
                     }
                     break;
                 case 5 :
-                    // src/antlr3/GenPastPir.g:193:5: NUMBER
+                    // src/antlr3/GenPastPir.g:194:5: NUMBER
                     {
                     NUMBER3=(CommonTree)input.LT(1);
                     match(input,NUMBER,FOLLOW_NUMBER_in_node187); 
@@ -400,7 +402,7 @@
                     }
                     break;
                 case 6 :
-                    // src/antlr3/GenPastPir.g:206:5: ^(infix= 
(PLUS|MINUS|MUL_OP|REL_OP) node[reg] node[reg] )
+                    // src/antlr3/GenPastPir.g:207:5: ^(infix= 
(PLUS|MINUS|MUL_OP|REL_OP) node[reg] node[reg] )
                     {
 
                           reg_num++;
@@ -450,7 +452,7 @@
                     }
                     break;
                 case 7 :
-                    // src/antlr3/GenPastPir.g:228:5: ^( VAR LETTER )
+                    // src/antlr3/GenPastPir.g:229:5: ^( VAR LETTER )
                     {
                     match(input,VAR,FOLLOW_VAR_in_node247); 
 
@@ -476,7 +478,7 @@
                     }
                     break;
                 case 8 :
-                    // src/antlr3/GenPastPir.g:242:5: NEWLINE
+                    // src/antlr3/GenPastPir.g:243:5: NEWLINE
                     {
                     match(input,NEWLINE,FOLLOW_NEWLINE_in_node263); 
                      
@@ -495,7 +497,7 @@
                     }
                     break;
                 case 9 :
-                    // src/antlr3/GenPastPir.g:255:5: STRING
+                    // src/antlr3/GenPastPir.g:256:5: STRING
                     {
                     STRING5=(CommonTree)input.LT(1);
                     match(input,STRING,FOLLOW_STRING_in_node275); 
@@ -518,7 +520,7 @@
                     }
                     break;
                 case 10 :
-                    // src/antlr3/GenPastPir.g:271:5: ^( If 
node[\"reg_if_op\"] node[\"reg_if_op\"] )
+                    // src/antlr3/GenPastPir.g:272:5: ^( If 
node[\"reg_if_op\"] node[\"reg_if_op\"] )
                     {
 
                           reg_num++;
@@ -557,7 +559,7 @@
                     }
                     break;
                 case 11 :
-                    // src/antlr3/GenPastPir.g:292:5: ^( STMTS ( 
node[reg_stmts] )* )
+                    // src/antlr3/GenPastPir.g:293:5: ^( STMTS ( 
node[reg_stmts] )* )
                     {
 
                           reg_num++;
@@ -571,7 +573,7 @@
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/antlr3/GenPastPir.g:300:14: ( node[reg_stmts] )*
+                        // src/antlr3/GenPastPir.g:301:14: ( node[reg_stmts] )*
                         loop2:
                         do {
                             int alt2=2;
@@ -583,7 +585,7 @@
 
                             switch (alt2) {
                                case 1 :
-                                   // src/antlr3/GenPastPir.g:300:14: 
node[reg_stmts]
+                                   // src/antlr3/GenPastPir.g:301:14: 
node[reg_stmts]
                                    {
                                    pushFollow(FOLLOW_node_in_node325);
                                    node(reg_stmts);
@@ -627,8 +629,8 @@
 
  
 
-    public static final BitSet FOLLOW_CODE_START_in_gen_pir_past75 = new 
BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_node_in_gen_pir_past77 = new BitSet(new 
long[]{0x0000000000FFDB08L});
+    public static final BitSet FOLLOW_PROGRAM_in_gen_pir_past75 = new 
BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_node_in_gen_pir_past77 = new BitSet(new 
long[]{0x0000000001FFB608L});
     public static final BitSet FOLLOW_ECHO_in_node103 = new BitSet(new 
long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_node105 = new BitSet(new 
long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_PRINT_in_node121 = new BitSet(new 
long[]{0x0000000000000004L});
@@ -641,16 +643,16 @@
     public static final BitSet FOLLOW_node_in_node172 = new BitSet(new 
long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_NUMBER_in_node187 = new BitSet(new 
long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_node211 = new BitSet(new 
long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_node_in_node227 = new BitSet(new 
long[]{0x0000000000FFDB00L});
+    public static final BitSet FOLLOW_node_in_node227 = new BitSet(new 
long[]{0x0000000001FFB600L});
     public static final BitSet FOLLOW_node_in_node230 = new BitSet(new 
long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VAR_in_node247 = new BitSet(new 
long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_LETTER_in_node249 = new BitSet(new 
long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_NEWLINE_in_node263 = new BitSet(new 
long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_STRING_in_node275 = new BitSet(new 
long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_If_in_node295 = new BitSet(new 
long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_node_in_node297 = new BitSet(new 
long[]{0x0000000000FFDB00L});
+    public static final BitSet FOLLOW_node_in_node297 = new BitSet(new 
long[]{0x0000000001FFB600L});
     public static final BitSet FOLLOW_node_in_node300 = new BitSet(new 
long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_STMTS_in_node323 = new BitSet(new 
long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_node_in_node325 = new BitSet(new 
long[]{0x0000000000FFDB08L});
+    public static final BitSet FOLLOW_node_in_node325 = new BitSet(new 
long[]{0x0000000001FFB608L});
 
 }
\ No newline at end of file

Modified: trunk/languages/plumhead/src/antlr3/Plumhead.g
==============================================================================
--- trunk/languages/plumhead/src/antlr3/Plumhead.g      (original)
+++ trunk/languages/plumhead/src/antlr3/Plumhead.g      Sat Jan  6 11:08:03 2007
@@ -13,6 +13,10 @@
   ASTLabelType = CommonTree;
 }
 
+tokens 
+{
+  PROGRAM;
+}
 // virtual tokens
 
 // real tokens
@@ -24,15 +28,15 @@
 ECHO       : 'echo' ;
 
 program 
-  : sea code sea WS? -> code
+  : s1=sea code s2=sea WS? -> ^( PROGRAM $s1 code $s2 )
   ;
 
 sea
-  : SEA
+  : SEA -> ^( ECHO STRING[$SEA] )
   ;
 
 code
-  : CODE_START statements WS? CODE_END -> ^( CODE_START statements )
+  : CODE_START statements WS? CODE_END WS? -> statements
   ;
 
 statements

Modified: trunk/languages/plumhead/src/antlr3/PlumheadLexer.java
==============================================================================
--- trunk/languages/plumhead/src/antlr3/PlumheadLexer.java      (original)
+++ trunk/languages/plumhead/src/antlr3/PlumheadLexer.java      Sat Jan  6 
11:08:03 2007
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-06 17:04:42
+// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-06 19:05:09
 
 import org.antlr.runtime.*;
 import java.util.Stack;
@@ -6,26 +6,27 @@
 import java.util.ArrayList;
 
 public class PlumheadLexer extends Lexer {
-    public static final int T10=10;
-    public static final int CODE_START=5;
-    public static final int ECHO=9;
+    public static final int CODE_START=6;
+    public static final int ECHO=10;
+    public static final int T11=11;
     public static final int EOF=-1;
-    public static final int WS=7;
-    public static final int STRING=8;
-    public static final int Tokens=11;
-    public static final int SEA=4;
-    public static final int CODE_END=6;
+    public static final int WS=8;
+    public static final int STRING=9;
+    public static final int Tokens=12;
+    public static final int SEA=5;
+    public static final int CODE_END=7;
+    public static final int PROGRAM=4;
     public PlumheadLexer() {;} 
     public PlumheadLexer(CharStream input) {
         super(input);
     }
     public String getGrammarFileName() { return "src/antlr3/Plumhead.g"; }
 
-    // $ANTLR start T10
-    public void mT10() throws RecognitionException {
+    // $ANTLR start T11
+    public void mT11() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T10;
+            int _type = T11;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
@@ -48,7 +49,7 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T10
+    // $ANTLR end T11
 
     // $ANTLR start SEA
     public void mSEA() throws RecognitionException {
@@ -59,12 +60,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:19:14: ( 'start_sea' ( options 
{greedy=false; } : . )* 'end_sea' )
-            // src/antlr3/Plumhead.g:19:14: 'start_sea' ( options 
{greedy=false; } : . )* 'end_sea'
+            // src/antlr3/Plumhead.g:23:14: ( 'start_sea' ( options 
{greedy=false; } : . )* 'end_sea' )
+            // src/antlr3/Plumhead.g:23:14: 'start_sea' ( options 
{greedy=false; } : . )* 'end_sea'
             {
             match("start_sea"); 
 
-            // src/antlr3/Plumhead.g:19:26: ( options {greedy=false; } : . )*
+            // src/antlr3/Plumhead.g:23:26: ( options {greedy=false; } : . )*
             loop1:
             do {
                 int alt1=2;
@@ -127,7 +128,7 @@
 
                 switch (alt1) {
                case 1 :
-                   // src/antlr3/Plumhead.g:19:54: .
+                   // src/antlr3/Plumhead.g:23:54: .
                    {
                    matchAny(); 
 
@@ -166,8 +167,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:20:14: ( '<?php' )
-            // src/antlr3/Plumhead.g:20:14: '<?php'
+            // src/antlr3/Plumhead.g:24:14: ( '<?php' )
+            // src/antlr3/Plumhead.g:24:14: '<?php'
             {
             match("<?php"); 
 
@@ -196,8 +197,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:21:14: ( '?>' )
-            // src/antlr3/Plumhead.g:21:14: '?>'
+            // src/antlr3/Plumhead.g:25:14: ( '?>' )
+            // src/antlr3/Plumhead.g:25:14: '?>'
             {
             match("?>"); 
 
@@ -226,10 +227,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:22:14: ( ( (' '|'\\t'|'\\r'|'\\n'))+ )
-            // src/antlr3/Plumhead.g:22:14: ( (' '|'\\t'|'\\r'|'\\n'))+
+            // src/antlr3/Plumhead.g:26:14: ( ( (' '|'\\t'|'\\r'|'\\n'))+ )
+            // src/antlr3/Plumhead.g:26:14: ( (' '|'\\t'|'\\r'|'\\n'))+
             {
-            // src/antlr3/Plumhead.g:22:14: ( (' '|'\\t'|'\\r'|'\\n'))+
+            // src/antlr3/Plumhead.g:26:14: ( (' '|'\\t'|'\\r'|'\\n'))+
             int cnt2=0;
             loop2:
             do {
@@ -242,7 +243,7 @@
 
                 switch (alt2) {
                case 1 :
-                   // src/antlr3/Plumhead.g:22:16: (' '|'\\t'|'\\r'|'\\n')
+                   // src/antlr3/Plumhead.g:26:16: (' '|'\\t'|'\\r'|'\\n')
                    {
                    if ( (input.LA(1)>='\t' && 
input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
                        input.consume();
@@ -292,11 +293,11 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:23:14: ( '\\\"' (~ '\\\"' )* '\\\"' )
-            // src/antlr3/Plumhead.g:23:14: '\\\"' (~ '\\\"' )* '\\\"'
+            // src/antlr3/Plumhead.g:27:14: ( '\\\"' (~ '\\\"' )* '\\\"' )
+            // src/antlr3/Plumhead.g:27:14: '\\\"' (~ '\\\"' )* '\\\"'
             {
             match('\"'); 
-            // src/antlr3/Plumhead.g:23:19: (~ '\\\"' )*
+            // src/antlr3/Plumhead.g:27:19: (~ '\\\"' )*
             loop3:
             do {
                 int alt3=2;
@@ -308,7 +309,7 @@
 
                 switch (alt3) {
                case 1 :
-                   // src/antlr3/Plumhead.g:23:21: ~ '\\\"'
+                   // src/antlr3/Plumhead.g:27:21: ~ '\\\"'
                    {
                    if ( (input.LA(1)>='\u0000' && 
input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFE') ) {
                        input.consume();
@@ -355,8 +356,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:24:14: ( 'echo' )
-            // src/antlr3/Plumhead.g:24:14: 'echo'
+            // src/antlr3/Plumhead.g:28:14: ( 'echo' )
+            // src/antlr3/Plumhead.g:28:14: 'echo'
             {
             match("echo"); 
 
@@ -377,7 +378,7 @@
     // $ANTLR end ECHO
 
     public void mTokens() throws RecognitionException {
-        // src/antlr3/Plumhead.g:1:10: ( T10 | SEA | CODE_START | CODE_END | 
WS | STRING | ECHO )
+        // src/antlr3/Plumhead.g:1:10: ( T11 | SEA | CODE_START | CODE_END | 
WS | STRING | ECHO )
         int alt4=7;
         switch ( input.LA(1) ) {
         case ';':
@@ -406,16 +407,16 @@
             break;
         default:
             NoViableAltException nvae =
-                new NoViableAltException("1:1: Tokens : ( T10 | SEA | 
CODE_START | CODE_END | WS | STRING | ECHO );", 4, 0, input);
+                new NoViableAltException("1:1: Tokens : ( T11 | SEA | 
CODE_START | CODE_END | WS | STRING | ECHO );", 4, 0, input);
 
             throw nvae;
         }
 
         switch (alt4) {
             case 1 :
-                // src/antlr3/Plumhead.g:1:10: T10
+                // src/antlr3/Plumhead.g:1:10: T11
                 {
-                mT10(); 
+                mT11(); 
 
                 }
                 break;

Modified: trunk/languages/plumhead/src/antlr3/PlumheadParser.java
==============================================================================
--- trunk/languages/plumhead/src/antlr3/PlumheadParser.java     (original)
+++ trunk/languages/plumhead/src/antlr3/PlumheadParser.java     Sat Jan  6 
11:08:03 2007
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-06 17:04:42
+// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-06 19:05:09
 
 import org.antlr.runtime.*;
 import java.util.Stack;
@@ -10,15 +10,16 @@
 
 public class PlumheadParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "SEA", "CODE_START", 
"CODE_END", "WS", "STRING", "ECHO", "';'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PROGRAM", "SEA", 
"CODE_START", "CODE_END", "WS", "STRING", "ECHO", "';'"
     };
-    public static final int CODE_START=5;
-    public static final int ECHO=9;
+    public static final int CODE_START=6;
+    public static final int ECHO=10;
+    public static final int WS=8;
     public static final int EOF=-1;
-    public static final int WS=7;
-    public static final int STRING=8;
-    public static final int SEA=4;
-    public static final int CODE_END=6;
+    public static final int STRING=9;
+    public static final int SEA=5;
+    public static final int CODE_END=7;
+    public static final int PROGRAM=4;
 
         public PlumheadParser(TokenStream input) {
             super(input);
@@ -43,45 +44,45 @@
     };
 
     // $ANTLR start program
-    // src/antlr3/Plumhead.g:26:1: program : sea code sea ( WS )? -> code ;
+    // src/antlr3/Plumhead.g:30:1: program : s1= sea code s2= sea ( WS )? -> 
^( PROGRAM $s1 code $s2) ;
     public program_return program() throws RecognitionException {   
         program_return retval = new program_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token WS4=null;
-        sea_return sea1 = null;
+        Token WS2=null;
+        sea_return s1 = null;
 
-        code_return code2 = null;
+        sea_return s2 = null;
 
-        sea_return sea3 = null;
+        code_return code1 = null;
 
         List list_code=new ArrayList();
         List list_sea=new ArrayList();
         List list_WS=new ArrayList();
-        CommonTree WS4_tree=null;
+        CommonTree WS2_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:27:5: ( sea code sea ( WS )? -> code )
-            // src/antlr3/Plumhead.g:27:5: sea code sea ( WS )?
+            // src/antlr3/Plumhead.g:31:5: (s1= sea code s2= sea ( WS )? -> ^( 
PROGRAM $s1 code $s2) )
+            // src/antlr3/Plumhead.g:31:5: s1= sea code s2= sea ( WS )?
             {
-            pushFollow(FOLLOW_sea_in_program179);
-            sea1=sea();
+            pushFollow(FOLLOW_sea_in_program190);
+            s1=sea();
             _fsp--;
 
-            list_sea.add(sea1.tree);
-            pushFollow(FOLLOW_code_in_program181);
-            code2=code();
+            list_sea.add(s1.tree);
+            pushFollow(FOLLOW_code_in_program192);
+            code1=code();
             _fsp--;
 
-            list_code.add(code2.tree);
-            pushFollow(FOLLOW_sea_in_program183);
-            sea3=sea();
+            list_code.add(code1.tree);
+            pushFollow(FOLLOW_sea_in_program196);
+            s2=sea();
             _fsp--;
 
-            list_sea.add(sea3.tree);
-            // src/antlr3/Plumhead.g:27:18: ( WS )?
+            list_sea.add(s2.tree);
+            // src/antlr3/Plumhead.g:31:24: ( WS )?
             int alt1=2;
             int LA1_0 = input.LA(1);
             if ( (LA1_0==WS) ) {
@@ -89,11 +90,11 @@
             }
             switch (alt1) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:27:18: WS
+                    // src/antlr3/Plumhead.g:31:24: WS
                     {
-                    WS4=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_program185); 
-                    list_WS.add(WS4);
+                    WS2=(Token)input.LT(1);
+                    match(input,WS,FOLLOW_WS_in_program198); 
+                    list_WS.add(WS2);
 
 
                     }
@@ -106,9 +107,19 @@
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 27:22: -> code
+            // 31:28: -> ^( PROGRAM $s1 code $s2)
             {
-                adaptor.addChild(root_0, list_code.get(i_0));
+                // src/antlr3/Plumhead.g:31:31: ^( PROGRAM $s1 code $s2)
+                {
+                CommonTree root_1 = (CommonTree)adaptor.nil();
+                root_1 = 
(CommonTree)adaptor.becomeRoot(adaptor.create(PROGRAM, "PROGRAM"), root_1);
+
+                adaptor.addChild(root_1, s1.tree);
+                adaptor.addChild(root_1, list_code.get(i_0));
+                adaptor.addChild(root_1, s2.tree);
+
+                adaptor.addChild(root_0, root_1);
+                }
 
             }
 
@@ -138,27 +149,44 @@
     };
 
     // $ANTLR start sea
-    // src/antlr3/Plumhead.g:30:1: sea : SEA ;
+    // src/antlr3/Plumhead.g:34:1: sea : SEA -> ^( ECHO STRING[$SEA] ) ;
     public sea_return sea() throws RecognitionException {   
         sea_return retval = new sea_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token SEA5=null;
-
-        CommonTree SEA5_tree=null;
+        Token SEA3=null;
+        List list_SEA=new ArrayList();
+        CommonTree SEA3_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:31:5: ( SEA )
-            // src/antlr3/Plumhead.g:31:5: SEA
+            // src/antlr3/Plumhead.g:35:5: ( SEA -> ^( ECHO STRING[$SEA] ) )
+            // src/antlr3/Plumhead.g:35:5: SEA
             {
+            SEA3=(Token)input.LT(1);
+            match(input,SEA,FOLLOW_SEA_in_sea228); 
+            list_SEA.add(SEA3);
+
+
+            // AST REWRITE
+            int i_0 = 0;
+            retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
+            // 35:9: -> ^( ECHO STRING[$SEA] )
+            {
+                // src/antlr3/Plumhead.g:35:12: ^( ECHO STRING[$SEA] )
+                {
+                CommonTree root_1 = (CommonTree)adaptor.nil();
+                root_1 = (CommonTree)adaptor.becomeRoot(adaptor.create(ECHO, 
"ECHO"), root_1);
+
+                adaptor.addChild(root_1, adaptor.create(STRING, SEA3));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
 
-            SEA5=(Token)input.LT(1);
-            match(input,SEA,FOLLOW_SEA_in_sea203); 
-            SEA5_tree = (CommonTree)adaptor.create(SEA5);
-            adaptor.addChild(root_0, SEA5_tree);
 
 
             }
@@ -185,40 +213,42 @@
     };
 
     // $ANTLR start code
-    // src/antlr3/Plumhead.g:34:1: code : CODE_START statements ( WS )? 
CODE_END -> ^( CODE_START statements ) ;
+    // src/antlr3/Plumhead.g:38:1: code : CODE_START statements ( WS )? 
CODE_END ( WS )? -> statements ;
     public code_return code() throws RecognitionException {   
         code_return retval = new code_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token CODE_START6=null;
+        Token CODE_START4=null;
+        Token WS6=null;
+        Token CODE_END7=null;
         Token WS8=null;
-        Token CODE_END9=null;
-        statements_return statements7 = null;
+        statements_return statements5 = null;
 
         List list_statements=new ArrayList();
         List list_CODE_START=new ArrayList();
         List list_WS=new ArrayList();
         List list_CODE_END=new ArrayList();
-        CommonTree CODE_START6_tree=null;
+        CommonTree CODE_START4_tree=null;
+        CommonTree WS6_tree=null;
+        CommonTree CODE_END7_tree=null;
         CommonTree WS8_tree=null;
-        CommonTree CODE_END9_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:35:5: ( CODE_START statements ( WS )? 
CODE_END -> ^( CODE_START statements ) )
-            // src/antlr3/Plumhead.g:35:5: CODE_START statements ( WS )? 
CODE_END
+            // src/antlr3/Plumhead.g:39:5: ( CODE_START statements ( WS )? 
CODE_END ( WS )? -> statements )
+            // src/antlr3/Plumhead.g:39:5: CODE_START statements ( WS )? 
CODE_END ( WS )?
             {
-            CODE_START6=(Token)input.LT(1);
-            match(input,CODE_START,FOLLOW_CODE_START_in_code216); 
-            list_CODE_START.add(CODE_START6);
+            CODE_START4=(Token)input.LT(1);
+            match(input,CODE_START,FOLLOW_CODE_START_in_code252); 
+            list_CODE_START.add(CODE_START4);
 
-            pushFollow(FOLLOW_statements_in_code218);
-            statements7=statements();
+            pushFollow(FOLLOW_statements_in_code254);
+            statements5=statements();
             _fsp--;
 
-            list_statements.add(statements7.tree);
-            // src/antlr3/Plumhead.g:35:27: ( WS )?
+            list_statements.add(statements5.tree);
+            // src/antlr3/Plumhead.g:39:27: ( WS )?
             int alt2=2;
             int LA2_0 = input.LA(1);
             if ( (LA2_0==WS) ) {
@@ -226,10 +256,34 @@
             }
             switch (alt2) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:35:27: WS
+                    // src/antlr3/Plumhead.g:39:27: WS
+                    {
+                    WS6=(Token)input.LT(1);
+                    match(input,WS,FOLLOW_WS_in_code256); 
+                    list_WS.add(WS6);
+
+
+                    }
+                    break;
+
+            }
+
+            CODE_END7=(Token)input.LT(1);
+            match(input,CODE_END,FOLLOW_CODE_END_in_code259); 
+            list_CODE_END.add(CODE_END7);
+
+            // src/antlr3/Plumhead.g:39:40: ( WS )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+            if ( (LA3_0==WS) ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // src/antlr3/Plumhead.g:39:40: WS
                     {
                     WS8=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_code220); 
+                    match(input,WS,FOLLOW_WS_in_code261); 
                     list_WS.add(WS8);
 
 
@@ -238,26 +292,14 @@
 
             }
 
-            CODE_END9=(Token)input.LT(1);
-            match(input,CODE_END,FOLLOW_CODE_END_in_code223); 
-            list_CODE_END.add(CODE_END9);
-
 
             // AST REWRITE
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 35:40: -> ^( CODE_START statements )
+            // 39:44: -> statements
             {
-                // src/antlr3/Plumhead.g:35:43: ^( CODE_START statements )
-                {
-                CommonTree root_1 = (CommonTree)adaptor.nil();
-                root_1 = 
(CommonTree)adaptor.becomeRoot((Token)list_CODE_START.get(i_0), root_1);
-
-                adaptor.addChild(root_1, list_statements.get(i_0));
-
-                adaptor.addChild(root_0, root_1);
-                }
+                adaptor.addChild(root_0, list_statements.get(i_0));
 
             }
 
@@ -287,53 +329,53 @@
     };
 
     // $ANTLR start statements
-    // src/antlr3/Plumhead.g:38:1: statements : ( statement )+ ;
+    // src/antlr3/Plumhead.g:42:1: statements : ( statement )+ ;
     public statements_return statements() throws RecognitionException {   
         statements_return retval = new statements_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        statement_return statement10 = null;
+        statement_return statement9 = null;
 
 
 
         try {
-            // src/antlr3/Plumhead.g:39:5: ( ( statement )+ )
-            // src/antlr3/Plumhead.g:39:5: ( statement )+
+            // src/antlr3/Plumhead.g:43:5: ( ( statement )+ )
+            // src/antlr3/Plumhead.g:43:5: ( statement )+
             {
             root_0 = (CommonTree)adaptor.nil();
 
-            // src/antlr3/Plumhead.g:39:5: ( statement )+
-            int cnt3=0;
-            loop3:
+            // src/antlr3/Plumhead.g:43:5: ( statement )+
+            int cnt4=0;
+            loop4:
             do {
-                int alt3=2;
-                int LA3_0 = input.LA(1);
-                if ( (LA3_0==WS) ) {
-                    int LA3_1 = input.LA(2);
-                    if ( (LA3_1==ECHO) ) {
-                        alt3=1;
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+                if ( (LA4_0==WS) ) {
+                    int LA4_1 = input.LA(2);
+                    if ( (LA4_1==ECHO) ) {
+                        alt4=1;
                     }
 
 
                 }
-                else if ( (LA3_0==ECHO) ) {
-                    alt3=1;
+                else if ( (LA4_0==ECHO) ) {
+                    alt4=1;
                 }
 
 
-                switch (alt3) {
+                switch (alt4) {
                case 1 :
-                   // src/antlr3/Plumhead.g:39:7: statement
+                   // src/antlr3/Plumhead.g:43:7: statement
                    {
                    CommonTree root_1 = (CommonTree)adaptor.nil();
 
-                   pushFollow(FOLLOW_statement_in_statements248);
-                   statement10=statement();
+                   pushFollow(FOLLOW_statement_in_statements281);
+                   statement9=statement();
                    _fsp--;
 
-                   adaptor.addChild(root_1, statement10.tree);
+                   adaptor.addChild(root_1, statement9.tree);
 
                    adaptor.addChild(root_0, root_1);
 
@@ -341,12 +383,12 @@
                    break;
 
                default :
-                   if ( cnt3 >= 1 ) break loop3;
+                   if ( cnt4 >= 1 ) break loop4;
                         EarlyExitException eee =
-                            new EarlyExitException(3, input);
+                            new EarlyExitException(4, input);
                         throw eee;
                 }
-                cnt3++;
+                cnt4++;
             } while (true);
 
 
@@ -374,59 +416,35 @@
     };
 
     // $ANTLR start statement
-    // src/antlr3/Plumhead.g:42:1: statement : ( WS )? ECHO ( WS )? STRING ( 
WS )? ';' -> ^( ECHO STRING ) ;
+    // src/antlr3/Plumhead.g:46:1: statement : ( WS )? ECHO ( WS )? STRING ( 
WS )? ';' -> ^( ECHO STRING ) ;
     public statement_return statement() throws RecognitionException {   
         statement_return retval = new statement_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token WS11=null;
-        Token ECHO12=null;
-        Token WS13=null;
-        Token STRING14=null;
-        Token WS15=null;
-        Token char_literal16=null;
-        List list_10=new ArrayList();
+        Token WS10=null;
+        Token ECHO11=null;
+        Token WS12=null;
+        Token STRING13=null;
+        Token WS14=null;
+        Token char_literal15=null;
         List list_ECHO=new ArrayList();
+        List list_11=new ArrayList();
         List list_WS=new ArrayList();
         List list_STRING=new ArrayList();
-        CommonTree WS11_tree=null;
-        CommonTree ECHO12_tree=null;
-        CommonTree WS13_tree=null;
-        CommonTree STRING14_tree=null;
-        CommonTree WS15_tree=null;
-        CommonTree char_literal16_tree=null;
+        CommonTree WS10_tree=null;
+        CommonTree ECHO11_tree=null;
+        CommonTree WS12_tree=null;
+        CommonTree STRING13_tree=null;
+        CommonTree WS14_tree=null;
+        CommonTree char_literal15_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:43:5: ( ( WS )? ECHO ( WS )? STRING ( WS 
)? ';' -> ^( ECHO STRING ) )
-            // src/antlr3/Plumhead.g:43:5: ( WS )? ECHO ( WS )? STRING ( WS )? 
';'
+            // src/antlr3/Plumhead.g:47:5: ( ( WS )? ECHO ( WS )? STRING ( WS 
)? ';' -> ^( ECHO STRING ) )
+            // src/antlr3/Plumhead.g:47:5: ( WS )? ECHO ( WS )? STRING ( WS )? 
';'
             {
-            // src/antlr3/Plumhead.g:43:5: ( WS )?
-            int alt4=2;
-            int LA4_0 = input.LA(1);
-            if ( (LA4_0==WS) ) {
-                alt4=1;
-            }
-            switch (alt4) {
-                case 1 :
-                    // src/antlr3/Plumhead.g:43:5: WS
-                    {
-                    WS11=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_statement264); 
-                    list_WS.add(WS11);
-
-
-                    }
-                    break;
-
-            }
-
-            ECHO12=(Token)input.LT(1);
-            match(input,ECHO,FOLLOW_ECHO_in_statement267); 
-            list_ECHO.add(ECHO12);
-
-            // src/antlr3/Plumhead.g:43:14: ( WS )?
+            // src/antlr3/Plumhead.g:47:5: ( WS )?
             int alt5=2;
             int LA5_0 = input.LA(1);
             if ( (LA5_0==WS) ) {
@@ -434,11 +452,11 @@
             }
             switch (alt5) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:43:14: WS
+                    // src/antlr3/Plumhead.g:47:5: WS
                     {
-                    WS13=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_statement269); 
-                    list_WS.add(WS13);
+                    WS10=(Token)input.LT(1);
+                    match(input,WS,FOLLOW_WS_in_statement297); 
+                    list_WS.add(WS10);
 
 
                     }
@@ -446,11 +464,11 @@
 
             }
 
-            STRING14=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_statement272); 
-            list_STRING.add(STRING14);
+            ECHO11=(Token)input.LT(1);
+            match(input,ECHO,FOLLOW_ECHO_in_statement300); 
+            list_ECHO.add(ECHO11);
 
-            // src/antlr3/Plumhead.g:43:25: ( WS )?
+            // src/antlr3/Plumhead.g:47:14: ( WS )?
             int alt6=2;
             int LA6_0 = input.LA(1);
             if ( (LA6_0==WS) ) {
@@ -458,11 +476,35 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:43:25: WS
+                    // src/antlr3/Plumhead.g:47:14: WS
+                    {
+                    WS12=(Token)input.LT(1);
+                    match(input,WS,FOLLOW_WS_in_statement302); 
+                    list_WS.add(WS12);
+
+
+                    }
+                    break;
+
+            }
+
+            STRING13=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_statement305); 
+            list_STRING.add(STRING13);
+
+            // src/antlr3/Plumhead.g:47:25: ( WS )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+            if ( (LA7_0==WS) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // src/antlr3/Plumhead.g:47:25: WS
                     {
-                    WS15=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_statement274); 
-                    list_WS.add(WS15);
+                    WS14=(Token)input.LT(1);
+                    match(input,WS,FOLLOW_WS_in_statement307); 
+                    list_WS.add(WS14);
 
 
                     }
@@ -470,18 +512,18 @@
 
             }
 
-            char_literal16=(Token)input.LT(1);
-            match(input,10,FOLLOW_10_in_statement277); 
-            list_10.add(char_literal16);
+            char_literal15=(Token)input.LT(1);
+            match(input,11,FOLLOW_11_in_statement310); 
+            list_11.add(char_literal15);
 
 
             // AST REWRITE
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 43:33: -> ^( ECHO STRING )
+            // 47:33: -> ^( ECHO STRING )
             {
-                // src/antlr3/Plumhead.g:43:36: ^( ECHO STRING )
+                // src/antlr3/Plumhead.g:47:36: ^( ECHO STRING )
                 {
                 CommonTree root_1 = (CommonTree)adaptor.nil();
                 root_1 = 
(CommonTree)adaptor.becomeRoot((Token)list_ECHO.get(i_0), root_1);
@@ -516,21 +558,22 @@
 
  
 
-    public static final BitSet FOLLOW_sea_in_program179 = new BitSet(new 
long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_code_in_program181 = new BitSet(new 
long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_sea_in_program183 = new BitSet(new 
long[]{0x0000000000000082L});
-    public static final BitSet FOLLOW_WS_in_program185 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEA_in_sea203 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CODE_START_in_code216 = new BitSet(new 
long[]{0x0000000000000280L});
-    public static final BitSet FOLLOW_statements_in_code218 = new BitSet(new 
long[]{0x00000000000000C0L});
-    public static final BitSet FOLLOW_WS_in_code220 = new BitSet(new 
long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_CODE_END_in_code223 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_statements248 = new 
BitSet(new long[]{0x0000000000000282L});
-    public static final BitSet FOLLOW_WS_in_statement264 = new BitSet(new 
long[]{0x0000000000000200L});
-    public static final BitSet FOLLOW_ECHO_in_statement267 = new BitSet(new 
long[]{0x0000000000000180L});
-    public static final BitSet FOLLOW_WS_in_statement269 = new BitSet(new 
long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_STRING_in_statement272 = new BitSet(new 
long[]{0x0000000000000480L});
-    public static final BitSet FOLLOW_WS_in_statement274 = new BitSet(new 
long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_10_in_statement277 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_sea_in_program190 = new BitSet(new 
long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_code_in_program192 = new BitSet(new 
long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_sea_in_program196 = new BitSet(new 
long[]{0x0000000000000102L});
+    public static final BitSet FOLLOW_WS_in_program198 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEA_in_sea228 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CODE_START_in_code252 = new BitSet(new 
long[]{0x0000000000000500L});
+    public static final BitSet FOLLOW_statements_in_code254 = new BitSet(new 
long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_WS_in_code256 = new BitSet(new 
long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_CODE_END_in_code259 = new BitSet(new 
long[]{0x0000000000000102L});
+    public static final BitSet FOLLOW_WS_in_code261 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statement_in_statements281 = new 
BitSet(new long[]{0x0000000000000502L});
+    public static final BitSet FOLLOW_WS_in_statement297 = new BitSet(new 
long[]{0x0000000000000400L});
+    public static final BitSet FOLLOW_ECHO_in_statement300 = new BitSet(new 
long[]{0x0000000000000300L});
+    public static final BitSet FOLLOW_WS_in_statement302 = new BitSet(new 
long[]{0x0000000000000200L});
+    public static final BitSet FOLLOW_STRING_in_statement305 = new BitSet(new 
long[]{0x0000000000000900L});
+    public static final BitSet FOLLOW_WS_in_statement307 = new BitSet(new 
long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_11_in_statement310 = new BitSet(new 
long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Reply via email to