Author: bernhard
Date: Sun Jan  8 08:02:31 2006
New Revision: 10991

Added:
   trunk/languages/bc/grammar/antlr_past2pir_past.g
      - copied, changed from r10980, trunk/languages/bc/grammar/antlr2past.g
   trunk/languages/bc/python/lib/antlr_past2pir_past/
   
trunk/languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalker.py
   
trunk/languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalkerTokenTypes.txt
   trunk/languages/bc/python/lib/antlr_past2pir_past/BcLexerTokenTypes.txt
   trunk/languages/bc/python/lib/antlr_past2pir_past/__init__.py
Removed:
   trunk/languages/bc/grammar/antlr2past.g
Modified:
   trunk/MANIFEST
   trunk/MANIFEST.SKIP
   trunk/languages/bc/bc.py
   trunk/languages/bc/config/makefiles/root.in
Log:
bc: rename antlr2past.g to antlr_past2pir_past.g


Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Sun Jan  8 08:02:31 2006
@@ -722,33 +722,33 @@ languages/amber/lib/kernel/pmc/amber_int
 languages/amber/lib/kernel/pmc/amber_pathname.pmc [amber]
 languages/amber/lib/kernel/pmc/amber_string.pmc   [amber]
 languages/amber/lib/kernel/pmc/amber_table.pmc    [amber]
-languages/bc/AUTHOR                                                    [bc]
-languages/bc/ChangeLog                                                 [bc]
-languages/bc/MAINTAINER                                                [bc]
-languages/bc/README                                                    [bc]
-languages/bc/TODO                                                      [bc]
-languages/bc/VERSION                                                   [bc]
-languages/bc/bc.py                                                     [bc]
-languages/bc/config/makefiles/root.in                                  [bc]
-languages/bc/docs/parrot_bc.pod                                        [bc]
-languages/bc/grammar/antlr2past.g                                      [bc]
-languages/bc/grammar/bc_python.g                                       [bc]
-languages/bc/lib/Parrot/Test/Bc.pm                                     [bc]
-languages/bc/python/lib/antlr/LICENSE.txt                              [bc]
-languages/bc/python/lib/antlr/__init__.py                              [bc]
-languages/bc/python/lib/antlr/antlr.py                                 [bc]
-languages/bc/python/lib/antlr2past/Antlr2PastTreeWalker.py             [bc]
-languages/bc/python/lib/antlr2past/Antlr2PastTreeWalkerTokenTypes.txt  [bc]
-languages/bc/python/lib/antlr2past/BcLexerTokenTypes.txt               [bc]
-languages/bc/python/lib/antlr2past/__init__.py                         [bc]
-languages/bc/python/lib/bc/BcLexer.py                                  [bc]
-languages/bc/python/lib/bc/BcLexerTokenTypes.txt                       [bc]
-languages/bc/python/lib/bc/BcParser.py                                 [bc]
-languages/bc/python/lib/bc/BcTreeWalker.py                             [bc]
-languages/bc/python/lib/bc/__init__.py                                 [bc]
-languages/bc/t/basic.t                                                 [bc]
-languages/bc/t/function.t                                              [bc]
-languages/bc/t/harness                                                 [bc]
+languages/bc/AUTHOR                                                            
        [bc]
+languages/bc/ChangeLog                                                         
        [bc]
+languages/bc/MAINTAINER                                                        
        [bc]
+languages/bc/README                                                            
        [bc]
+languages/bc/TODO                                                              
        [bc]
+languages/bc/VERSION                                                           
        [bc]
+languages/bc/bc.py                                                             
        [bc]
+languages/bc/config/makefiles/root.in                                          
        [bc]
+languages/bc/docs/parrot_bc.pod                                                
        [bc]
+languages/bc/grammar/antlr_past2pir_past.g                                     
        [bc]
+languages/bc/grammar/bc_python.g                                               
        [bc]
+languages/bc/lib/Parrot/Test/Bc.pm                                             
        [bc]
+languages/bc/python/lib/antlr/LICENSE.txt                                      
        [bc]
+languages/bc/python/lib/antlr/__init__.py                                      
        [bc]
+languages/bc/python/lib/antlr/antlr.py                                         
        [bc]
+languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalker.py     
        [bc]
+languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalkerTokenTypes.txt
  [bc]
+languages/bc/python/lib/antlr_past2pir_past/BcLexerTokenTypes.txt              
        [bc]
+languages/bc/python/lib/antlr_past2pir_past/__init__.py                        
        [bc]
+languages/bc/python/lib/bc/BcLexer.py                                          
        [bc]
+languages/bc/python/lib/bc/BcLexerTokenTypes.txt                               
        [bc]
+languages/bc/python/lib/bc/BcParser.py                                         
        [bc]
+languages/bc/python/lib/bc/BcTreeWalker.py                                     
        [bc]
+languages/bc/python/lib/bc/__init__.py                                         
        [bc]
+languages/bc/t/basic.t                                                         
        [bc]
+languages/bc/t/function.t                                                      
        [bc]
+languages/bc/t/harness                                                         
        [bc]
 languages/befunge/Changes                         [befunge]
 languages/befunge/README                          [befunge]
 languages/befunge/befunge.pasm                    [befunge]

Modified: trunk/MANIFEST.SKIP
==============================================================================
--- trunk/MANIFEST.SKIP (original)
+++ trunk/MANIFEST.SKIP Sun Jan  8 08:02:31 2006
@@ -1,5 +1,5 @@
 # $Id$
-# generated by tools/dev/gen_manifest_skip.pl Sat Jan  7 17:43:40 2006
+# generated by tools/dev/gen_manifest_skip.pl Sun Jan  8 14:11:54 2006
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -206,6 +206,111 @@
 ^docs/packfile-perl\.pod$
 ^docs/packfile-perl\.pod/
 # generated from svn:ignore of 'docs/dev/'
+# generated from svn:ignore of 'docs/html/'
+# generated from svn:ignore of 'docs/html/build_tools/'
+# generated from svn:ignore of 'docs/html/classes/'
+# generated from svn:ignore of 'docs/html/config/auto/'
+# generated from svn:ignore of 'docs/html/config/gen/'
+# generated from svn:ignore of 'docs/html/config/init/'
+# generated from svn:ignore of 'docs/html/config/inter/'
+# generated from svn:ignore of 'docs/html/docs/'
+# generated from svn:ignore of 'docs/html/docs/dev/'
+# generated from svn:ignore of 'docs/html/docs/pdds/'
+# generated from svn:ignore of 'docs/html/docs/pmc/'
+# generated from svn:ignore of 'docs/html/dynclasses/'
+# generated from svn:ignore of 'docs/html/dynoplibs/'
+# generated from svn:ignore of 'docs/html/editor/'
+# generated from svn:ignore of 'docs/html/encodings/'
+# generated from svn:ignore of 'docs/html/examples/assembly/'
+# generated from svn:ignore of 'docs/html/examples/benchmarks/'
+# generated from svn:ignore of 'docs/html/examples/c/'
+# generated from svn:ignore of 'docs/html/examples/io/'
+# generated from svn:ignore of 'docs/html/examples/mops/'
+# generated from svn:ignore of 'docs/html/examples/pni/'
+# generated from svn:ignore of 'docs/html/examples/streams/'
+# generated from svn:ignore of 'docs/html/examples/subs/'
+# generated from svn:ignore of 'docs/html/imcc/docs/'
+# generated from svn:ignore of 'docs/html/imcc/t/syn/'
+# generated from svn:ignore of 'docs/html/io/'
+# generated from svn:ignore of 'docs/html/languages/befunge/t/'
+# generated from svn:ignore of 'docs/html/languages/bf/t/'
+# generated from svn:ignore of 'docs/html/languages/conversion/examples/'
+# generated from svn:ignore of 'docs/html/languages/forth/'
+# generated from svn:ignore of 'docs/html/languages/jako/docs/'
+# generated from svn:ignore of 'docs/html/languages/jako/lib/Jako/Construct/'
+# generated from svn:ignore of 'docs/html/languages/m4/'
+# generated from svn:ignore of 'docs/html/languages/m4/M4/'
+# generated from svn:ignore of 'docs/html/languages/m4/Perl5/lib/Language/'
+# generated from svn:ignore of 'docs/html/languages/m4/Perl5/lib/Language/m4/'
+# generated from svn:ignore of 'docs/html/languages/m4/doc/'
+# generated from svn:ignore of 'docs/html/languages/m4/examples/'
+# generated from svn:ignore of 'docs/html/languages/m4/runtime/parrot/include/'
+# generated from svn:ignore of 'docs/html/languages/m4/runtime/parrot/library/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/Data/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/Data/Dumper/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/Digest/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/Getopt/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/PGE/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/SDL/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/Stream/'
+# generated from svn:ignore of 
'docs/html/languages/m4/runtime/parrot/library/YAML/Parser/'
+# generated from svn:ignore of 'docs/html/languages/m4/src/'
+# generated from svn:ignore of 'docs/html/languages/m4/t/'
+# generated from svn:ignore of 'docs/html/languages/m4/tools/'
+# generated from svn:ignore of 'docs/html/languages/miniperl/Miniperl/'
+# generated from svn:ignore of 'docs/html/languages/ook/t/'
+# generated from svn:ignore of 
'docs/html/languages/parrot_compiler/lib/Parrot/Test/'
+# generated from svn:ignore of 'docs/html/languages/parrot_compiler/t/'
+# generated from svn:ignore of 'docs/html/languages/perl6/P6C/'
+# generated from svn:ignore of 'docs/html/languages/perl6/P6C/IMCC/'
+# generated from svn:ignore of 'docs/html/languages/perl6/P6C/IMCC/ExtRegex/'
+# generated from svn:ignore of 'docs/html/languages/perl6/P6C/Tree/'
+# generated from svn:ignore of 'docs/html/languages/perl6/doc/'
+# generated from svn:ignore of 'docs/html/languages/perl6/perl6re/'
+# generated from svn:ignore of 'docs/html/languages/python/t/'
+# generated from svn:ignore of 'docs/html/languages/regex/docs/'
+# generated from svn:ignore of 'docs/html/languages/regex/lib/Regex/'
+# generated from svn:ignore of 'docs/html/languages/regex/lib/Regex/Parse/'
+# generated from svn:ignore of 'docs/html/languages/ruby/Yacc/'
+# generated from svn:ignore of 'docs/html/languages/scheme/'
+# generated from svn:ignore of 'docs/html/languages/scheme/Scheme/'
+# generated from svn:ignore of 'docs/html/languages/scheme/t/'
+# generated from svn:ignore of 'docs/html/languages/tcl/'
+# generated from svn:ignore of 'docs/html/languages/tcl/classes/'
+# generated from svn:ignore of 'docs/html/languages/tcl/docs/'
+# generated from svn:ignore of 'docs/html/languages/tcl/lib/'
+# generated from svn:ignore of 'docs/html/languages/tcl/lib/commands/'
+# generated from svn:ignore of 'docs/html/languages/tcl/t/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/Configure/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/Docs/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/Docs/Section/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/IO/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/OpLib/'
+# generated from svn:ignore of 'docs/html/lib/Parrot/OpTrans/'
+# generated from svn:ignore of 'docs/html/ops/'
+# generated from svn:ignore of 'docs/html/pf/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/include/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/Data/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/Data/Dumper/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/Digest/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/Getopt/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/PGE/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/SDL/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/Stream/'
+# generated from svn:ignore of 'docs/html/runtime/parrot/library/YAML/Parser/'
+# generated from svn:ignore of 'docs/html/src/'
+# generated from svn:ignore of 'docs/html/t/'
+# generated from svn:ignore of 'docs/html/t/native_pbc/'
+# generated from svn:ignore of 'docs/html/t/op/'
+# generated from svn:ignore of 'docs/html/t/pmc/'
+# generated from svn:ignore of 'docs/html/t/src/'
+# generated from svn:ignore of 'docs/html/t/stress/'
+# generated from svn:ignore of 'docs/html/tools/dev/'
+# generated from svn:ignore of 'docs/html/tools/docs/'
+# generated from svn:ignore of 'docs/html/types/'
+# generated from svn:ignore of 'docs/html/util/'
 # generated from svn:ignore of 'docs/imcc/'
 # generated from svn:ignore of 'docs/ops/'
 ^docs/ops/.*\.pod$
@@ -324,6 +429,8 @@
 # generated from svn:ignore of 'languages/bc/'
 ^languages/bc/Makefile$
 ^languages/bc/Makefile/
+# generated from svn:ignore of 'languages/bc/config/'
+# generated from svn:ignore of 'languages/bc/config/makefiles/'
 # generated from svn:ignore of 'languages/bc/docs/'
 # generated from svn:ignore of 'languages/bc/grammar/'
 # generated from svn:ignore of 'languages/bc/lib/'
@@ -334,9 +441,7 @@
 # generated from svn:ignore of 'languages/bc/python/lib/antlr/'
 ^languages/bc/python/lib/antlr/.*\.pyc$
 ^languages/bc/python/lib/antlr/.*\.pyc/
-# generated from svn:ignore of 'languages/bc/python/lib/antlr2past/'
-^languages/bc/python/lib/antlr2past/.*\.pyc$
-^languages/bc/python/lib/antlr2past/.*\.pyc/
+# generated from svn:ignore of 'languages/bc/python/lib/antlr_past2pir_past/'
 # generated from svn:ignore of 'languages/bc/python/lib/bc/'
 ^languages/bc/python/lib/bc/.*\.pyc$
 ^languages/bc/python/lib/bc/.*\.pyc/

Modified: trunk/languages/bc/bc.py
==============================================================================
--- trunk/languages/bc/bc.py    (original)
+++ trunk/languages/bc/bc.py    Sun Jan  8 08:02:31 2006
@@ -10,7 +10,7 @@ lib_path = os.path.join( os.path.dirname
 sys.path.insert( 0, lib_path )
 import antlr
 import bc
-import antlr2past
+import antlr_past2pir_past
 
 # Currently not used
 class Visitor(antlr.ASTVisitor):
@@ -156,10 +156,10 @@ def main():
    visitor = Visitor()    # Construct Visitor after reassigning sys.stdout
    BcW.gen_antlr_past(ast);
    antlr_past = BcW.getAST()
-   Antlr2PastW = antlr2past.Antlr2PastTreeWalker.Walker();
-   Antlr2PastW.gen_pir_past(antlr_past);
-   pir_past = Antlr2PastW.getAST()
-   past_pir     = "# " +  pir_past.toStringList();
+   AntlrPast2PirPastW = 
antlr_past2pir_past.AntlrPast2PirPastTreeWalker.Walker();
+   AntlrPast2PirPastW.gen_pir_past(antlr_past);
+   pir_past = AntlrPast2PirPastW.getAST()
+   past_pir = "# " +  pir_past.toStringList();
    print """
 # Do not edit this file.
 # This file has been generated by bc.py.
@@ -203,11 +203,11 @@ visit>>
     load_bytecode "TGE.pbc"
     load_bytecode "languages/punie/lib/POST.pir"
 
-    # START of PIR generated by antlr2past.g
+    # START of PIR generated by antlr_past2pir_past.g
 """
    print past_pir
    print """
-    # END of PIR generated by antlr2past.g
+    # END of PIR generated by antlr_past2pir_past.g
 
     # print "\\n\\nPAST tree dump:\\n"
     # stmts.dump()

Modified: trunk/languages/bc/config/makefiles/root.in
==============================================================================
--- trunk/languages/bc/config/makefiles/root.in (original)
+++ trunk/languages/bc/config/makefiles/root.in Sun Jan  8 08:02:31 2006
@@ -10,7 +10,8 @@ CP             = ${cp}
 PYTHON_RUNTIME_FILES = \
     python/lib/bc/BcLexer.py \
     python/lib/bc/BcParser.py \
-    python/lib/bc/BcTreeWalker.py
+    python/lib/bc/BcTreeWalker.py \
+    python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalker.py
 
 # the default target
 all: build 
@@ -46,16 +47,16 @@ build:
 maintain: $(PYTHON_RUNTIME_FILES)
 
 # BcLexer.py will be created too
-# TODO: antlr2past shouldn't need BcLexerTokenTypes.txt
-$(PYTHON_RUNTIME_FILES): grammar/bc_python.g grammar/antlr2past.g
+# TODO: antlr_past2pir_past shouldn't need BcLexerTokenTypes.txt
+$(PYTHON_RUNTIME_FILES): grammar/bc_python.g grammar/antlr_past2pir_past.g
        antlr -o python/lib/bc grammar/bc_python.g
-       $(CP) python/lib/bc/BcLexerTokenTypes.txt python/lib/antlr2past
-       antlr -o python/lib/antlr2past grammar/antlr2past.g
+       $(CP) python/lib/bc/BcLexerTokenTypes.txt python/lib/antlr_past2pir_past
+       antlr -o python/lib/antlr_past2pir_past grammar/antlr_past2pir_past.g
 
 clean:
        $(RM_RF) \
     "python/lib/bc/*.pyc" \
-    "python/lib/antlr/*.pyc" \
+    "python/lib/antlr_past2pir_past/*.pyc" \
     "t/*.bc" "t/*.pir" "t/*.posix_out" "t/*.parrot_out"
 
 realclean: clean

Copied: trunk/languages/bc/grammar/antlr_past2pir_past.g (from r10980, 
trunk/languages/bc/grammar/antlr2past.g)
==============================================================================
--- trunk/languages/bc/grammar/antlr2past.g     (original)
+++ trunk/languages/bc/grammar/antlr_past2pir_past.g    Sun Jan  8 08:02:31 2006
@@ -1,13 +1,9 @@
 // Copyright: 2005 The Perl Foundation.  All Rights Reserved.
 // $Id$
 
-// antlr2past.g is a misnomer. antlr_past2pir_past.g would be a better fit
-
-header "Antlr2PastTreeWalker.__init__" 
+header "AntlrPast2PirPastTreeWalker.__init__" 
 {
   self.reg       = 10;  // counter for unlimited number of PMC registers
-  self.label_num = 0;  // counter for generation jump labels
-  self.level     = 0;  // for indentation
 }
 
 //-----------------------------------------------------------------------------
@@ -22,7 +18,7 @@ options 
 //----------------------------------------------------------------------------
 // Transform ANTLR PAST to PIR that sets up PAST
 //----------------------------------------------------------------------------
-class Antlr2PastTreeWalker extends TreeParser;
+class AntlrPast2PirPastTreeWalker extends TreeParser;
 
 options
 {

Added: 
trunk/languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalker.py
==============================================================================
--- (empty file)
+++ 
trunk/languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalker.py
    Sun Jan  8 08:02:31 2006
@@ -0,0 +1,529 @@
+### $ANTLR 2.7.5 (20051104): "antlr_past2pir_past.g" -> 
"AntlrPast2PirPastTreeWalker.py"$
+### import antlr and other modules ..
+import sys
+import antlr
+
+version = sys.version.split()[0]
+if version < '2.2.1':
+    False = 0
+if version < '2.3':
+    True = not False
+### header action >>> 
+
+### header action <<< 
+
+### import antlr.Token 
+from antlr import Token
+### >>>The Known Token Types <<<
+SKIP                = antlr.SKIP
+INVALID_TYPE        = antlr.INVALID_TYPE
+EOF_TYPE            = antlr.EOF_TYPE
+EOF                 = antlr.EOF
+NULL_TREE_LOOKAHEAD = antlr.NULL_TREE_LOOKAHEAD
+MIN_USER_TYPE       = antlr.MIN_USER_TYPE
+NEWLINE = 4
+STRING = 5
+LETTER = 6
+DIGIT = 7
+INTEGER = 8
+NUMBER = 9
+MUL = 10
+DIV = 11
+MOD = 12
+ASSIGN_OP = 13
+REL_OP = 14
+INCR = 15
+DECR = 16
+Quit = 17
+Define = 18
+Auto = 19
+If = 20
+KEYWORDS = 21
+LPAREN = 22
+RPAREN = 23
+COMMA = 24
+PLUS = 25
+MINUS = 26
+SEMICOLON = 27
+LBRACKET = 28
+RBRACKET = 29
+CARET = 30
+LCURLY = 31
+RCURLY = 32
+WS = 33
+ML_COMMENT = 34
+PIR_OP = 35
+UNARY_MINUS = 36
+PIR_PRINT_PMC = 37
+PIR_FUNCTION_DEF = 38
+PIR_FOOTER = 39
+PIR_HEADER = 40
+PIR_NOOP = 41
+PIR_COMMENT = 42
+PIR_NEWLINE = 43
+PAST_Stmts = 44
+PAST_Code = 45
+PAST_Stmt = 46
+PAST_Exp = 47
+PAST_Op = 48
+PAST_Val = 49
+PAST_Noop = 50
+
+### user code>>>
+
+### user code<<<
+
+class Walker(antlr.TreeParser):
+    
+    # ctor ..
+    def __init__(self, *args, **kwargs):
+        antlr.TreeParser.__init__(self, *args, **kwargs)
+        self.tokenNames = _tokenNames
+        ### __init__ header action >>> 
+        self.reg       = 10;  # counter for unlimited number of PMC registers
+        ### __init__ header action <<< 
+    
+    ### user action >>>
+    ### user action <<<
+    def gen_pir_past(self, _t):    
+        
+        gen_pir_past_AST_in = None
+        if _t != antlr.ASTNULL:
+            gen_pir_past_AST_in = _t
+        self.returnAST = None
+        currentAST = antlr.ASTPair()
+        gen_pir_past_AST = None
+        PEPN_AST = None
+        PEPN = None
+        try:      ## for error handling
+            pass
+            _t2 = _t
+            tmp1_AST = None
+            tmp1_AST_in = None
+            tmp1_AST = self.astFactory.create(_t)
+            tmp1_AST_in = _t
+            _currentAST2 = currentAST.copy()
+            currentAST.root = currentAST.child
+            currentAST.child = None
+            self.match(_t,PAST_Stmts)
+            _t = _t.getFirstChild()
+            PEPN = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
+            self.code_blocks(_t)
+            _t = self._retTree
+            PEPN_AST = self.returnAST
+            currentAST = _currentAST2
+            _t = _t2
+            _t = _t.getNextSibling()
+            gen_pir_past_AST = currentAST.root
+            pir_before = """
+            .local pmc stmts_children
+            stmts_children = new PerlArray
+            #"""
+            pir_after = """
+            .local pmc stmts
+            stmts = new 'PAST::Stmts'
+            
+            stmts.set_node('1', 1, stmts_children)
+                 
+            #"""
+            
+            gen_pir_past_AST = 
antlr.make(self.astFactory.create(PIR_OP,pir_before), PEPN_AST, 
self.astFactory.create(PIR_OP,pir_after));
+            currentAST.root = gen_pir_past_AST
+            if (gen_pir_past_AST != None) and 
(gen_pir_past_AST.getFirstChild() != None):
+                currentAST.child = gen_pir_past_AST.getFirstChild()
+            else:
+                currentAST.child = gen_pir_past_AST
+            currentAST.advanceChildToEnd()
+        
+        except antlr.RecognitionException, ex:
+            self.reportError(ex)
+            if _t:
+                _t = _t.getNextSibling()
+        
+        self.returnAST = gen_pir_past_AST
+        self._retTree = _t
+    
+    def code_blocks(self, _t):    
+        
+        code_blocks_AST_in = None
+        if _t != antlr.ASTNULL:
+            code_blocks_AST_in = _t
+        self.returnAST = None
+        currentAST = antlr.ASTPair()
+        code_blocks_AST = None
+        try:      ## for error handling
+            pass
+            _cnt6= 0
+            while True:
+                if not _t:
+                    _t = antlr.ASTNULL
+                if (_t.getType()==PAST_Code):
+                    pass
+                    _t5 = _t
+                    tmp2_AST = None
+                    tmp2_AST_in = None
+                    tmp2_AST = self.astFactory.create(_t)
+                    tmp2_AST_in = _t
+                    self.addASTChild(currentAST, tmp2_AST)
+                    _currentAST5 = currentAST.copy()
+                    currentAST.root = currentAST.child
+                    currentAST.child = None
+                    self.match(_t,PAST_Code)
+                    _t = _t.getFirstChild()
+                    self.stmt(_t)
+                    _t = self._retTree
+                    self.addASTChild(currentAST, self.returnAST)
+                    self.stmt(_t)
+                    _t = self._retTree
+                    self.addASTChild(currentAST, self.returnAST)
+                    currentAST = _currentAST5
+                    _t = _t5
+                    _t = _t.getNextSibling()
+                else:
+                    break
+                
+                _cnt6 += 1
+            if _cnt6 < 1:
+                raise antlr.NoViableAltException(_t)
+            code_blocks_AST = currentAST.root
+        
+        except antlr.RecognitionException, ex:
+            self.reportError(ex)
+            if _t:
+                _t = _t.getNextSibling()
+        
+        self.returnAST = code_blocks_AST
+        self._retTree = _t
+    
+    def stmt(self, _t):    
+        
+        stmt_AST_in = None
+        if _t != antlr.ASTNULL:
+            stmt_AST_in = _t
+        self.returnAST = None
+        currentAST = antlr.ASTPair()
+        stmt_AST = None
+        E_AST = None
+        E = None
+        try:      ## for error handling
+            pass
+            _t8 = _t
+            tmp3_AST = None
+            tmp3_AST_in = None
+            tmp3_AST = self.astFactory.create(_t)
+            tmp3_AST_in = _t
+            _currentAST8 = currentAST.copy()
+            currentAST.root = currentAST.child
+            currentAST.child = None
+            self.match(_t,PAST_Stmt)
+            _t = _t.getFirstChild()
+            E = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
+            reg_E=self.exp(_t)
+            _t = self._retTree
+            E_AST = self.returnAST
+            currentAST = _currentAST8
+            _t = _t8
+            _t = _t.getNextSibling()
+            stmt_AST = currentAST.root
+            reg = self.reg
+            self.reg = self.reg + 10;
+            pir = """
+            $P%d = new 'PAST::Stmt'
+            $P%d = new PerlArray
+            
+            push $P%d, $P%d 
+            $P%d.set_node('1', 1 ,$P%d)
+            
+            push stmts_children, $P%d
+            #""" % (
+            reg,
+            reg + 1,
+            reg + 1, reg_E,
+            reg, reg + 1,
+            reg
+            )
+            
+            stmt_AST = antlr.make(self.astFactory.create(PIR_NOOP,"noop"), 
E_AST, self.astFactory.create(PIR_OP,pir));
+            currentAST.root = stmt_AST
+            if (stmt_AST != None) and (stmt_AST.getFirstChild() != None):
+                currentAST.child = stmt_AST.getFirstChild()
+            else:
+                currentAST.child = stmt_AST
+            currentAST.advanceChildToEnd()
+        
+        except antlr.RecognitionException, ex:
+            self.reportError(ex)
+            if _t:
+                _t = _t.getNextSibling()
+        
+        self.returnAST = stmt_AST
+        self._retTree = _t
+    
+    def exp(self, _t):    
+        reg = None
+        
+        exp_AST_in = None
+        if _t != antlr.ASTNULL:
+            exp_AST_in = _t
+        self.returnAST = None
+        currentAST = antlr.ASTPair()
+        exp_AST = None
+        O_AST = None
+        O = None
+        V_AST = None
+        V = None
+        try:      ## for error handling
+            pass
+            _t10 = _t
+            tmp4_AST = None
+            tmp4_AST_in = None
+            tmp4_AST = self.astFactory.create(_t)
+            tmp4_AST_in = _t
+            _currentAST10 = currentAST.copy()
+            currentAST.root = currentAST.child
+            currentAST.child = None
+            self.match(_t,PAST_Exp)
+            _t = _t.getFirstChild()
+            if not _t:
+                _t = antlr.ASTNULL
+            la1 = _t.getType()
+            if False:
+                pass
+            elif la1 and la1 in [PAST_Op]:
+                pass
+                O = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
+                reg_O=self.op(_t)
+                _t = self._retTree
+                O_AST = self.returnAST
+                exp_AST = currentAST.root
+                reg = self.reg;
+                self.reg = self.reg + 10;
+                pir = """
+                         $P%d = new 'PAST::Exp'
+                         $P%d = new PerlArray
+                
+                         push $P%d, $P%d 
+                         $P%d.set_node('1', 1, $P%d)
+                #""" % (
+                         reg,
+                         reg + 1,
+                
+                         reg + 1, reg_O,
+                         reg, reg + 1
+                )
+                
+                exp_AST = antlr.make(self.astFactory.create(PIR_NOOP,"noop"), 
O_AST, self.astFactory.create(PIR_OP,pir));
+                currentAST.root = exp_AST
+                if (exp_AST != None) and (exp_AST.getFirstChild() != None):
+                    currentAST.child = exp_AST.getFirstChild()
+                else:
+                    currentAST.child = exp_AST
+                currentAST.advanceChildToEnd()
+            elif la1 and la1 in [PAST_Val]:
+                pass
+                V = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
+                reg_V=self.val(_t)
+                _t = self._retTree
+                V_AST = self.returnAST
+                exp_AST = currentAST.root
+                reg = self.reg;
+                self.reg = self.reg + 10;
+                pir = """
+                         $P%d = new 'PAST::Exp'
+                         $P%d = new PerlArray
+                
+                         push $P%d, $P%d 
+                         $P%d.set_node('1', 1, $P%d)
+                #""" % (
+                         reg,
+                         reg + 1,
+                
+                         reg + 1, reg_V,
+                         reg, reg + 1
+                )
+                
+                exp_AST = antlr.make(self.astFactory.create(PIR_NOOP,"noop"), 
V_AST, self.astFactory.create(PIR_OP,pir));
+                currentAST.root = exp_AST
+                if (exp_AST != None) and (exp_AST.getFirstChild() != None):
+                    currentAST.child = exp_AST.getFirstChild()
+                else:
+                    currentAST.child = exp_AST
+                currentAST.advanceChildToEnd()
+            else:
+                    raise antlr.NoViableAltException(_t)
+                
+            currentAST = _currentAST10
+            _t = _t10
+            _t = _t.getNextSibling()
+        
+        except antlr.RecognitionException, ex:
+            self.reportError(ex)
+            if _t:
+                _t = _t.getNextSibling()
+        
+        self.returnAST = exp_AST
+        self._retTree = _t
+        return reg
+    
+    def op(self, _t):    
+        reg = None
+        
+        op_AST_in = None
+        if _t != antlr.ASTNULL:
+            op_AST_in = _t
+        self.returnAST = None
+        currentAST = antlr.ASTPair()
+        op_AST = None
+        E_AST = None
+        E = None
+        try:      ## for error handling
+            pass
+            _t13 = _t
+            tmp5_AST = None
+            tmp5_AST_in = None
+            tmp5_AST = self.astFactory.create(_t)
+            tmp5_AST_in = _t
+            _currentAST13 = currentAST.copy()
+            currentAST.root = currentAST.child
+            currentAST.child = None
+            self.match(_t,PAST_Op)
+            _t = _t.getFirstChild()
+            E = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
+            reg_E=self.exp(_t)
+            _t = self._retTree
+            E_AST = self.returnAST
+            currentAST = _currentAST13
+            _t = _t13
+            _t = _t.getNextSibling()
+            op_AST = currentAST.root
+            reg = self.reg;
+            self.reg = self.reg + 10;
+            pir = """
+                 $P%d = new 'PAST::Op'
+                 $P%d = new PerlArray
+            
+                 push $P%d, $P%d 
+                 $P%d.set_node('1', 1, 'print' ,$P%d)
+            #""" % (
+                 reg,
+                 reg + 1,
+            
+                 reg + 1, reg_E,
+                 reg, reg + 1
+            )
+            
+            op_AST = antlr.make(self.astFactory.create(PIR_NOOP,"noop"), 
E_AST, self.astFactory.create(PIR_OP,pir));
+            currentAST.root = op_AST
+            if (op_AST != None) and (op_AST.getFirstChild() != None):
+                currentAST.child = op_AST.getFirstChild()
+            else:
+                currentAST.child = op_AST
+            currentAST.advanceChildToEnd()
+        
+        except antlr.RecognitionException, ex:
+            self.reportError(ex)
+            if _t:
+                _t = _t.getNextSibling()
+        
+        self.returnAST = op_AST
+        self._retTree = _t
+        return reg
+    
+    def val(self, _t):    
+        reg = None
+        
+        val_AST_in = None
+        if _t != antlr.ASTNULL:
+            val_AST_in = _t
+        self.returnAST = None
+        currentAST = antlr.ASTPair()
+        val_AST = None
+        V = None
+        V_AST = None
+        try:      ## for error handling
+            pass
+            V = _t
+            V_AST_in = None
+            V_AST = self.astFactory.create(V)
+            self.match(_t,PAST_Val)
+            _t = _t.getNextSibling()
+            val_AST = currentAST.root
+            reg = self.reg;
+            self.reg = self.reg + 10;
+            pir = """
+                         $P%d = new 'PAST::Val'
+                         $P%d.set_node('1', 0, '%s' )
+            #""" % ( reg, reg, V.getText() )
+            
+            val_AST = antlr.make(self.astFactory.create(PIR_OP,pir));
+            currentAST.root = val_AST
+            if (val_AST != None) and (val_AST.getFirstChild() != None):
+                currentAST.child = val_AST.getFirstChild()
+            else:
+                currentAST.child = val_AST
+            currentAST.advanceChildToEnd()
+        
+        except antlr.RecognitionException, ex:
+            self.reportError(ex)
+            if _t:
+                _t = _t.getNextSibling()
+        
+        self.returnAST = val_AST
+        self._retTree = _t
+        return reg
+    
+
+_tokenNames = [
+    "<0>", 
+    "EOF", 
+    "<2>", 
+    "NULL_TREE_LOOKAHEAD", 
+    "NEWLINE", 
+    "STRING", 
+    "LETTER", 
+    "DIGIT", 
+    "INTEGER", 
+    "NUMBER", 
+    "MUL", 
+    "DIV", 
+    "MOD", 
+    "ASSIGN_OP", 
+    "REL_OP", 
+    "INCR", 
+    "DECR", 
+    "Quit", 
+    "Define", 
+    "Auto", 
+    "If", 
+    "KEYWORDS", 
+    "LPAREN", 
+    "RPAREN", 
+    "COMMA", 
+    "PLUS", 
+    "MINUS", 
+    "SEMICOLON", 
+    "LBRACKET", 
+    "RBRACKET", 
+    "CARET", 
+    "LCURLY", 
+    "RCURLY", 
+    "WS", 
+    "ML_COMMENT", 
+    "PIR_OP", 
+    "UNARY_MINUS", 
+    "PIR_PRINT_PMC", 
+    "PIR_FUNCTION_DEF", 
+    "PIR_FOOTER", 
+    "PIR_HEADER", 
+    "PIR_NOOP", 
+    "PIR_COMMENT", 
+    "PIR_NEWLINE", 
+    "PAST_Stmts", 
+    "PAST_Code", 
+    "PAST_Stmt", 
+    "PAST_Exp", 
+    "PAST_Op", 
+    "PAST_Val", 
+    "PAST_Noop"
+]
+    

Added: 
trunk/languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalkerTokenTypes.txt
==============================================================================
--- (empty file)
+++ 
trunk/languages/bc/python/lib/antlr_past2pir_past/AntlrPast2PirPastTreeWalkerTokenTypes.txt
 Sun Jan  8 08:02:31 2006
@@ -0,0 +1,49 @@
+// $ANTLR 2.7.5 (20051104): antlr_past2pir_past.g -> 
AntlrPast2PirPastTreeWalkerTokenTypes.txt$
+AntlrPast2PirPastTreeWalker    // output token vocab name
+NEWLINE=4
+STRING=5
+LETTER=6
+DIGIT=7
+INTEGER=8
+NUMBER=9
+MUL=10
+DIV=11
+MOD=12
+ASSIGN_OP=13
+REL_OP=14
+INCR=15
+DECR=16
+Quit=17
+Define=18
+Auto=19
+If=20
+KEYWORDS=21
+LPAREN=22
+RPAREN=23
+COMMA=24
+PLUS=25
+MINUS=26
+SEMICOLON=27
+LBRACKET=28
+RBRACKET=29
+CARET=30
+LCURLY=31
+RCURLY=32
+WS=33
+ML_COMMENT=34
+PIR_OP=35
+UNARY_MINUS=36
+PIR_PRINT_PMC=37
+PIR_FUNCTION_DEF=38
+PIR_FOOTER=39
+PIR_HEADER=40
+PIR_NOOP=41
+PIR_COMMENT=42
+PIR_NEWLINE=43
+PAST_Stmts=44
+PAST_Code=45
+PAST_Stmt=46
+PAST_Exp=47
+PAST_Op=48
+PAST_Val=49
+PAST_Noop=50

Added: trunk/languages/bc/python/lib/antlr_past2pir_past/BcLexerTokenTypes.txt
==============================================================================
--- (empty file)
+++ trunk/languages/bc/python/lib/antlr_past2pir_past/BcLexerTokenTypes.txt     
Sun Jan  8 08:02:31 2006
@@ -0,0 +1,49 @@
+// $ANTLR 2.7.5 (20051104): bc_python.g -> BcLexerTokenTypes.txt$
+BcLexer    // output token vocab name
+NEWLINE=4
+STRING=5
+LETTER=6
+DIGIT=7
+INTEGER=8
+NUMBER=9
+MUL=10
+DIV=11
+MOD=12
+ASSIGN_OP=13
+REL_OP=14
+INCR=15
+DECR=16
+Quit=17
+Define=18
+Auto=19
+If=20
+KEYWORDS=21
+LPAREN=22
+RPAREN=23
+COMMA=24
+PLUS=25
+MINUS=26
+SEMICOLON=27
+LBRACKET=28
+RBRACKET=29
+CARET=30
+LCURLY=31
+RCURLY=32
+WS=33
+ML_COMMENT=34
+PIR_OP=35
+UNARY_MINUS=36
+PIR_PRINT_PMC=37
+PIR_FUNCTION_DEF=38
+PIR_FOOTER=39
+PIR_HEADER=40
+PIR_NOOP=41
+PIR_COMMENT=42
+PIR_NEWLINE=43
+PAST_Stmts=44
+PAST_Code=45
+PAST_Stmt=46
+PAST_Exp=47
+PAST_Op=48
+PAST_Val=49
+PAST_Noop=50

Added: trunk/languages/bc/python/lib/antlr_past2pir_past/__init__.py
==============================================================================
--- (empty file)
+++ trunk/languages/bc/python/lib/antlr_past2pir_past/__init__.py       Sun Jan 
 8 08:02:31 2006
@@ -0,0 +1,3 @@
+# $Id: __init__.py 10933 2006-01-06 01:43:24Z particle $
+
+import AntlrPast2PirPastTreeWalker 

Reply via email to