Author: bernhard
Date: Sun Jan  7 07:33:40 2007
New Revision: 16462

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
   trunk/languages/plumhead/t/arithmetics.t

Log:
[Plumhead antlr3]
Use $channel = HIDDEN; for throwing away whitespace
Add support for      echo  1 + 2 + 3


Modified: trunk/languages/plumhead/src/antlr3/GenPastPir.g
==============================================================================
--- trunk/languages/plumhead/src/antlr3/GenPastPir.g    (original)
+++ trunk/languages/plumhead/src/antlr3/GenPastPir.g    Sun Jan  7 07:33:40 2007
@@ -171,8 +171,15 @@
     }
     ^( infix=( PLUS | MINUS | MUL_OP | REL_OP ) node[reg] node[reg] )
     {
+      // Todo. This is not nice, handl pirops in Plumhead.g
+      String pirop = $infix.text;
+      if ( pirop.equals( "+" ) )
+      {
+        pirop = "n_add";
+      }
+      
       System.out.print( 
-          "  " + reg + ".'attr'( 'pirop', '" + $infix.text + "' , 1 )    \n"
+          "  " + reg + ".'attr'( 'pirop', '" + pirop + "' , 1 )               
\n"
         + "  " + $node.reg_mother + ".'push'( " + reg + " )                   
\n"
         + "      null " + reg + "                                             
\n"
         + "    # leaving ( PLUS | MINUS | MUL | DIV )                         
\n"

Modified: trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java
==============================================================================
--- trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java       
(original)
+++ trunk/languages/plumhead/src/antlr3/GenPastPirTreeParser.java       Sun Jan 
 7 07:33:40 2007
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 src/antlr3/GenPastPir.g 2007-01-07 14:13:15
+// $ANTLR 3.0b5 src/antlr3/GenPastPir.g 2007-01-07 15:27:01
 
   import java.util.regex.*;
 
@@ -356,8 +356,15 @@
 
                     match(input, Token.UP, null); 
 
+                          // Todo. This is not nice, handl pirops in Plumhead.g
+                          String pirop = infix.getText();
+                          if ( pirop.equals( "+" ) )
+                          {
+                            pirop = "n_add";
+                          }
+                          
                           System.out.print( 
-                              "  " + reg + ".'attr'( 'pirop', '" + 
infix.getText() + "' , 1 )    \n"
+                              "  " + reg + ".'attr'( 'pirop', '" + pirop + "' 
, 1 )               \n"
                             + "  " + reg_mother + ".'push'( " + reg + " )      
             \n"
                             + "      null " + reg + "                          
                   \n"
                             + "    # leaving ( PLUS | MINUS | MUL | DIV )      
                   \n"
@@ -367,7 +374,7 @@
                     }
                     break;
                 case 5 :
-                    // src/antlr3/GenPastPir.g:181:5: ^( FUNCTION LETTER )
+                    // src/antlr3/GenPastPir.g:188:5: ^( FUNCTION LETTER )
                     {
                     match(input,FUNCTION,FOLLOW_FUNCTION_in_node198); 
 
@@ -382,7 +389,7 @@
                     }
                     break;
                 case 6 :
-                    // src/antlr3/GenPastPir.g:185:5: ^( ASSIGN_OP ^( VAR 
LETTER ) node[\"reg_assign_lhs\"] )
+                    // src/antlr3/GenPastPir.g:192:5: ^( ASSIGN_OP ^( VAR 
LETTER ) node[\"reg_assign_lhs\"] )
                     {
 
                           System.out.print( 
@@ -430,7 +437,7 @@
                     }
                     break;
                 case 7 :
-                    // src/antlr3/GenPastPir.g:212:5: NUMBER
+                    // src/antlr3/GenPastPir.g:219:5: NUMBER
                     {
                     NUMBER4=(CommonTree)input.LT(1);
                     match(input,NUMBER,FOLLOW_NUMBER_in_node245); 
@@ -450,7 +457,7 @@
                     }
                     break;
                 case 8 :
-                    // src/antlr3/GenPastPir.g:225:5: ^( VAR LETTER )
+                    // src/antlr3/GenPastPir.g:232:5: ^( VAR LETTER )
                     {
                     match(input,VAR,FOLLOW_VAR_in_node259); 
 
@@ -476,7 +483,7 @@
                     }
                     break;
                 case 9 :
-                    // src/antlr3/GenPastPir.g:239:5: NEWLINE
+                    // src/antlr3/GenPastPir.g:246:5: NEWLINE
                     {
                     match(input,NEWLINE,FOLLOW_NEWLINE_in_node275); 
                      
@@ -495,7 +502,7 @@
                     }
                     break;
                 case 10 :
-                    // src/antlr3/GenPastPir.g:252:5: ^( If 
node[\"reg_if_op\"] node[\"reg_if_op\"] )
+                    // src/antlr3/GenPastPir.g:259:5: ^( If 
node[\"reg_if_op\"] node[\"reg_if_op\"] )
                     {
 
                           reg_num++;
@@ -534,7 +541,7 @@
                     }
                     break;
                 case 11 :
-                    // src/antlr3/GenPastPir.g:273:5: ^( STMTS ( 
node[reg_stmts] )* )
+                    // src/antlr3/GenPastPir.g:280:5: ^( STMTS ( 
node[reg_stmts] )* )
                     {
 
                           reg_num++;
@@ -548,7 +555,7 @@
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/antlr3/GenPastPir.g:281:14: ( node[reg_stmts] )*
+                        // src/antlr3/GenPastPir.g:288:14: ( node[reg_stmts] )*
                         loop2:
                         do {
                             int alt2=2;
@@ -560,7 +567,7 @@
 
                             switch (alt2) {
                                case 1 :
-                                   // src/antlr3/GenPastPir.g:281:14: 
node[reg_stmts]
+                                   // src/antlr3/GenPastPir.g:288:14: 
node[reg_stmts]
                                    {
                                    pushFollow(FOLLOW_node_in_node325);
                                    node(reg_stmts);

Modified: trunk/languages/plumhead/src/antlr3/Plumhead.g
==============================================================================
--- trunk/languages/plumhead/src/antlr3/Plumhead.g      (original)
+++ trunk/languages/plumhead/src/antlr3/Plumhead.g      Sun Jan  7 07:33:40 2007
@@ -23,7 +23,12 @@
 SEA        : 'start_sea' ( options {greedy=false;} : . )* 'end_sea' ;
 CODE_START : '<?php' ;
 CODE_END   : '?>' ;
-WS         : ( ' ' | '\t' | '\r' | '\n' )+ ;    
+WS
+  : ( ' ' | '\t' | '\r' | '\n' )+
+    {
+      $channel = HIDDEN;       // send into nirwana 
+    }
+  ;
 STRING     : '\"' ( ~'\"' )*  '\"' ;
 ECHO       : 'echo' ;
 INTEGER    : ( '0'..'9' )+ ;
@@ -34,7 +39,7 @@
 
 
 program 
-  : s1=sea code s2=sea WS? -> ^( PROGRAM $s1 code $s2 )
+  : s1=sea code s2=sea -> ^( PROGRAM $s1 code $s2 )
   ;
 
 sea
@@ -42,7 +47,7 @@
   ;
 
 code
-  : CODE_START statements WS? CODE_END WS? -> statements
+  : CODE_START statements CODE_END -> statements
   ;
 
 statements
@@ -50,12 +55,20 @@
   ;
 
 statement
-  : WS? ECHO WS? expression WS? ';' -> ^( ECHO expression )
+  : ECHO expression ';' -> ^( ECHO expression )
   ;
 
 expression
   : STRING
-  | unary_expression
+  | adding_expression
+  ;
+
+adding_expression
+  : multiplying_expression ( ( PLUS^^ | MINUS^^ ) multiplying_expression )* 
+  ;
+
+multiplying_expression
+  : unary_expression
   ;
 
 unary_expression

Modified: trunk/languages/plumhead/src/antlr3/PlumheadLexer.java
==============================================================================
--- trunk/languages/plumhead/src/antlr3/PlumheadLexer.java      (original)
+++ trunk/languages/plumhead/src/antlr3/PlumheadLexer.java      Sun Jan  7 
07:33:40 2007
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-07 14:13:14
+// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-07 15:26:59
 
 import org.antlr.runtime.*;
 import java.util.Stack;
@@ -232,10 +232,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:26:14: ( ( (' '|'\\t'|'\\r'|'\\n'))+ )
-            // src/antlr3/Plumhead.g:26:14: ( (' '|'\\t'|'\\r'|'\\n'))+
+            // src/antlr3/Plumhead.g:27:5: ( ( (' '|'\\t'|'\\r'|'\\n'))+ )
+            // src/antlr3/Plumhead.g:27:5: ( (' '|'\\t'|'\\r'|'\\n'))+
             {
-            // src/antlr3/Plumhead.g:26:14: ( (' '|'\\t'|'\\r'|'\\n'))+
+            // src/antlr3/Plumhead.g:27:5: ( (' '|'\\t'|'\\r'|'\\n'))+
             int cnt2=0;
             loop2:
             do {
@@ -248,7 +248,7 @@
 
                 switch (alt2) {
                case 1 :
-                   // src/antlr3/Plumhead.g:26:16: (' '|'\\t'|'\\r'|'\\n')
+                   // src/antlr3/Plumhead.g:27:7: (' '|'\\t'|'\\r'|'\\n')
                    {
                    if ( (input.LA(1)>='\t' && 
input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
                        input.consume();
@@ -274,6 +274,9 @@
             } while (true);
 
 
+                  _channel = HIDDEN;       // send into nirwana 
+                
+
             }
 
 
@@ -298,11 +301,11 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:27:14: ( '\\\"' (~ '\\\"' )* '\\\"' )
-            // src/antlr3/Plumhead.g:27:14: '\\\"' (~ '\\\"' )* '\\\"'
+            // src/antlr3/Plumhead.g:32:14: ( '\\\"' (~ '\\\"' )* '\\\"' )
+            // src/antlr3/Plumhead.g:32:14: '\\\"' (~ '\\\"' )* '\\\"'
             {
             match('\"'); 
-            // src/antlr3/Plumhead.g:27:19: (~ '\\\"' )*
+            // src/antlr3/Plumhead.g:32:19: (~ '\\\"' )*
             loop3:
             do {
                 int alt3=2;
@@ -314,7 +317,7 @@
 
                 switch (alt3) {
                case 1 :
-                   // src/antlr3/Plumhead.g:27:21: ~ '\\\"'
+                   // src/antlr3/Plumhead.g:32:21: ~ '\\\"'
                    {
                    if ( (input.LA(1)>='\u0000' && 
input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFE') ) {
                        input.consume();
@@ -361,8 +364,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:28:14: ( 'echo' )
-            // src/antlr3/Plumhead.g:28:14: 'echo'
+            // src/antlr3/Plumhead.g:33:14: ( 'echo' )
+            // src/antlr3/Plumhead.g:33:14: 'echo'
             {
             match("echo"); 
 
@@ -391,10 +394,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:29:14: ( ( '0' .. '9' )+ )
-            // src/antlr3/Plumhead.g:29:14: ( '0' .. '9' )+
+            // src/antlr3/Plumhead.g:34:14: ( ( '0' .. '9' )+ )
+            // src/antlr3/Plumhead.g:34:14: ( '0' .. '9' )+
             {
-            // src/antlr3/Plumhead.g:29:14: ( '0' .. '9' )+
+            // src/antlr3/Plumhead.g:34:14: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -407,7 +410,7 @@
 
                 switch (alt4) {
                case 1 :
-                   // src/antlr3/Plumhead.g:29:16: '0' .. '9'
+                   // src/antlr3/Plumhead.g:34:16: '0' .. '9'
                    {
                    matchRange('0','9'); 
 
@@ -448,8 +451,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:30:14: ( '-' )
-            // src/antlr3/Plumhead.g:30:14: '-'
+            // src/antlr3/Plumhead.g:35:14: ( '-' )
+            // src/antlr3/Plumhead.g:35:14: '-'
             {
             match('-'); 
 
@@ -477,8 +480,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:31:14: ( '+' )
-            // src/antlr3/Plumhead.g:31:14: '+'
+            // src/antlr3/Plumhead.g:36:14: ( '+' )
+            // src/antlr3/Plumhead.g:36:14: '+'
             {
             match('+'); 
 
@@ -506,8 +509,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:32:12: ( ('*'|'/'|'%'))
-            // src/antlr3/Plumhead.g:32:14: ('*'|'/'|'%')
+            // src/antlr3/Plumhead.g:37:12: ( ('*'|'/'|'%'))
+            // src/antlr3/Plumhead.g:37:14: ('*'|'/'|'%')
             {
             if ( input.LA(1)=='%'||input.LA(1)=='*'||input.LA(1)=='/' ) {
                 input.consume();
@@ -544,7 +547,7 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // src/antlr3/Plumhead.g:33:14: ( '==' | '<=' | '>=' | '!=' | '<' 
| '>' )
+            // src/antlr3/Plumhead.g:38:14: ( '==' | '<=' | '>=' | '!=' | '<' 
| '>' )
             int alt5=6;
             switch ( input.LA(1) ) {
             case '=':
@@ -571,14 +574,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("33:1: REL_OP : ( '==' | '<=' | 
'>=' | '!=' | '<' | '>' );", 5, 0, input);
+                    new NoViableAltException("38:1: REL_OP : ( '==' | '<=' | 
'>=' | '!=' | '<' | '>' );", 5, 0, input);
 
                 throw nvae;
             }
 
             switch (alt5) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:33:14: '=='
+                    // src/antlr3/Plumhead.g:38:14: '=='
                     {
                     match("=="); 
 
@@ -586,7 +589,7 @@
                     }
                     break;
                 case 2 :
-                    // src/antlr3/Plumhead.g:33:21: '<='
+                    // src/antlr3/Plumhead.g:38:21: '<='
                     {
                     match("<="); 
 
@@ -594,7 +597,7 @@
                     }
                     break;
                 case 3 :
-                    // src/antlr3/Plumhead.g:33:28: '>='
+                    // src/antlr3/Plumhead.g:38:28: '>='
                     {
                     match(">="); 
 
@@ -602,7 +605,7 @@
                     }
                     break;
                 case 4 :
-                    // src/antlr3/Plumhead.g:33:35: '!='
+                    // src/antlr3/Plumhead.g:38:35: '!='
                     {
                     match("!="); 
 
@@ -610,14 +613,14 @@
                     }
                     break;
                 case 5 :
-                    // src/antlr3/Plumhead.g:33:42: '<'
+                    // src/antlr3/Plumhead.g:38:42: '<'
                     {
                     match('<'); 
 
                     }
                     break;
                 case 6 :
-                    // src/antlr3/Plumhead.g:33:49: '>'
+                    // src/antlr3/Plumhead.g:38:49: '>'
                     {
                     match('>'); 
 

Modified: trunk/languages/plumhead/src/antlr3/PlumheadParser.java
==============================================================================
--- trunk/languages/plumhead/src/antlr3/PlumheadParser.java     (original)
+++ trunk/languages/plumhead/src/antlr3/PlumheadParser.java     Sun Jan  7 
07:33:40 2007
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-07 14:13:13
+// $ANTLR 3.0b5 src/antlr3/Plumhead.g 2007-01-07 15:26:58
 
 import org.antlr.runtime.*;
 import java.util.Stack;
@@ -49,14 +49,13 @@
     };
 
     // $ANTLR start program
-    // src/antlr3/Plumhead.g:36:1: program : s1= sea code s2= sea ( WS )? -> 
^( PROGRAM $s1 code $s2) ;
+    // src/antlr3/Plumhead.g:41:1: program : s1= sea code s2= sea -> ^( 
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 WS2=null;
         sea_return s1 = null;
 
         sea_return s2 = null;
@@ -65,56 +64,34 @@
 
         List list_code=new ArrayList();
         List list_sea=new ArrayList();
-        List list_WS=new ArrayList();
-        CommonTree WS2_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:37:5: (s1= sea code s2= sea ( WS )? -> ^( 
PROGRAM $s1 code $s2) )
-            // src/antlr3/Plumhead.g:37:5: s1= sea code s2= sea ( WS )?
+            // src/antlr3/Plumhead.g:42:5: (s1= sea code s2= sea -> ^( PROGRAM 
$s1 code $s2) )
+            // src/antlr3/Plumhead.g:42:5: s1= sea code s2= sea
             {
-            pushFollow(FOLLOW_sea_in_program291);
+            pushFollow(FOLLOW_sea_in_program289);
             s1=sea();
             _fsp--;
 
             list_sea.add(s1.tree);
-            pushFollow(FOLLOW_code_in_program293);
+            pushFollow(FOLLOW_code_in_program291);
             code1=code();
             _fsp--;
 
             list_code.add(code1.tree);
-            pushFollow(FOLLOW_sea_in_program297);
+            pushFollow(FOLLOW_sea_in_program295);
             s2=sea();
             _fsp--;
 
             list_sea.add(s2.tree);
-            // src/antlr3/Plumhead.g:37:24: ( WS )?
-            int alt1=2;
-            int LA1_0 = input.LA(1);
-            if ( (LA1_0==WS) ) {
-                alt1=1;
-            }
-            switch (alt1) {
-                case 1 :
-                    // src/antlr3/Plumhead.g:37:24: WS
-                    {
-                    WS2=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_program299); 
-                    list_WS.add(WS2);
-
-
-                    }
-                    break;
-
-            }
-
 
             // AST REWRITE
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 37:28: -> ^( PROGRAM $s1 code $s2)
+            // 42:24: -> ^( PROGRAM $s1 code $s2)
             {
-                // src/antlr3/Plumhead.g:37:31: ^( PROGRAM $s1 code $s2)
+                // src/antlr3/Plumhead.g:42:27: ^( PROGRAM $s1 code $s2)
                 {
                 CommonTree root_1 = (CommonTree)adaptor.nil();
                 root_1 = 
(CommonTree)adaptor.becomeRoot(adaptor.create(PROGRAM, "PROGRAM"), root_1);
@@ -154,38 +131,38 @@
     };
 
     // $ANTLR start sea
-    // src/antlr3/Plumhead.g:40:1: sea : SEA -> ^( ECHO STRING[$SEA] ) ;
+    // src/antlr3/Plumhead.g:45: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 SEA3=null;
+        Token SEA2=null;
         List list_SEA=new ArrayList();
-        CommonTree SEA3_tree=null;
+        CommonTree SEA2_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:41:5: ( SEA -> ^( ECHO STRING[$SEA] ) )
-            // src/antlr3/Plumhead.g:41:5: SEA
+            // src/antlr3/Plumhead.g:46:5: ( SEA -> ^( ECHO STRING[$SEA] ) )
+            // src/antlr3/Plumhead.g:46:5: SEA
             {
-            SEA3=(Token)input.LT(1);
-            match(input,SEA,FOLLOW_SEA_in_sea329); 
-            list_SEA.add(SEA3);
+            SEA2=(Token)input.LT(1);
+            match(input,SEA,FOLLOW_SEA_in_sea324); 
+            list_SEA.add(SEA2);
 
 
             // AST REWRITE
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 41:9: -> ^( ECHO STRING[$SEA] )
+            // 46:9: -> ^( ECHO STRING[$SEA] )
             {
-                // src/antlr3/Plumhead.g:41:12: ^( ECHO STRING[$SEA] )
+                // src/antlr3/Plumhead.g:46: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_1, adaptor.create(STRING, SEA2));
 
                 adaptor.addChild(root_0, root_1);
                 }
@@ -218,91 +195,46 @@
     };
 
     // $ANTLR start code
-    // src/antlr3/Plumhead.g:44:1: code : CODE_START statements ( WS )? 
CODE_END ( WS )? -> statements ;
+    // src/antlr3/Plumhead.g:49:1: code : CODE_START statements CODE_END -> 
statements ;
     public code_return code() throws RecognitionException {   
         code_return retval = new code_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token CODE_START4=null;
-        Token WS6=null;
-        Token CODE_END7=null;
-        Token WS8=null;
-        statements_return statements5 = null;
+        Token CODE_START3=null;
+        Token CODE_END5=null;
+        statements_return statements4 = 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_START4_tree=null;
-        CommonTree WS6_tree=null;
-        CommonTree CODE_END7_tree=null;
-        CommonTree WS8_tree=null;
+        CommonTree CODE_START3_tree=null;
+        CommonTree CODE_END5_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:45:5: ( CODE_START statements ( WS )? 
CODE_END ( WS )? -> statements )
-            // src/antlr3/Plumhead.g:45:5: CODE_START statements ( WS )? 
CODE_END ( WS )?
+            // src/antlr3/Plumhead.g:50:5: ( CODE_START statements CODE_END -> 
statements )
+            // src/antlr3/Plumhead.g:50:5: CODE_START statements CODE_END
             {
-            CODE_START4=(Token)input.LT(1);
-            match(input,CODE_START,FOLLOW_CODE_START_in_code353); 
-            list_CODE_START.add(CODE_START4);
+            CODE_START3=(Token)input.LT(1);
+            match(input,CODE_START,FOLLOW_CODE_START_in_code348); 
+            list_CODE_START.add(CODE_START3);
 
-            pushFollow(FOLLOW_statements_in_code355);
-            statements5=statements();
+            pushFollow(FOLLOW_statements_in_code350);
+            statements4=statements();
             _fsp--;
 
-            list_statements.add(statements5.tree);
-            // src/antlr3/Plumhead.g:45:27: ( WS )?
-            int alt2=2;
-            int LA2_0 = input.LA(1);
-            if ( (LA2_0==WS) ) {
-                alt2=1;
-            }
-            switch (alt2) {
-                case 1 :
-                    // src/antlr3/Plumhead.g:45:27: WS
-                    {
-                    WS6=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_code357); 
-                    list_WS.add(WS6);
-
-
-                    }
-                    break;
-
-            }
-
-            CODE_END7=(Token)input.LT(1);
-            match(input,CODE_END,FOLLOW_CODE_END_in_code360); 
-            list_CODE_END.add(CODE_END7);
-
-            // src/antlr3/Plumhead.g:45: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:45:40: WS
-                    {
-                    WS8=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_code362); 
-                    list_WS.add(WS8);
-
-
-                    }
-                    break;
-
-            }
+            list_statements.add(statements4.tree);
+            CODE_END5=(Token)input.LT(1);
+            match(input,CODE_END,FOLLOW_CODE_END_in_code352); 
+            list_CODE_END.add(CODE_END5);
 
 
             // AST REWRITE
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 45:44: -> statements
+            // 50:36: -> statements
             {
                 adaptor.addChild(root_0, list_statements.get(i_0));
 
@@ -334,53 +266,45 @@
     };
 
     // $ANTLR start statements
-    // src/antlr3/Plumhead.g:48:1: statements : ( statement )+ ;
+    // src/antlr3/Plumhead.g:53: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 statement9 = null;
+        statement_return statement6 = null;
 
 
 
         try {
-            // src/antlr3/Plumhead.g:49:5: ( ( statement )+ )
-            // src/antlr3/Plumhead.g:49:5: ( statement )+
+            // src/antlr3/Plumhead.g:54:5: ( ( statement )+ )
+            // src/antlr3/Plumhead.g:54:5: ( statement )+
             {
             root_0 = (CommonTree)adaptor.nil();
 
-            // src/antlr3/Plumhead.g:49:5: ( statement )+
-            int cnt4=0;
-            loop4:
+            // src/antlr3/Plumhead.g:54:5: ( statement )+
+            int cnt1=0;
+            loop1:
             do {
-                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 ( (LA4_0==ECHO) ) {
-                    alt4=1;
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+                if ( (LA1_0==ECHO) ) {
+                    alt1=1;
                 }
 
 
-                switch (alt4) {
+                switch (alt1) {
                case 1 :
-                   // src/antlr3/Plumhead.g:49:7: statement
+                   // src/antlr3/Plumhead.g:54:7: statement
                    {
                    CommonTree root_1 = (CommonTree)adaptor.nil();
 
-                   pushFollow(FOLLOW_statement_in_statements382);
-                   statement9=statement();
+                   pushFollow(FOLLOW_statement_in_statements371);
+                   statement6=statement();
                    _fsp--;
 
-                   adaptor.addChild(root_1, statement9.tree);
+                   adaptor.addChild(root_1, statement6.tree);
 
                    adaptor.addChild(root_0, root_1);
 
@@ -388,12 +312,12 @@
                    break;
 
                default :
-                   if ( cnt4 >= 1 ) break loop4;
+                   if ( cnt1 >= 1 ) break loop1;
                         EarlyExitException eee =
-                            new EarlyExitException(4, input);
+                            new EarlyExitException(1, input);
                         throw eee;
                 }
-                cnt4++;
+                cnt1++;
             } while (true);
 
 
@@ -421,115 +345,48 @@
     };
 
     // $ANTLR start statement
-    // src/antlr3/Plumhead.g:52:1: statement : ( WS )? ECHO ( WS )? expression 
( WS )? ';' -> ^( ECHO expression ) ;
+    // src/antlr3/Plumhead.g:57:1: statement : ECHO expression ';' -> ^( ECHO 
expression ) ;
     public statement_return statement() throws RecognitionException {   
         statement_return retval = new statement_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token WS10=null;
-        Token ECHO11=null;
-        Token WS12=null;
-        Token WS14=null;
-        Token char_literal15=null;
-        expression_return expression13 = null;
+        Token ECHO7=null;
+        Token char_literal9=null;
+        expression_return expression8 = null;
 
         List list_expression=new ArrayList();
         List list_16=new ArrayList();
         List list_ECHO=new ArrayList();
-        List list_WS=new ArrayList();
-        CommonTree WS10_tree=null;
-        CommonTree ECHO11_tree=null;
-        CommonTree WS12_tree=null;
-        CommonTree WS14_tree=null;
-        CommonTree char_literal15_tree=null;
+        CommonTree ECHO7_tree=null;
+        CommonTree char_literal9_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:53:5: ( ( WS )? ECHO ( WS )? expression ( 
WS )? ';' -> ^( ECHO expression ) )
-            // src/antlr3/Plumhead.g:53:5: ( WS )? ECHO ( WS )? expression ( 
WS )? ';'
+            // src/antlr3/Plumhead.g:58:5: ( ECHO expression ';' -> ^( ECHO 
expression ) )
+            // src/antlr3/Plumhead.g:58:5: ECHO expression ';'
             {
-            // src/antlr3/Plumhead.g:53:5: ( WS )?
-            int alt5=2;
-            int LA5_0 = input.LA(1);
-            if ( (LA5_0==WS) ) {
-                alt5=1;
-            }
-            switch (alt5) {
-                case 1 :
-                    // src/antlr3/Plumhead.g:53:5: WS
-                    {
-                    WS10=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_statement398); 
-                    list_WS.add(WS10);
+            ECHO7=(Token)input.LT(1);
+            match(input,ECHO,FOLLOW_ECHO_in_statement387); 
+            list_ECHO.add(ECHO7);
 
-
-                    }
-                    break;
-
-            }
-
-            ECHO11=(Token)input.LT(1);
-            match(input,ECHO,FOLLOW_ECHO_in_statement401); 
-            list_ECHO.add(ECHO11);
-
-            // src/antlr3/Plumhead.g:53:14: ( WS )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
-            if ( (LA6_0==WS) ) {
-                alt6=1;
-            }
-            switch (alt6) {
-                case 1 :
-                    // src/antlr3/Plumhead.g:53:14: WS
-                    {
-                    WS12=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_statement403); 
-                    list_WS.add(WS12);
-
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_expression_in_statement406);
-            expression13=expression();
+            pushFollow(FOLLOW_expression_in_statement389);
+            expression8=expression();
             _fsp--;
 
-            list_expression.add(expression13.tree);
-            // src/antlr3/Plumhead.g:53:29: ( WS )?
-            int alt7=2;
-            int LA7_0 = input.LA(1);
-            if ( (LA7_0==WS) ) {
-                alt7=1;
-            }
-            switch (alt7) {
-                case 1 :
-                    // src/antlr3/Plumhead.g:53:29: WS
-                    {
-                    WS14=(Token)input.LT(1);
-                    match(input,WS,FOLLOW_WS_in_statement408); 
-                    list_WS.add(WS14);
-
-
-                    }
-                    break;
-
-            }
-
-            char_literal15=(Token)input.LT(1);
-            match(input,16,FOLLOW_16_in_statement411); 
-            list_16.add(char_literal15);
+            list_expression.add(expression8.tree);
+            char_literal9=(Token)input.LT(1);
+            match(input,16,FOLLOW_16_in_statement391); 
+            list_16.add(char_literal9);
 
 
             // AST REWRITE
             int i_0 = 0;
             retval.tree = root_0;
             root_0 = (CommonTree)adaptor.nil();
-            // 53:37: -> ^( ECHO expression )
+            // 58:25: -> ^( ECHO expression )
             {
-                // src/antlr3/Plumhead.g:53:40: ^( ECHO expression )
+                // src/antlr3/Plumhead.g:58:28: ^( ECHO expression )
                 {
                 CommonTree root_1 = (CommonTree)adaptor.nil();
                 root_1 = 
(CommonTree)adaptor.becomeRoot((Token)list_ECHO.get(i_0), root_1);
@@ -567,59 +424,59 @@
     };
 
     // $ANTLR start expression
-    // src/antlr3/Plumhead.g:56:1: expression : ( STRING | unary_expression );
+    // src/antlr3/Plumhead.g:61:1: expression : ( STRING | adding_expression );
     public expression_return expression() throws RecognitionException {   
         expression_return retval = new expression_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token STRING16=null;
-        unary_expression_return unary_expression17 = null;
+        Token STRING10=null;
+        adding_expression_return adding_expression11 = null;
 
 
-        CommonTree STRING16_tree=null;
+        CommonTree STRING10_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:57:5: ( STRING | unary_expression )
-            int alt8=2;
-            int LA8_0 = input.LA(1);
-            if ( (LA8_0==STRING) ) {
-                alt8=1;
+            // src/antlr3/Plumhead.g:62:5: ( STRING | adding_expression )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+            if ( (LA2_0==STRING) ) {
+                alt2=1;
             }
-            else if ( ((LA8_0>=INTEGER && LA8_0<=MINUS)) ) {
-                alt8=2;
+            else if ( ((LA2_0>=INTEGER && LA2_0<=MINUS)) ) {
+                alt2=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("56:1: expression : ( STRING | 
unary_expression );", 8, 0, input);
+                    new NoViableAltException("61:1: expression : ( STRING | 
adding_expression );", 2, 0, input);
 
                 throw nvae;
             }
-            switch (alt8) {
+            switch (alt2) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:57:5: STRING
+                    // src/antlr3/Plumhead.g:62:5: STRING
                     {
                     root_0 = (CommonTree)adaptor.nil();
 
-                    STRING16=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_expression434); 
-                    STRING16_tree = (CommonTree)adaptor.create(STRING16);
-                    adaptor.addChild(root_0, STRING16_tree);
+                    STRING10=(Token)input.LT(1);
+                    match(input,STRING,FOLLOW_STRING_in_expression414); 
+                    STRING10_tree = (CommonTree)adaptor.create(STRING10);
+                    adaptor.addChild(root_0, STRING10_tree);
 
 
                     }
                     break;
                 case 2 :
-                    // src/antlr3/Plumhead.g:58:5: unary_expression
+                    // src/antlr3/Plumhead.g:63:5: adding_expression
                     {
                     root_0 = (CommonTree)adaptor.nil();
 
-                    pushFollow(FOLLOW_unary_expression_in_expression440);
-                    unary_expression17=unary_expression();
+                    pushFollow(FOLLOW_adding_expression_in_expression420);
+                    adding_expression11=adding_expression();
                     _fsp--;
 
-                    adaptor.addChild(root_0, unary_expression17.tree);
+                    adaptor.addChild(root_0, adding_expression11.tree);
 
                     }
                     break;
@@ -641,78 +498,259 @@
     }
     // $ANTLR end expression
 
+    public static class adding_expression_return extends ParserRuleReturnScope 
{
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start adding_expression
+    // src/antlr3/Plumhead.g:66:1: adding_expression : multiplying_expression 
( ( PLUS^^ | MINUS^^ ) multiplying_expression )* ;
+    public adding_expression_return adding_expression() throws 
RecognitionException {   
+        adding_expression_return retval = new adding_expression_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token PLUS13=null;
+        Token MINUS14=null;
+        multiplying_expression_return multiplying_expression12 = null;
+
+        multiplying_expression_return multiplying_expression15 = null;
+
+
+        CommonTree PLUS13_tree=null;
+        CommonTree MINUS14_tree=null;
+
+        try {
+            // src/antlr3/Plumhead.g:67:5: ( multiplying_expression ( ( PLUS^^ 
| MINUS^^ ) multiplying_expression )* )
+            // src/antlr3/Plumhead.g:67:5: multiplying_expression ( ( PLUS^^ | 
MINUS^^ ) multiplying_expression )*
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_multiplying_expression_in_adding_expression433);
+            multiplying_expression12=multiplying_expression();
+            _fsp--;
+
+            adaptor.addChild(root_0, multiplying_expression12.tree);
+            // src/antlr3/Plumhead.g:67:28: ( ( PLUS^^ | MINUS^^ ) 
multiplying_expression )*
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+                if ( ((LA4_0>=MINUS && LA4_0<=PLUS)) ) {
+                    alt4=1;
+                }
+
+
+                switch (alt4) {
+               case 1 :
+                   // src/antlr3/Plumhead.g:67:30: ( PLUS^^ | MINUS^^ ) 
multiplying_expression
+                   {
+                   CommonTree root_1 = (CommonTree)adaptor.nil();
+
+                   // src/antlr3/Plumhead.g:67:30: ( PLUS^^ | MINUS^^ )
+                   int alt3=2;
+                   int LA3_0 = input.LA(1);
+                   if ( (LA3_0==PLUS) ) {
+                       alt3=1;
+                   }
+                   else if ( (LA3_0==MINUS) ) {
+                       alt3=2;
+                   }
+                   else {
+                       NoViableAltException nvae =
+                           new NoViableAltException("67:30: ( PLUS^^ | MINUS^^ 
)", 3, 0, input);
+
+                       throw nvae;
+                   }
+                   switch (alt3) {
+                       case 1 :
+                           // src/antlr3/Plumhead.g:67:32: PLUS^^
+                           {
+                           CommonTree root_2 = (CommonTree)adaptor.nil();
+
+                           PLUS13=(Token)input.LT(1);
+                           
match(input,PLUS,FOLLOW_PLUS_in_adding_expression439); 
+                           PLUS13_tree = (CommonTree)adaptor.create(PLUS13);
+                           root_0 = 
(CommonTree)adaptor.becomeRoot(PLUS13_tree, root_0);
+
+
+                           adaptor.addChild(root_1, root_2);
+
+                           }
+                           break;
+                       case 2 :
+                           // src/antlr3/Plumhead.g:67:41: MINUS^^
+                           {
+                           CommonTree root_2 = (CommonTree)adaptor.nil();
+
+                           MINUS14=(Token)input.LT(1);
+                           
match(input,MINUS,FOLLOW_MINUS_in_adding_expression444); 
+                           MINUS14_tree = (CommonTree)adaptor.create(MINUS14);
+                           root_0 = 
(CommonTree)adaptor.becomeRoot(MINUS14_tree, root_0);
+
+
+                           adaptor.addChild(root_1, root_2);
+
+                           }
+                           break;
+
+                   }
+
+                   
pushFollow(FOLLOW_multiplying_expression_in_adding_expression449);
+                   multiplying_expression15=multiplying_expression();
+                   _fsp--;
+
+                   adaptor.addChild(root_1, multiplying_expression15.tree);
+
+                   adaptor.addChild(root_0, root_1);
+
+                   }
+                   break;
+
+               default :
+                   break loop4;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, 
retval.stop);
+
+       }
+        return retval;
+    }
+    // $ANTLR end adding_expression
+
+    public static class multiplying_expression_return extends 
ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start multiplying_expression
+    // src/antlr3/Plumhead.g:70:1: multiplying_expression : unary_expression ;
+    public multiplying_expression_return multiplying_expression() throws 
RecognitionException {   
+        multiplying_expression_return retval = new 
multiplying_expression_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        unary_expression_return unary_expression16 = null;
+
+
+
+        try {
+            // src/antlr3/Plumhead.g:71:5: ( unary_expression )
+            // src/antlr3/Plumhead.g:71:5: unary_expression
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_unary_expression_in_multiplying_expression466);
+            unary_expression16=unary_expression();
+            _fsp--;
+
+            adaptor.addChild(root_0, unary_expression16.tree);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, 
retval.stop);
+
+       }
+        return retval;
+    }
+    // $ANTLR end multiplying_expression
+
     public static class unary_expression_return extends ParserRuleReturnScope {
         CommonTree tree;
         public Object getTree() { return tree; }
     };
 
     // $ANTLR start unary_expression
-    // src/antlr3/Plumhead.g:61:1: unary_expression : ( postfix_expression | 
MINUS postfix_expression -> ^( MUL_OP["n_mul"] INTEGER["-1"] postfix_expression 
) );
+    // src/antlr3/Plumhead.g:74:1: unary_expression : ( postfix_expression | 
MINUS postfix_expression -> ^( MUL_OP["n_mul"] INTEGER["-1"] postfix_expression 
) );
     public unary_expression_return unary_expression() throws 
RecognitionException {   
         unary_expression_return retval = new unary_expression_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token MINUS19=null;
-        postfix_expression_return postfix_expression18 = null;
+        Token MINUS18=null;
+        postfix_expression_return postfix_expression17 = null;
 
-        postfix_expression_return postfix_expression20 = null;
+        postfix_expression_return postfix_expression19 = null;
 
         List list_postfix_expression=new ArrayList();
         List list_MINUS=new ArrayList();
-        CommonTree MINUS19_tree=null;
+        CommonTree MINUS18_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:62:5: ( postfix_expression | MINUS 
postfix_expression -> ^( MUL_OP[\"n_mul\"] INTEGER[\"-1\"] postfix_expression ) 
)
-            int alt9=2;
-            int LA9_0 = input.LA(1);
-            if ( (LA9_0==INTEGER) ) {
-                alt9=1;
+            // src/antlr3/Plumhead.g:75:5: ( postfix_expression | MINUS 
postfix_expression -> ^( MUL_OP[\"n_mul\"] INTEGER[\"-1\"] postfix_expression ) 
)
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+            if ( (LA5_0==INTEGER) ) {
+                alt5=1;
             }
-            else if ( (LA9_0==MINUS) ) {
-                alt9=2;
+            else if ( (LA5_0==MINUS) ) {
+                alt5=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("61:1: unary_expression : ( 
postfix_expression | MINUS postfix_expression -> ^( MUL_OP[\"n_mul\"] 
INTEGER[\"-1\"] postfix_expression ) );", 9, 0, input);
+                    new NoViableAltException("74:1: unary_expression : ( 
postfix_expression | MINUS postfix_expression -> ^( MUL_OP[\"n_mul\"] 
INTEGER[\"-1\"] postfix_expression ) );", 5, 0, input);
 
                 throw nvae;
             }
-            switch (alt9) {
+            switch (alt5) {
                 case 1 :
-                    // src/antlr3/Plumhead.g:62:5: postfix_expression
+                    // src/antlr3/Plumhead.g:75:5: postfix_expression
                     {
                     root_0 = (CommonTree)adaptor.nil();
 
-                    
pushFollow(FOLLOW_postfix_expression_in_unary_expression453);
-                    postfix_expression18=postfix_expression();
+                    
pushFollow(FOLLOW_postfix_expression_in_unary_expression479);
+                    postfix_expression17=postfix_expression();
                     _fsp--;
 
-                    adaptor.addChild(root_0, postfix_expression18.tree);
+                    adaptor.addChild(root_0, postfix_expression17.tree);
 
                     }
                     break;
                 case 2 :
-                    // src/antlr3/Plumhead.g:63:5: MINUS postfix_expression
+                    // src/antlr3/Plumhead.g:76:5: MINUS postfix_expression
                     {
-                    MINUS19=(Token)input.LT(1);
-                    match(input,MINUS,FOLLOW_MINUS_in_unary_expression459); 
-                    list_MINUS.add(MINUS19);
+                    MINUS18=(Token)input.LT(1);
+                    match(input,MINUS,FOLLOW_MINUS_in_unary_expression485); 
+                    list_MINUS.add(MINUS18);
 
-                    
pushFollow(FOLLOW_postfix_expression_in_unary_expression461);
-                    postfix_expression20=postfix_expression();
+                    
pushFollow(FOLLOW_postfix_expression_in_unary_expression487);
+                    postfix_expression19=postfix_expression();
                     _fsp--;
 
-                    list_postfix_expression.add(postfix_expression20.tree);
+                    list_postfix_expression.add(postfix_expression19.tree);
 
                     // AST REWRITE
                     int i_0 = 0;
                     retval.tree = root_0;
                     root_0 = (CommonTree)adaptor.nil();
-                    // 63:30: -> ^( MUL_OP[\"n_mul\"] INTEGER[\"-1\"] 
postfix_expression )
+                    // 76:30: -> ^( MUL_OP[\"n_mul\"] INTEGER[\"-1\"] 
postfix_expression )
                     {
-                        // src/antlr3/Plumhead.g:63:33: ^( MUL_OP[\"n_mul\"] 
INTEGER[\"-1\"] postfix_expression )
+                        // src/antlr3/Plumhead.g:76:33: ^( MUL_OP[\"n_mul\"] 
INTEGER[\"-1\"] postfix_expression )
                         {
                         CommonTree root_1 = (CommonTree)adaptor.nil();
                         root_1 = 
(CommonTree)adaptor.becomeRoot(adaptor.create(MUL_OP, "n_mul"), root_1);
@@ -753,27 +791,27 @@
     };
 
     // $ANTLR start postfix_expression
-    // src/antlr3/Plumhead.g:66:1: postfix_expression : INTEGER ;
+    // src/antlr3/Plumhead.g:79:1: postfix_expression : INTEGER ;
     public postfix_expression_return postfix_expression() throws 
RecognitionException {   
         postfix_expression_return retval = new postfix_expression_return();
         retval.start = input.LT(1);
 
         CommonTree root_0 = null;
 
-        Token INTEGER21=null;
+        Token INTEGER20=null;
 
-        CommonTree INTEGER21_tree=null;
+        CommonTree INTEGER20_tree=null;
 
         try {
-            // src/antlr3/Plumhead.g:67:5: ( INTEGER )
-            // src/antlr3/Plumhead.g:67:5: INTEGER
+            // src/antlr3/Plumhead.g:80:5: ( INTEGER )
+            // src/antlr3/Plumhead.g:80:5: INTEGER
             {
             root_0 = (CommonTree)adaptor.nil();
 
-            INTEGER21=(Token)input.LT(1);
-            match(input,INTEGER,FOLLOW_INTEGER_in_postfix_expression488); 
-            INTEGER21_tree = (CommonTree)adaptor.create(INTEGER21);
-            adaptor.addChild(root_0, INTEGER21_tree);
+            INTEGER20=(Token)input.LT(1);
+            match(input,INTEGER,FOLLOW_INTEGER_in_postfix_expression514); 
+            INTEGER20_tree = (CommonTree)adaptor.create(INTEGER20);
+            adaptor.addChild(root_0, INTEGER20_tree);
 
 
             }
@@ -797,28 +835,27 @@
 
  
 
-    public static final BitSet FOLLOW_sea_in_program291 = new BitSet(new 
long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_code_in_program293 = new BitSet(new 
long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_sea_in_program297 = new BitSet(new 
long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_WS_in_program299 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEA_in_sea329 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CODE_START_in_code353 = new BitSet(new 
long[]{0x0000000000000500L});
-    public static final BitSet FOLLOW_statements_in_code355 = new BitSet(new 
long[]{0x0000000000000180L});
-    public static final BitSet FOLLOW_WS_in_code357 = new BitSet(new 
long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_CODE_END_in_code360 = new BitSet(new 
long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_WS_in_code362 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_statements382 = new 
BitSet(new long[]{0x0000000000000502L});
-    public static final BitSet FOLLOW_WS_in_statement398 = new BitSet(new 
long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_ECHO_in_statement401 = new BitSet(new 
long[]{0x0000000000001B00L});
-    public static final BitSet FOLLOW_WS_in_statement403 = new BitSet(new 
long[]{0x0000000000001A00L});
-    public static final BitSet FOLLOW_expression_in_statement406 = new 
BitSet(new long[]{0x0000000000010100L});
-    public static final BitSet FOLLOW_WS_in_statement408 = new BitSet(new 
long[]{0x0000000000010000L});
-    public static final BitSet FOLLOW_16_in_statement411 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_expression434 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unary_expression_in_expression440 = new 
BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet 
FOLLOW_postfix_expression_in_unary_expression453 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MINUS_in_unary_expression459 = new 
BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet 
FOLLOW_postfix_expression_in_unary_expression461 = new BitSet(new 
long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INTEGER_in_postfix_expression488 = new 
BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_sea_in_program289 = new BitSet(new 
long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_code_in_program291 = new BitSet(new 
long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_sea_in_program295 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEA_in_sea324 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CODE_START_in_code348 = new BitSet(new 
long[]{0x0000000000000400L});
+    public static final BitSet FOLLOW_statements_in_code350 = new BitSet(new 
long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_CODE_END_in_code352 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statement_in_statements371 = new 
BitSet(new long[]{0x0000000000000402L});
+    public static final BitSet FOLLOW_ECHO_in_statement387 = new BitSet(new 
long[]{0x0000000000001A00L});
+    public static final BitSet FOLLOW_expression_in_statement389 = new 
BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_16_in_statement391 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_expression414 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_adding_expression_in_expression420 = new 
BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet 
FOLLOW_multiplying_expression_in_adding_expression433 = new BitSet(new 
long[]{0x0000000000003002L});
+    public static final BitSet FOLLOW_PLUS_in_adding_expression439 = new 
BitSet(new long[]{0x0000000000001800L});
+    public static final BitSet FOLLOW_MINUS_in_adding_expression444 = new 
BitSet(new long[]{0x0000000000001800L});
+    public static final BitSet 
FOLLOW_multiplying_expression_in_adding_expression449 = new BitSet(new 
long[]{0x0000000000003002L});
+    public static final BitSet 
FOLLOW_unary_expression_in_multiplying_expression466 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet 
FOLLOW_postfix_expression_in_unary_expression479 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MINUS_in_unary_expression485 = new 
BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet 
FOLLOW_postfix_expression_in_unary_expression487 = new BitSet(new 
long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INTEGER_in_postfix_expression514 = new 
BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: trunk/languages/plumhead/t/arithmetics.t
==============================================================================
--- trunk/languages/plumhead/t/arithmetics.t    (original)
+++ trunk/languages/plumhead/t/arithmetics.t    Sun Jan  7 07:33:40 2007
@@ -57,14 +57,12 @@
     [ '1', [ 1 ], 'positive 1', ],
     [ '22', [ 22 ], 'positive 22', ],
     [ '333', [ 333 ], 'positive 333', ],
+    [ '12345678', [ 12345678 ], 'large positive int',  ],
     [ '-1', [ -1 ], 'negative 1', ],
     [ '-22', [ -22 ], 'negative 22', ],
     [ '-333', [ -333 ], 'negative 333', ],
-    [ '1 + 1', [ 2 ], 'one plus one', ],
-    [ '0', [ 0 ], 'zero',  ],
-    [ '2', [ 2 ], 'positive int',  ],
-    [ '12345678', [ 12345678 ], 'another positive int',  ],
     [ '-12345678', [ -12345678 ], 'another negative int',  ],
+    [ '1 + 1', [ 2 ], 'one plus one', ],
     [ '1 + 2', '3', 'two summands', ],
     [ '1 + 2 + 3', '6', 'three summands', ],
     [ '1 + 0 + 3', '4', 'three summands including 0', ],
@@ -104,7 +102,7 @@
 );
 
 # Not all tests are working yet
-$#tests = 6;
+$#tests = 13;
 
 plan( tests => scalar(@tests) );
 run_tests([EMAIL PROTECTED]);

Reply via email to