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