Author: bernhard
Date: Sat Aug 6 11:06:16 2005
New Revision: 8848
Modified:
trunk/languages/bc/grammar/bc_python.g
trunk/languages/bc/python/lib/bc/BcLexer.py
trunk/languages/bc/python/lib/bc/BcLexerTokenTypes.txt
trunk/languages/bc/python/lib/bc/BcParser.py
trunk/languages/bc/python/lib/bc/BcTreeWalker.py
trunk/languages/bc/t/harness
Log:
Inching towards printing all unassigned expressions.
Modified: trunk/languages/bc/grammar/bc_python.g
==============================================================================
--- trunk/languages/bc/grammar/bc_python.g (original)
+++ trunk/languages/bc/grammar/bc_python.g Sat Aug 6 11:06:16 2005
@@ -159,6 +159,7 @@ tokens
{
PIR_OP; // A line of PIR code
UNARY_MINUS; // A line of PIR code
+ PIR_PRINT; // A line of PIR code
}
// "quit" is really a keyword
@@ -173,11 +174,18 @@ input_item
;
semicolon_list
- : statement
+ : statement (SEMICOLON statement)*
;
statement
- : addingExpression (SEMICOLON addingExpression)*
+ : expression
+ ;
+
+expression!
+ : a:addingExpression
+ {
+ #expression = #( [ PIR_PRINT, "print" ], #a )
+ }
;
@@ -327,11 +335,6 @@ relationalExpression
: addingExpression ((ASSIGN_OP|NOT_EQUALS|REL_OP) addingExpression)*
;
-expression
- : relationalExpression (("and"|"or") relationalExpression)*
- ;
-
-
//----------------------------------------------------------------------------
// Transform AST, so that it contains code
@@ -459,12 +462,8 @@ expr_list
;
gen_pir!
- : A:expr_line
- {
- #gen_pir = #([PIR_HEADER, "pir header\n#"], #A, [PIR_FOOTER, "pir
footer\nend\n#"]);
- }
- | #( PIR_OP B:expr_line )
- {
- #gen_pir = #([PIR_HEADER, "pir header tree\n#"], #B, [PIR_FOOTER, "pir
footer tree\nend\n#"]);
- }
+ : #( PIR_PRINT B:expr_line )
+ {
+ #gen_pir = #([PIR_HEADER, "pir header tree\n#"], #B, [PIR_FOOTER, "pir
footer tree\nend\n#"]);
+ }
;
Modified: trunk/languages/bc/python/lib/bc/BcLexer.py
==============================================================================
--- trunk/languages/bc/python/lib/bc/BcLexer.py (original)
+++ trunk/languages/bc/python/lib/bc/BcLexer.py Sat Aug 6 11:06:16 2005
@@ -1,4 +1,4 @@
-### $ANTLR 2.7.5 (20050425): "bc_python.g" -> "BcLexer.py"$
+### $ANTLR 2.7.5 (20050416): "bc_python.g" -> "BcLexer.py"$
### import antlr and other modules ..
import sys
import antlr
@@ -16,28 +16,26 @@ if version < '2.3':
### preamble action <<<
### >>>The Literals<<<
literals = {}
-literals[u"newLine"] = 50
-literals[u"elsif"] = 44
-literals[u"get"] = 49
-literals[u"if"] = 41
-literals[u"define"] = 36
-literals[u"quit"] = 33
-literals[u"while"] = 46
-literals[u"var"] = 37
-literals[u"end"] = 42
-literals[u"then"] = 43
-literals[u"or"] = 55
-literals[u"else"] = 45
-literals[u"Boolean"] = 35
-literals[u"when"] = 39
-literals[u"Integer"] = 34
-literals[u"skipLine"] = 51
-literals[u"and"] = 54
-literals[u"not"] = 52
-literals[u"loop"] = 47
-literals[u"exit"] = 38
-literals[u"put"] = 48
-literals[u"return"] = 40
+literals[u"newLine"] = 51
+literals[u"elsif"] = 45
+literals[u"get"] = 50
+literals[u"if"] = 42
+literals[u"define"] = 37
+literals[u"quit"] = 34
+literals[u"while"] = 47
+literals[u"var"] = 38
+literals[u"end"] = 43
+literals[u"then"] = 44
+literals[u"else"] = 46
+literals[u"Boolean"] = 36
+literals[u"when"] = 40
+literals[u"Integer"] = 35
+literals[u"skipLine"] = 52
+literals[u"not"] = 53
+literals[u"loop"] = 48
+literals[u"exit"] = 39
+literals[u"put"] = 49
+literals[u"return"] = 41
### import antlr.Token
@@ -78,34 +76,33 @@ DIV = 29
MOD = 30
PIR_OP = 31
UNARY_MINUS = 32
-LITERAL_quit = 33
-LITERAL_Integer = 34
-LITERAL_Boolean = 35
-LITERAL_define = 36
-LITERAL_var = 37
-LITERAL_exit = 38
-LITERAL_when = 39
-LITERAL_return = 40
-LITERAL_if = 41
-LITERAL_end = 42
-LITERAL_then = 43
-LITERAL_elsif = 44
-LITERAL_else = 45
-LITERAL_while = 46
-LITERAL_loop = 47
-LITERAL_put = 48
-LITERAL_get = 49
-LITERAL_newLine = 50
-LITERAL_skipLine = 51
-LITERAL_not = 52
-NOT_EQUALS = 53
-LITERAL_and = 54
-LITERAL_or = 55
-PIR_FOOTER = 56
-PIR_HEADER = 57
-PIR_NOOP = 58
-PIR_COMMENT = 59
-PIR_NEWLINE = 60
+PIR_PRINT = 33
+LITERAL_quit = 34
+LITERAL_Integer = 35
+LITERAL_Boolean = 36
+LITERAL_define = 37
+LITERAL_var = 38
+LITERAL_exit = 39
+LITERAL_when = 40
+LITERAL_return = 41
+LITERAL_if = 42
+LITERAL_end = 43
+LITERAL_then = 44
+LITERAL_elsif = 45
+LITERAL_else = 46
+LITERAL_while = 47
+LITERAL_loop = 48
+LITERAL_put = 49
+LITERAL_get = 50
+LITERAL_newLine = 51
+LITERAL_skipLine = 52
+LITERAL_not = 53
+NOT_EQUALS = 54
+PIR_FOOTER = 55
+PIR_HEADER = 56
+PIR_NOOP = 57
+PIR_COMMENT = 58
+PIR_NEWLINE = 59
class Lexer(antlr.CharScanner) :
### user action >>>
Modified: trunk/languages/bc/python/lib/bc/BcLexerTokenTypes.txt
==============================================================================
--- trunk/languages/bc/python/lib/bc/BcLexerTokenTypes.txt (original)
+++ trunk/languages/bc/python/lib/bc/BcLexerTokenTypes.txt Sat Aug 6
11:06:16 2005
@@ -1,4 +1,4 @@
-// $ANTLR 2.7.5 (20050425): bc_python.g -> BcLexerTokenTypes.txt$
+// $ANTLR 2.7.5 (20050416): bc_python.g -> BcLexerTokenTypes.txt$
BcLexer // output token vocab name
DIGIT=4
NUMBER=5
@@ -29,31 +29,30 @@ DIV=29
MOD=30
PIR_OP=31
UNARY_MINUS=32
-LITERAL_quit="quit"=33
-LITERAL_Integer="Integer"=34
-LITERAL_Boolean="Boolean"=35
-LITERAL_define="define"=36
-LITERAL_var="var"=37
-LITERAL_exit="exit"=38
-LITERAL_when="when"=39
-LITERAL_return="return"=40
-LITERAL_if="if"=41
-LITERAL_end="end"=42
-LITERAL_then="then"=43
-LITERAL_elsif="elsif"=44
-LITERAL_else="else"=45
-LITERAL_while="while"=46
-LITERAL_loop="loop"=47
-LITERAL_put="put"=48
-LITERAL_get="get"=49
-LITERAL_newLine="newLine"=50
-LITERAL_skipLine="skipLine"=51
-LITERAL_not="not"=52
-NOT_EQUALS=53
-LITERAL_and="and"=54
-LITERAL_or="or"=55
-PIR_FOOTER=56
-PIR_HEADER=57
-PIR_NOOP=58
-PIR_COMMENT=59
-PIR_NEWLINE=60
+PIR_PRINT=33
+LITERAL_quit="quit"=34
+LITERAL_Integer="Integer"=35
+LITERAL_Boolean="Boolean"=36
+LITERAL_define="define"=37
+LITERAL_var="var"=38
+LITERAL_exit="exit"=39
+LITERAL_when="when"=40
+LITERAL_return="return"=41
+LITERAL_if="if"=42
+LITERAL_end="end"=43
+LITERAL_then="then"=44
+LITERAL_elsif="elsif"=45
+LITERAL_else="else"=46
+LITERAL_while="while"=47
+LITERAL_loop="loop"=48
+LITERAL_put="put"=49
+LITERAL_get="get"=50
+LITERAL_newLine="newLine"=51
+LITERAL_skipLine="skipLine"=52
+LITERAL_not="not"=53
+NOT_EQUALS=54
+PIR_FOOTER=55
+PIR_HEADER=56
+PIR_NOOP=57
+PIR_COMMENT=58
+PIR_NEWLINE=59
Modified: trunk/languages/bc/python/lib/bc/BcParser.py
==============================================================================
--- trunk/languages/bc/python/lib/bc/BcParser.py (original)
+++ trunk/languages/bc/python/lib/bc/BcParser.py Sat Aug 6 11:06:16 2005
@@ -1,4 +1,4 @@
-### $ANTLR 2.7.5 (20050425): "bc_python.g" -> "BcParser.py"$
+### $ANTLR 2.7.5 (20050416): "bc_python.g" -> "BcParser.py"$
### import antlr and other modules ..
import sys
import antlr
@@ -53,34 +53,33 @@ DIV = 29
MOD = 30
PIR_OP = 31
UNARY_MINUS = 32
-LITERAL_quit = 33
-LITERAL_Integer = 34
-LITERAL_Boolean = 35
-LITERAL_define = 36
-LITERAL_var = 37
-LITERAL_exit = 38
-LITERAL_when = 39
-LITERAL_return = 40
-LITERAL_if = 41
-LITERAL_end = 42
-LITERAL_then = 43
-LITERAL_elsif = 44
-LITERAL_else = 45
-LITERAL_while = 46
-LITERAL_loop = 47
-LITERAL_put = 48
-LITERAL_get = 49
-LITERAL_newLine = 50
-LITERAL_skipLine = 51
-LITERAL_not = 52
-NOT_EQUALS = 53
-LITERAL_and = 54
-LITERAL_or = 55
-PIR_FOOTER = 56
-PIR_HEADER = 57
-PIR_NOOP = 58
-PIR_COMMENT = 59
-PIR_NEWLINE = 60
+PIR_PRINT = 33
+LITERAL_quit = 34
+LITERAL_Integer = 35
+LITERAL_Boolean = 36
+LITERAL_define = 37
+LITERAL_var = 38
+LITERAL_exit = 39
+LITERAL_when = 40
+LITERAL_return = 41
+LITERAL_if = 42
+LITERAL_end = 43
+LITERAL_then = 44
+LITERAL_elsif = 45
+LITERAL_else = 46
+LITERAL_while = 47
+LITERAL_loop = 48
+LITERAL_put = 49
+LITERAL_get = 50
+LITERAL_newLine = 51
+LITERAL_skipLine = 52
+LITERAL_not = 53
+NOT_EQUALS = 54
+PIR_FOOTER = 55
+PIR_HEADER = 56
+PIR_NOOP = 57
+PIR_COMMENT = 58
+PIR_NEWLINE = 59
class Parser(antlr.LLkParser):
### user action >>>
@@ -152,6 +151,18 @@ class Parser(antlr.LLkParser):
pass
self.statement()
self.addASTChild(currentAST, self.returnAST)
+ while True:
+ if (self.LA(1)==SEMICOLON):
+ pass
+ tmp10_AST = None
+ tmp10_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp10_AST)
+ self.match(SEMICOLON)
+ self.statement()
+ self.addASTChild(currentAST, self.returnAST)
+ else:
+ break
+
semicolon_list_AST = currentAST.root
except antlr.RecognitionException, ex:
@@ -171,32 +182,50 @@ class Parser(antlr.LLkParser):
statement_AST = None
try: ## for error handling
pass
- self.addingExpression()
+ self.expression()
self.addASTChild(currentAST, self.returnAST)
- while True:
- if (self.LA(1)==SEMICOLON):
- pass
- tmp10_AST = None
- tmp10_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp10_AST)
- self.match(SEMICOLON)
- self.addingExpression()
- self.addASTChild(currentAST, self.returnAST)
- else:
- break
-
statement_AST = currentAST.root
except antlr.RecognitionException, ex:
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_2)
+ self.consumeUntil(_tokenSet_3)
else:
raise ex
self.returnAST = statement_AST
+ def expression(self):
+
+ self.returnAST = None
+ currentAST = antlr.ASTPair()
+ expression_AST = None
+ a_AST = None
+ try: ## for error handling
+ pass
+ self.addingExpression()
+ a_AST = self.returnAST
+ if not self.inputState.guessing:
+ expression_AST = currentAST.root
+ expression_AST =
antlr.make(self.astFactory.create(PIR_PRINT,"print"), a_AST)
+ currentAST.root = expression_AST
+ if (expression_AST != None) and
(expression_AST.getFirstChild() != None):
+ currentAST.child = expression_AST.getFirstChild()
+ else:
+ currentAST.child = expression_AST
+ currentAST.advanceChildToEnd()
+
+ except antlr.RecognitionException, ex:
+ if not self.inputState.guessing:
+ self.reportError(ex)
+ self.consume()
+ self.consumeUntil(_tokenSet_4)
+ else:
+ raise ex
+
+ self.returnAST = expression_AST
+
def addingExpression(self):
self.returnAST = None
@@ -238,7 +267,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_3)
+ self.consumeUntil(_tokenSet_5)
else:
raise ex
@@ -267,7 +296,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_4)
+ self.consumeUntil(_tokenSet_6)
else:
raise ex
@@ -324,7 +353,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_5)
+ self.consumeUntil(_tokenSet_7)
else:
raise ex
@@ -357,7 +386,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_6)
+ self.consumeUntil(_tokenSet_8)
else:
raise ex
@@ -394,7 +423,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_7)
+ self.consumeUntil(_tokenSet_9)
else:
raise ex
@@ -438,7 +467,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_8)
+ self.consumeUntil(_tokenSet_10)
else:
raise ex
@@ -475,7 +504,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_9)
+ self.consumeUntil(_tokenSet_11)
else:
raise ex
@@ -516,7 +545,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_8)
+ self.consumeUntil(_tokenSet_10)
else:
raise ex
@@ -599,10 +628,10 @@ class Parser(antlr.LLkParser):
self.addASTChild(currentAST, self.returnAST)
statement_from_tutorial_AST = currentAST.root
else:
- synPredMatched67 = False
+ synPredMatched68 = False
if (self.LA(1)==LETTER):
- _m67 = self.mark()
- synPredMatched67 = True
+ _m68 = self.mark()
+ synPredMatched68 = True
self.inputState.guessing += 1
try:
pass
@@ -620,10 +649,10 @@ class Parser(antlr.LLkParser):
raise antlr.NoViableAltException(self.LT(1),
self.getFilename())
except antlr.RecognitionException, pe:
- synPredMatched67 = False
- self.rewind(_m67)
+ synPredMatched68 = False
+ self.rewind(_m68)
self.inputState.guessing -= 1
- if synPredMatched67:
+ if synPredMatched68:
pass
self.procedureCallStatement()
self.addASTChild(currentAST, self.returnAST)
@@ -990,53 +1019,6 @@ class Parser(antlr.LLkParser):
self.returnAST = assignmentStatement_AST
- def expression(self):
-
- self.returnAST = None
- currentAST = antlr.ASTPair()
- expression_AST = None
- try: ## for error handling
- pass
- self.relationalExpression()
- self.addASTChild(currentAST, self.returnAST)
- while True:
- if (self.LA(1)==LITERAL_and or self.LA(1)==LITERAL_or):
- pass
- la1 = self.LA(1)
- if False:
- pass
- elif la1 and la1 in [LITERAL_and]:
- pass
- tmp67_AST = None
- tmp67_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp67_AST)
- self.match(LITERAL_and)
- elif la1 and la1 in [LITERAL_or]:
- pass
- tmp68_AST = None
- tmp68_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp68_AST)
- self.match(LITERAL_or)
- else:
- raise antlr.NoViableAltException(self.LT(1),
self.getFilename())
-
- self.relationalExpression()
- self.addASTChild(currentAST, self.returnAST)
- else:
- break
-
- expression_AST = currentAST.root
-
- except antlr.RecognitionException, ex:
- if not self.inputState.guessing:
- self.reportError(ex)
- self.consume()
- self.consumeUntil(_tokenSet_10)
- else:
- raise ex
-
- self.returnAST = expression_AST
-
def variableReference(self):
self.returnAST = None
@@ -1044,9 +1026,9 @@ class Parser(antlr.LLkParser):
variableReference_AST = None
try: ## for error handling
pass
- tmp69_AST = None
- tmp69_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp69_AST)
+ tmp67_AST = None
+ tmp67_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp67_AST)
self.match(LETTER)
while True:
la1 = self.LA(1)
@@ -1054,25 +1036,25 @@ class Parser(antlr.LLkParser):
pass
elif la1 and la1 in [LBRACKET]:
pass
- tmp70_AST = None
- tmp70_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp70_AST)
+ tmp68_AST = None
+ tmp68_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp68_AST)
self.match(LBRACKET)
self.expression()
self.addASTChild(currentAST, self.returnAST)
- tmp71_AST = None
- tmp71_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp71_AST)
+ tmp69_AST = None
+ tmp69_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp69_AST)
self.match(RBRACKET)
elif la1 and la1 in [DOT]:
pass
- tmp72_AST = None
- tmp72_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp72_AST)
+ tmp70_AST = None
+ tmp70_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp70_AST)
self.match(DOT)
- tmp73_AST = None
- tmp73_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp73_AST)
+ tmp71_AST = None
+ tmp71_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp71_AST)
self.match(LETTER)
else:
break
@@ -1083,7 +1065,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_11)
+ self.consumeUntil(_tokenSet_12)
else:
raise ex
@@ -1096,9 +1078,9 @@ class Parser(antlr.LLkParser):
actualParameters_AST = None
try: ## for error handling
pass
- tmp74_AST = None
- tmp74_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp74_AST)
+ tmp72_AST = None
+ tmp72_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp72_AST)
self.match(LPAREN)
la1 = self.LA(1)
if False:
@@ -1110,9 +1092,9 @@ class Parser(antlr.LLkParser):
while True:
if (self.LA(1)==COMMA):
pass
- tmp75_AST = None
- tmp75_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp75_AST)
+ tmp73_AST = None
+ tmp73_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp73_AST)
self.match(COMMA)
self.expression()
self.addASTChild(currentAST, self.returnAST)
@@ -1124,9 +1106,9 @@ class Parser(antlr.LLkParser):
else:
raise antlr.NoViableAltException(self.LT(1),
self.getFilename())
- tmp76_AST = None
- tmp76_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp76_AST)
+ tmp74_AST = None
+ tmp74_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp74_AST)
self.match(RPAREN)
actualParameters_AST = currentAST.root
@@ -1134,7 +1116,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_4)
+ self.consumeUntil(_tokenSet_6)
else:
raise ex
@@ -1149,9 +1131,9 @@ class Parser(antlr.LLkParser):
pass
self.expression()
self.addASTChild(currentAST, self.returnAST)
- tmp77_AST = None
- tmp77_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp77_AST)
+ tmp75_AST = None
+ tmp75_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp75_AST)
self.match(LITERAL_then)
self.statement_list()
self.addASTChild(currentAST, self.returnAST)
@@ -1160,17 +1142,17 @@ class Parser(antlr.LLkParser):
pass
elif la1 and la1 in [LITERAL_elsif]:
pass
- tmp78_AST = None
- tmp78_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp78_AST)
+ tmp76_AST = None
+ tmp76_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp76_AST)
self.match(LITERAL_elsif)
self.ifPart()
self.addASTChild(currentAST, self.returnAST)
elif la1 and la1 in [LITERAL_else]:
pass
- tmp79_AST = None
- tmp79_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp79_AST)
+ tmp77_AST = None
+ tmp77_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp77_AST)
self.match(LITERAL_else)
self.statement_list()
self.addASTChild(currentAST, self.returnAST)
@@ -1185,7 +1167,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_12)
+ self.consumeUntil(_tokenSet_13)
else:
raise ex
@@ -1198,13 +1180,13 @@ class Parser(antlr.LLkParser):
endStatement_AST = None
try: ## for error handling
pass
- tmp80_AST = None
- tmp80_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp80_AST)
+ tmp78_AST = None
+ tmp78_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp78_AST)
self.match(LITERAL_end)
- tmp81_AST = None
- tmp81_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp81_AST)
+ tmp79_AST = None
+ tmp79_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp79_AST)
self.match(SEMICOLON)
endStatement_AST = currentAST.root
@@ -1234,15 +1216,15 @@ class Parser(antlr.LLkParser):
primitiveElement_AST = currentAST.root
elif la1 and la1 in [LPAREN]:
pass
- tmp82_AST = None
- tmp82_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp82_AST)
+ tmp80_AST = None
+ tmp80_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp80_AST)
self.match(LPAREN)
self.expression()
self.addASTChild(currentAST, self.returnAST)
- tmp83_AST = None
- tmp83_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp83_AST)
+ tmp81_AST = None
+ tmp81_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp81_AST)
self.match(RPAREN)
primitiveElement_AST = currentAST.root
else:
@@ -1269,9 +1251,9 @@ class Parser(antlr.LLkParser):
while True:
if (self.LA(1)==LITERAL_not):
pass
- tmp84_AST = None
- tmp84_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp84_AST)
+ tmp82_AST = None
+ tmp82_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp82_AST)
self.match(LITERAL_not)
else:
break
@@ -1307,21 +1289,21 @@ class Parser(antlr.LLkParser):
pass
elif la1 and la1 in [MUL]:
pass
- tmp85_AST = None
- tmp85_AST = self.astFactory.create(self.LT(1))
- self.makeASTRoot(currentAST, tmp85_AST)
+ tmp83_AST = None
+ tmp83_AST = self.astFactory.create(self.LT(1))
+ self.makeASTRoot(currentAST, tmp83_AST)
self.match(MUL)
elif la1 and la1 in [DIV]:
pass
- tmp86_AST = None
- tmp86_AST = self.astFactory.create(self.LT(1))
- self.makeASTRoot(currentAST, tmp86_AST)
+ tmp84_AST = None
+ tmp84_AST = self.astFactory.create(self.LT(1))
+ self.makeASTRoot(currentAST, tmp84_AST)
self.match(DIV)
elif la1 and la1 in [MOD]:
pass
- tmp87_AST = None
- tmp87_AST = self.astFactory.create(self.LT(1))
- self.makeASTRoot(currentAST, tmp87_AST)
+ tmp85_AST = None
+ tmp85_AST = self.astFactory.create(self.LT(1))
+ self.makeASTRoot(currentAST, tmp85_AST)
self.match(MOD)
else:
raise antlr.NoViableAltException(self.LT(1),
self.getFilename())
@@ -1337,7 +1319,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_13)
+ self.consumeUntil(_tokenSet_14)
else:
raise ex
@@ -1358,8 +1340,8 @@ class Parser(antlr.LLkParser):
pass
elif la1 and la1 in [MINUS]:
pass
- tmp88_AST = None
- tmp88_AST = self.astFactory.create(self.LT(1))
+ tmp86_AST = None
+ tmp86_AST = self.astFactory.create(self.LT(1))
self.match(MINUS)
i1 = self.LT(1)
i1_AST = self.astFactory.create(i1)
@@ -1395,7 +1377,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_14)
+ self.consumeUntil(_tokenSet_15)
else:
raise ex
@@ -1418,21 +1400,21 @@ class Parser(antlr.LLkParser):
pass
elif la1 and la1 in [ASSIGN_OP]:
pass
- tmp89_AST = None
- tmp89_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp89_AST)
+ tmp87_AST = None
+ tmp87_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp87_AST)
self.match(ASSIGN_OP)
elif la1 and la1 in [NOT_EQUALS]:
pass
- tmp90_AST = None
- tmp90_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp90_AST)
+ tmp88_AST = None
+ tmp88_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp88_AST)
self.match(NOT_EQUALS)
elif la1 and la1 in [REL_OP]:
pass
- tmp91_AST = None
- tmp91_AST = self.astFactory.create(self.LT(1))
- self.addASTChild(currentAST, tmp91_AST)
+ tmp89_AST = None
+ tmp89_AST = self.astFactory.create(self.LT(1))
+ self.addASTChild(currentAST, tmp89_AST)
self.match(REL_OP)
else:
raise antlr.NoViableAltException(self.LT(1),
self.getFilename())
@@ -1448,7 +1430,7 @@ class Parser(antlr.LLkParser):
if not self.inputState.guessing:
self.reportError(ex)
self.consume()
- self.consumeUntil(_tokenSet_15)
+ self.consumeUntil(_tokenSet_0)
else:
raise ex
@@ -1492,6 +1474,7 @@ _tokenNames = [
"MOD",
"PIR_OP",
"UNARY_MINUS",
+ "PIR_PRINT",
"\"quit\"",
"\"Integer\"",
"\"Boolean\"",
@@ -1513,8 +1496,6 @@ _tokenNames = [
"\"skipLine\"",
"\"not\"",
"NOT_EQUALS",
- "\"and\"",
- "\"or\"",
"PIR_FOOTER",
"PIR_HEADER",
"PIR_NOOP",
@@ -1533,7 +1514,7 @@ _tokenSet_0 = antlr.BitSet(mk_tokenSet_0
### generate bit set
def mk_tokenSet_1():
### var1
- data = [ 8657043488L, 0L]
+ data = [ 17246978080L, 0L]
return data
_tokenSet_1 = antlr.BitSet(mk_tokenSet_1())
@@ -1547,91 +1528,91 @@ _tokenSet_2 = antlr.BitSet(mk_tokenSet_2
### generate bit set
def mk_tokenSet_3():
### var1
- data = [ 63257103062384802L, 0L]
+ data = [ 16512L, 0L]
return data
_tokenSet_3 = antlr.BitSet(mk_tokenSet_3())
### generate bit set
def mk_tokenSet_4():
### var1
- data = [ 16384L, 0L]
+ data = [ 299067171455106L, 0L]
return data
_tokenSet_4 = antlr.BitSet(mk_tokenSet_4())
### generate bit set
def mk_tokenSet_5():
### var1
- data = [ 68786602016L, 0L]
+ data = [ 18427814974701730L, 0L]
return data
_tokenSet_5 = antlr.BitSet(mk_tokenSet_5())
### generate bit set
def mk_tokenSet_6():
### var1
- data = [ 57174605185024L, 0L]
+ data = [ 16384L, 0L]
return data
_tokenSet_6 = antlr.BitSet(mk_tokenSet_6())
### generate bit set
def mk_tokenSet_7():
### var1
- data = [ 8192L, 0L]
+ data = [ 137506078752L, 0L]
return data
_tokenSet_7 = antlr.BitSet(mk_tokenSet_7())
### generate bit set
def mk_tokenSet_8():
### var1
- data = [ 8404992L, 0L]
+ data = [ 114349209829376L, 0L]
return data
_tokenSet_8 = antlr.BitSet(mk_tokenSet_8())
### generate bit set
def mk_tokenSet_9():
### var1
- data = [ 8388608L, 0L]
+ data = [ 8192L, 0L]
return data
_tokenSet_9 = antlr.BitSet(mk_tokenSet_9())
### generate bit set
def mk_tokenSet_10():
### var1
- data = [ 149533590077442L, 0L]
+ data = [ 8404992L, 0L]
return data
_tokenSet_10 = antlr.BitSet(mk_tokenSet_10())
### generate bit set
def mk_tokenSet_11():
### var1
- data = [ 8392706L, 0L]
+ data = [ 8388608L, 0L]
return data
_tokenSet_11 = antlr.BitSet(mk_tokenSet_11())
### generate bit set
def mk_tokenSet_12():
### var1
- data = [ 4398046511104L, 0L]
+ data = [ 8392706L, 0L]
return data
_tokenSet_12 = antlr.BitSet(mk_tokenSet_12())
### generate bit set
def mk_tokenSet_13():
### var1
- data = [ 63257103095939234L, 0L]
+ data = [ 8796093022208L, 0L]
return data
_tokenSet_13 = antlr.BitSet(mk_tokenSet_13())
### generate bit set
def mk_tokenSet_14():
### var1
- data = [ 63257104974987426L, 0L]
+ data = [ 18427815008256162L, 0L]
return data
_tokenSet_14 = antlr.BitSet(mk_tokenSet_14())
### generate bit set
def mk_tokenSet_15():
### var1
- data = [ 54192729118523394L, 0L]
+ data = [ 18427816887304354L, 0L]
return data
_tokenSet_15 = antlr.BitSet(mk_tokenSet_15())
Modified: trunk/languages/bc/python/lib/bc/BcTreeWalker.py
==============================================================================
--- trunk/languages/bc/python/lib/bc/BcTreeWalker.py (original)
+++ trunk/languages/bc/python/lib/bc/BcTreeWalker.py Sat Aug 6 11:06:16 2005
@@ -1,4 +1,4 @@
-### $ANTLR 2.7.5 (20050425): "bc_python.g" -> "BcTreeWalker.py"$
+### $ANTLR 2.7.5 (20050416): "bc_python.g" -> "BcTreeWalker.py"$
### import antlr and other modules ..
import sys
import antlr
@@ -50,34 +50,33 @@ DIV = 29
MOD = 30
PIR_OP = 31
UNARY_MINUS = 32
-LITERAL_quit = 33
-LITERAL_Integer = 34
-LITERAL_Boolean = 35
-LITERAL_define = 36
-LITERAL_var = 37
-LITERAL_exit = 38
-LITERAL_when = 39
-LITERAL_return = 40
-LITERAL_if = 41
-LITERAL_end = 42
-LITERAL_then = 43
-LITERAL_elsif = 44
-LITERAL_else = 45
-LITERAL_while = 46
-LITERAL_loop = 47
-LITERAL_put = 48
-LITERAL_get = 49
-LITERAL_newLine = 50
-LITERAL_skipLine = 51
-LITERAL_not = 52
-NOT_EQUALS = 53
-LITERAL_and = 54
-LITERAL_or = 55
-PIR_FOOTER = 56
-PIR_HEADER = 57
-PIR_NOOP = 58
-PIR_COMMENT = 59
-PIR_NEWLINE = 60
+PIR_PRINT = 33
+LITERAL_quit = 34
+LITERAL_Integer = 35
+LITERAL_Boolean = 36
+LITERAL_define = 37
+LITERAL_var = 38
+LITERAL_exit = 39
+LITERAL_when = 40
+LITERAL_return = 41
+LITERAL_if = 42
+LITERAL_end = 43
+LITERAL_then = 44
+LITERAL_elsif = 45
+LITERAL_else = 46
+LITERAL_while = 47
+LITERAL_loop = 48
+LITERAL_put = 49
+LITERAL_get = 50
+LITERAL_newLine = 51
+LITERAL_skipLine = 52
+LITERAL_not = 53
+NOT_EQUALS = 54
+PIR_FOOTER = 55
+PIR_HEADER = 56
+PIR_NOOP = 57
+PIR_COMMENT = 58
+PIR_NEWLINE = 59
### user code>>>
@@ -110,12 +109,12 @@ class Walker(antlr.TreeParser):
right = None
try: ## for error handling
pass
- _t112 = _t
+ _t109 = _t
tmp1_AST = None
tmp1_AST_in = None
tmp1_AST = self.astFactory.create(_t)
tmp1_AST_in = _t
- _currentAST112 = currentAST.copy()
+ _currentAST109 = currentAST.copy()
currentAST.root = currentAST.child
currentAST.child = None
self.match(_t,PLUS)
@@ -128,8 +127,8 @@ class Walker(antlr.TreeParser):
reg_name_right=self.expr(_t)
_t = self._retTree
right_AST = self.returnAST
- currentAST = _currentAST112
- _t = _t112
+ currentAST = _currentAST109
+ _t = _t109
_t = _t.getNextSibling()
plus_AST = currentAST.root
reg_name = "P%d" % self.reg_num
@@ -233,12 +232,12 @@ class Walker(antlr.TreeParser):
right = None
try: ## for error handling
pass
- _t114 = _t
+ _t111 = _t
tmp2_AST = None
tmp2_AST_in = None
tmp2_AST = self.astFactory.create(_t)
tmp2_AST_in = _t
- _currentAST114 = currentAST.copy()
+ _currentAST111 = currentAST.copy()
currentAST.root = currentAST.child
currentAST.child = None
self.match(_t,MINUS)
@@ -251,8 +250,8 @@ class Walker(antlr.TreeParser):
reg_name_right=self.expr(_t)
_t = self._retTree
right_AST = self.returnAST
- currentAST = _currentAST114
- _t = _t114
+ currentAST = _currentAST111
+ _t = _t111
_t = _t.getNextSibling()
minus_AST = currentAST.root
reg_name = "P%d" % self.reg_num
@@ -292,12 +291,12 @@ class Walker(antlr.TreeParser):
right = None
try: ## for error handling
pass
- _t116 = _t
+ _t113 = _t
tmp3_AST = None
tmp3_AST_in = None
tmp3_AST = self.astFactory.create(_t)
tmp3_AST_in = _t
- _currentAST116 = currentAST.copy()
+ _currentAST113 = currentAST.copy()
currentAST.root = currentAST.child
currentAST.child = None
self.match(_t,MUL)
@@ -310,8 +309,8 @@ class Walker(antlr.TreeParser):
reg_name_right=self.expr(_t)
_t = self._retTree
right_AST = self.returnAST
- currentAST = _currentAST116
- _t = _t116
+ currentAST = _currentAST113
+ _t = _t113
_t = _t.getNextSibling()
mul_AST = currentAST.root
reg_name = "P%d" % self.reg_num
@@ -351,12 +350,12 @@ class Walker(antlr.TreeParser):
right = None
try: ## for error handling
pass
- _t118 = _t
+ _t115 = _t
tmp4_AST = None
tmp4_AST_in = None
tmp4_AST = self.astFactory.create(_t)
tmp4_AST_in = _t
- _currentAST118 = currentAST.copy()
+ _currentAST115 = currentAST.copy()
currentAST.root = currentAST.child
currentAST.child = None
self.match(_t,DIV)
@@ -369,8 +368,8 @@ class Walker(antlr.TreeParser):
reg_name_right=self.expr(_t)
_t = self._retTree
right_AST = self.returnAST
- currentAST = _currentAST118
- _t = _t118
+ currentAST = _currentAST115
+ _t = _t115
_t = _t.getNextSibling()
div_AST = currentAST.root
reg_name = "P%d" % self.reg_num
@@ -410,12 +409,12 @@ class Walker(antlr.TreeParser):
right = None
try: ## for error handling
pass
- _t120 = _t
+ _t117 = _t
tmp5_AST = None
tmp5_AST_in = None
tmp5_AST = self.astFactory.create(_t)
tmp5_AST_in = _t
- _currentAST120 = currentAST.copy()
+ _currentAST117 = currentAST.copy()
currentAST.root = currentAST.child
currentAST.child = None
self.match(_t,MOD)
@@ -428,8 +427,8 @@ class Walker(antlr.TreeParser):
reg_name_right=self.expr(_t)
_t = self._retTree
right_AST = self.returnAST
- currentAST = _currentAST120
- _t = _t120
+ currentAST = _currentAST117
+ _t = _t117
_t = _t.getNextSibling()
mod_AST = currentAST.root
reg_name = "P%d" % self.reg_num
@@ -533,13 +532,13 @@ class Walker(antlr.TreeParser):
signExpression_AST = currentAST.root
elif la1 and la1 in [UNARY_MINUS]:
pass
- _t123 = _t
+ _t120 = _t
tmp6_AST = None
tmp6_AST_in = None
tmp6_AST = self.astFactory.create(_t)
tmp6_AST_in = _t
self.addASTChild(currentAST, tmp6_AST)
- _currentAST123 = currentAST.copy()
+ _currentAST120 = currentAST.copy()
currentAST.root = currentAST.child
currentAST.child = None
self.match(_t,UNARY_MINUS)
@@ -549,8 +548,8 @@ class Walker(antlr.TreeParser):
_t = self._retTree
i2_AST = self.returnAST
self.addASTChild(currentAST, self.returnAST)
- currentAST = _currentAST123
- _t = _t123
+ currentAST = _currentAST120
+ _t = _t120
_t = _t.getNextSibling()
signExpression_AST = currentAST.root
pir = "\n" + \
@@ -614,7 +613,7 @@ class Walker(antlr.TreeParser):
expr_list_AST = None
try: ## for error handling
pass
- _cnt128= 0
+ _cnt125= 0
while True:
if not _t:
_t = antlr.ASTNULL
@@ -626,8 +625,8 @@ class Walker(antlr.TreeParser):
else:
break
- _cnt128 += 1
- if _cnt128 < 1:
+ _cnt125 += 1
+ if _cnt125 < 1:
raise antlr.NoViableAltException(_t)
expr_list_AST = currentAST.root
@@ -647,60 +646,35 @@ class Walker(antlr.TreeParser):
self.returnAST = None
currentAST = antlr.ASTPair()
gen_pir_AST = None
- A_AST = None
- A = None
B_AST = None
B = None
try: ## for error handling
- if not _t:
- _t = antlr.ASTNULL
- la1 = _t.getType()
- if False:
- pass
- elif la1 and la1 in [NUMBER,PLUS,MINUS,MUL,DIV,MOD,UNARY_MINUS]:
- pass
- A = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
- self.expr_line(_t)
- _t = self._retTree
- A_AST = self.returnAST
- gen_pir_AST = currentAST.root
- gen_pir_AST =
antlr.make(self.astFactory.create(PIR_HEADER,"pir header\n#"), A_AST,
self.astFactory.create(PIR_FOOTER,"pir footer\nend\n#"));
- currentAST.root = gen_pir_AST
- if (gen_pir_AST != None) and (gen_pir_AST.getFirstChild() !=
None):
- currentAST.child = gen_pir_AST.getFirstChild()
- else:
- currentAST.child = gen_pir_AST
- currentAST.advanceChildToEnd()
- elif la1 and la1 in [PIR_OP]:
- pass
- _t130 = _t
- tmp7_AST = None
- tmp7_AST_in = None
- tmp7_AST = self.astFactory.create(_t)
- tmp7_AST_in = _t
- _currentAST130 = currentAST.copy()
- currentAST.root = currentAST.child
- currentAST.child = None
- self.match(_t,PIR_OP)
- _t = _t.getFirstChild()
- B = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
- self.expr_line(_t)
- _t = self._retTree
- B_AST = self.returnAST
- currentAST = _currentAST130
- _t = _t130
- _t = _t.getNextSibling()
- gen_pir_AST = currentAST.root
- gen_pir_AST =
antlr.make(self.astFactory.create(PIR_HEADER,"pir header tree\n#"), B_AST,
self.astFactory.create(PIR_FOOTER,"pir footer tree\nend\n#"));
- currentAST.root = gen_pir_AST
- if (gen_pir_AST != None) and (gen_pir_AST.getFirstChild() !=
None):
- currentAST.child = gen_pir_AST.getFirstChild()
- else:
- currentAST.child = gen_pir_AST
- currentAST.advanceChildToEnd()
+ pass
+ _t127 = _t
+ tmp7_AST = None
+ tmp7_AST_in = None
+ tmp7_AST = self.astFactory.create(_t)
+ tmp7_AST_in = _t
+ _currentAST127 = currentAST.copy()
+ currentAST.root = currentAST.child
+ currentAST.child = None
+ self.match(_t,PIR_PRINT)
+ _t = _t.getFirstChild()
+ B = antlr.ifelse(_t == antlr.ASTNULL, None, _t)
+ self.expr_line(_t)
+ _t = self._retTree
+ B_AST = self.returnAST
+ currentAST = _currentAST127
+ _t = _t127
+ _t = _t.getNextSibling()
+ gen_pir_AST = currentAST.root
+ gen_pir_AST = antlr.make(self.astFactory.create(PIR_HEADER,"pir
header tree\n#"), B_AST, self.astFactory.create(PIR_FOOTER,"pir footer
tree\nend\n#"));
+ currentAST.root = gen_pir_AST
+ if (gen_pir_AST != None) and (gen_pir_AST.getFirstChild() != None):
+ currentAST.child = gen_pir_AST.getFirstChild()
else:
- raise antlr.NoViableAltException(_t)
-
+ currentAST.child = gen_pir_AST
+ currentAST.advanceChildToEnd()
except antlr.RecognitionException, ex:
self.reportError(ex)
@@ -745,6 +719,7 @@ _tokenNames = [
"MOD",
"PIR_OP",
"UNARY_MINUS",
+ "PIR_PRINT",
"\"quit\"",
"\"Integer\"",
"\"Boolean\"",
@@ -766,8 +741,6 @@ _tokenNames = [
"\"skipLine\"",
"\"not\"",
"NOT_EQUALS",
- "\"and\"",
- "\"or\"",
"PIR_FOOTER",
"PIR_HEADER",
"PIR_NOOP",
Modified: trunk/languages/bc/t/harness
==============================================================================
--- trunk/languages/bc/t/harness (original)
+++ trunk/languages/bc/t/harness Sat Aug 6 11:06:16 2005
@@ -69,7 +69,7 @@ if ( grep { m/^--files$/ } @ARGV ) {
};
if ( $use_gnu_bc ) {
$ENV{PARROT_BC_TEST_PROG} = 'bc --standard --quiet';
- Test::Harness::runtests( @files ) if scalar( @files );
+ # Test::Harness::runtests( @files ) if scalar( @files );
}
}