Revision: 1904
Author: jsuijs
Date: Fri Apr 9 12:51:17 2010
Log: updated grammar
http://code.google.com/p/jallib/source/detail?r=1904
Added:
/trunk/grammar/antlr-3.1.2.jar
/trunk/grammar/jal.tokens
/trunk/grammar/jalLexer.py
/trunk/grammar/jalParser.py
Modified:
/trunk/grammar/jal.g
=======================================
--- /dev/null
+++ /trunk/grammar/antlr-3.1.2.jar Fri Apr 9 12:51:17 2010
File is too large to display a diff.
=======================================
--- /dev/null
+++ /trunk/grammar/jal.tokens Fri Apr 9 12:51:17 2010
@@ -0,0 +1,141 @@
+T__68=68
+T__69=69
+T__66=66
+T__67=67
+T__64=64
+T__29=29
+T__65=65
+T__28=28
+T__62=62
+T__27=27
+T__63=63
+T__26=26
+T__25=25
+T__24=24
+LETTER=9
+T__23=23
+T__22=22
+T__21=21
+T__20=20
+PRAGMA=8
+T__61=61
+T__60=60
+HexDigit=14
+T__55=55
+T__19=19
+T__56=56
+T__57=57
+T__58=58
+STRING_LITERAL=5
+T__51=51
+IN=6
+T__52=52
+T__53=53
+T__54=54
+IDENTIFIER=4
+T__59=59
+BIN_LITERAL=10
+HEX_LITERAL=11
+T__50=50
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__80=80
+T__46=46
+T__81=81
+T__47=47
+T__44=44
+T__45=45
+LINE_COMMENT=18
+T__48=48
+T__49=49
+OCTAL_LITERAL=12
+CHARACTER_LITERAL=7
+T__30=30
+T__31=31
+T__32=32
+WS=17
+T__71=71
+T__33=33
+T__72=72
+T__34=34
+T__35=35
+T__70=70
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__76=76
+T__75=75
+T__74=74
+OctalEscape=16
+EscapeSequence=15
+DECIMAL_LITERAL=13
+T__73=73
+T__79=79
+T__78=78
+T__77=77
+'bit'=65
+'end'=33
+'out'=53
+'~'=81
+'/'=79
+'then'=39
+'include'=21
+'volatile'=52
+'return'=19
+'for'=29
+'+'=77
+'procedure'=47
+'elsif'=40
+'function'=51
+'loop'=31
+'^'=73
+'is'=50
+'byte'=66
+'_error'=23
+'>>'=76
+'else'=41
+'{'=26
+'\''=54
+'until'=37
+'shared'=63
+'var'=61
+'put'=55
+'if'=38
+':'=44
+'('=48
+'-'=78
+'while'=35
+'exit'=32
+'of'=43
+','=27
+'forever'=34
+'get'=56
+'using'=30
+']'=60
+'_debug'=22
+'|'=72
+'assert'=20
+'dword'=68
+'at'=64
+'const'=58
+'alias'=57
+'repeat'=36
+'sdword'=71
+'='=25
+'word'=67
+')'=49
+'%'=80
+'case'=42
+'}'=28
+'sbyte'=69
+'block'=46
+'<<'=75
+'otherwise'=45
+'_warn'=24
+'['=59
+'*'=62
+'&'=74
+'sword'=70
=======================================
--- /dev/null
+++ /trunk/grammar/jalLexer.py Fri Apr 9 12:51:17 2010
@@ -0,0 +1,3532 @@
+# $ANTLR 3.1.2 jal.g 2010-04-09 21:39:31
+
+import sys
+from antlr3 import *
+from antlr3.compat import set, frozenset
+
+
+# for convenience in actions
+HIDDEN = BaseRecognizer.HIDDEN
+
+# token types
+T__68=68
+T__69=69
+T__66=66
+T__67=67
+T__29=29
+T__64=64
+T__28=28
+T__65=65
+T__27=27
+T__62=62
+T__26=26
+T__63=63
+T__25=25
+T__24=24
+T__23=23
+LETTER=9
+T__22=22
+T__21=21
+T__20=20
+PRAGMA=8
+T__61=61
+EOF=-1
+T__60=60
+HexDigit=14
+T__55=55
+T__19=19
+T__56=56
+T__57=57
+T__58=58
+STRING_LITERAL=5
+T__51=51
+IN=6
+T__52=52
+T__53=53
+T__54=54
+IDENTIFIER=4
+T__59=59
+BIN_LITERAL=10
+HEX_LITERAL=11
+T__50=50
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__46=46
+T__80=80
+T__47=47
+T__81=81
+T__44=44
+T__45=45
+LINE_COMMENT=18
+T__48=48
+T__49=49
+CHARACTER_LITERAL=7
+OCTAL_LITERAL=12
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__71=71
+WS=17
+T__34=34
+T__72=72
+T__35=35
+T__36=36
+T__70=70
+T__37=37
+T__38=38
+T__39=39
+T__76=76
+T__75=75
+T__74=74
+T__73=73
+DECIMAL_LITERAL=13
+EscapeSequence=15
+OctalEscape=16
+T__79=79
+T__78=78
+T__77=77
+
+
+class jalLexer(Lexer):
+
+ grammarFileName = "jal.g"
+ antlr_version = version_str_to_tuple("3.1.2")
+ antlr_version_str = "3.1.2"
+
+ def __init__(self, input=None, state=None):
+ if state is None:
+ state = RecognizerSharedState()
+ Lexer.__init__(self, input, state)
+
+ self.dfa16 = self.DFA16(
+ self, 16,
+ eot = self.DFA16_eot,
+ eof = self.DFA16_eof,
+ min = self.DFA16_min,
+ max = self.DFA16_max,
+ accept = self.DFA16_accept,
+ special = self.DFA16_special,
+ transition = self.DFA16_transition
+ )
+
+
+
+
+
+
+ # $ANTLR start "T__19"
+ def mT__19(self, ):
+
+ try:
+ _type = T__19
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:7:7: ( 'return' )
+ # jal.g:7:9: 'return'
+ pass
+ self.match("return")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__19"
+
+
+
+ # $ANTLR start "T__20"
+ def mT__20(self, ):
+
+ try:
+ _type = T__20
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:8:7: ( 'assert' )
+ # jal.g:8:9: 'assert'
+ pass
+ self.match("assert")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__20"
+
+
+
+ # $ANTLR start "T__21"
+ def mT__21(self, ):
+
+ try:
+ _type = T__21
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:9:7: ( 'include' )
+ # jal.g:9:9: 'include'
+ pass
+ self.match("include")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__21"
+
+
+
+ # $ANTLR start "T__22"
+ def mT__22(self, ):
+
+ try:
+ _type = T__22
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:10:7: ( '_debug' )
+ # jal.g:10:9: '_debug'
+ pass
+ self.match("_debug")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__22"
+
+
+
+ # $ANTLR start "T__23"
+ def mT__23(self, ):
+
+ try:
+ _type = T__23
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:11:7: ( '_error' )
+ # jal.g:11:9: '_error'
+ pass
+ self.match("_error")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__23"
+
+
+
+ # $ANTLR start "T__24"
+ def mT__24(self, ):
+
+ try:
+ _type = T__24
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:12:7: ( '_warn' )
+ # jal.g:12:9: '_warn'
+ pass
+ self.match("_warn")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__24"
+
+
+
+ # $ANTLR start "T__25"
+ def mT__25(self, ):
+
+ try:
+ _type = T__25
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:13:7: ( '=' )
+ # jal.g:13:9: '='
+ pass
+ self.match(61)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__25"
+
+
+
+ # $ANTLR start "T__26"
+ def mT__26(self, ):
+
+ try:
+ _type = T__26
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:14:7: ( '{' )
+ # jal.g:14:9: '{'
+ pass
+ self.match(123)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__26"
+
+
+
+ # $ANTLR start "T__27"
+ def mT__27(self, ):
+
+ try:
+ _type = T__27
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:15:7: ( ',' )
+ # jal.g:15:9: ','
+ pass
+ self.match(44)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__27"
+
+
+
+ # $ANTLR start "T__28"
+ def mT__28(self, ):
+
+ try:
+ _type = T__28
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:16:7: ( '}' )
+ # jal.g:16:9: '}'
+ pass
+ self.match(125)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__28"
+
+
+
+ # $ANTLR start "T__29"
+ def mT__29(self, ):
+
+ try:
+ _type = T__29
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:17:7: ( 'for' )
+ # jal.g:17:9: 'for'
+ pass
+ self.match("for")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__29"
+
+
+
+ # $ANTLR start "T__30"
+ def mT__30(self, ):
+
+ try:
+ _type = T__30
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:18:7: ( 'using' )
+ # jal.g:18:9: 'using'
+ pass
+ self.match("using")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__30"
+
+
+
+ # $ANTLR start "T__31"
+ def mT__31(self, ):
+
+ try:
+ _type = T__31
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:19:7: ( 'loop' )
+ # jal.g:19:9: 'loop'
+ pass
+ self.match("loop")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__31"
+
+
+
+ # $ANTLR start "T__32"
+ def mT__32(self, ):
+
+ try:
+ _type = T__32
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:20:7: ( 'exit' )
+ # jal.g:20:9: 'exit'
+ pass
+ self.match("exit")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__32"
+
+
+
+ # $ANTLR start "T__33"
+ def mT__33(self, ):
+
+ try:
+ _type = T__33
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:21:7: ( 'end' )
+ # jal.g:21:9: 'end'
+ pass
+ self.match("end")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__33"
+
+
+
+ # $ANTLR start "T__34"
+ def mT__34(self, ):
+
+ try:
+ _type = T__34
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:22:7: ( 'forever' )
+ # jal.g:22:9: 'forever'
+ pass
+ self.match("forever")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__34"
+
+
+
+ # $ANTLR start "T__35"
+ def mT__35(self, ):
+
+ try:
+ _type = T__35
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:23:7: ( 'while' )
+ # jal.g:23:9: 'while'
+ pass
+ self.match("while")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__35"
+
+
+
+ # $ANTLR start "T__36"
+ def mT__36(self, ):
+
+ try:
+ _type = T__36
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:24:7: ( 'repeat' )
+ # jal.g:24:9: 'repeat'
+ pass
+ self.match("repeat")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__36"
+
+
+
+ # $ANTLR start "T__37"
+ def mT__37(self, ):
+
+ try:
+ _type = T__37
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:25:7: ( 'until' )
+ # jal.g:25:9: 'until'
+ pass
+ self.match("until")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__37"
+
+
+
+ # $ANTLR start "T__38"
+ def mT__38(self, ):
+
+ try:
+ _type = T__38
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:26:7: ( 'if' )
+ # jal.g:26:9: 'if'
+ pass
+ self.match("if")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__38"
+
+
+
+ # $ANTLR start "T__39"
+ def mT__39(self, ):
+
+ try:
+ _type = T__39
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:27:7: ( 'then' )
+ # jal.g:27:9: 'then'
+ pass
+ self.match("then")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__39"
+
+
+
+ # $ANTLR start "T__40"
+ def mT__40(self, ):
+
+ try:
+ _type = T__40
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:28:7: ( 'elsif' )
+ # jal.g:28:9: 'elsif'
+ pass
+ self.match("elsif")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__40"
+
+
+
+ # $ANTLR start "T__41"
+ def mT__41(self, ):
+
+ try:
+ _type = T__41
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:29:7: ( 'else' )
+ # jal.g:29:9: 'else'
+ pass
+ self.match("else")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__41"
+
+
+
+ # $ANTLR start "T__42"
+ def mT__42(self, ):
+
+ try:
+ _type = T__42
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:30:7: ( 'case' )
+ # jal.g:30:9: 'case'
+ pass
+ self.match("case")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__42"
+
+
+
+ # $ANTLR start "T__43"
+ def mT__43(self, ):
+
+ try:
+ _type = T__43
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:31:7: ( 'of' )
+ # jal.g:31:9: 'of'
+ pass
+ self.match("of")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__43"
+
+
+
+ # $ANTLR start "T__44"
+ def mT__44(self, ):
+
+ try:
+ _type = T__44
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:32:7: ( ':' )
+ # jal.g:32:9: ':'
+ pass
+ self.match(58)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__44"
+
+
+
+ # $ANTLR start "T__45"
+ def mT__45(self, ):
+
+ try:
+ _type = T__45
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:33:7: ( 'otherwise' )
+ # jal.g:33:9: 'otherwise'
+ pass
+ self.match("otherwise")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__45"
+
+
+
+ # $ANTLR start "T__46"
+ def mT__46(self, ):
+
+ try:
+ _type = T__46
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:34:7: ( 'block' )
+ # jal.g:34:9: 'block'
+ pass
+ self.match("block")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__46"
+
+
+
+ # $ANTLR start "T__47"
+ def mT__47(self, ):
+
+ try:
+ _type = T__47
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:35:7: ( 'procedure' )
+ # jal.g:35:9: 'procedure'
+ pass
+ self.match("procedure")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__47"
+
+
+
+ # $ANTLR start "T__48"
+ def mT__48(self, ):
+
+ try:
+ _type = T__48
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:36:7: ( '(' )
+ # jal.g:36:9: '('
+ pass
+ self.match(40)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__48"
+
+
+
+ # $ANTLR start "T__49"
+ def mT__49(self, ):
+
+ try:
+ _type = T__49
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:37:7: ( ')' )
+ # jal.g:37:9: ')'
+ pass
+ self.match(41)
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__49"
+
+
+
+ # $ANTLR start "T__50"
+ def mT__50(self, ):
+
+ try:
+ _type = T__50
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:38:7: ( 'is' )
+ # jal.g:38:9: 'is'
+ pass
+ self.match("is")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__50"
+
+
+
+ # $ANTLR start "T__51"
+ def mT__51(self, ):
+
+ try:
+ _type = T__51
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:39:7: ( 'function' )
+ # jal.g:39:9: 'function'
+ pass
+ self.match("function")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__51"
+
+
+
+ # $ANTLR start "T__52"
+ def mT__52(self, ):
+
+ try:
+ _type = T__52
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:40:7: ( 'volatile' )
+ # jal.g:40:9: 'volatile'
+ pass
+ self.match("volatile")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__52"
+
+
+
+ # $ANTLR start "T__53"
+ def mT__53(self, ):
+
+ try:
+ _type = T__53
+ _channel = DEFAULT_CHANNEL
+
+ # jal.g:41:7: ( 'out' )
+ # jal.g:41:9: 'out'
+ pass
+ self.match("out")
+
+
+
+ self._state.type = _type
+ self._state.channel = _channel
+
+ finally:
+
+ pass
+
+ # $ANTLR end "T__53"
+
+
+
+ # $ANTLR start "T__54"
+ def mT__54(self, ):
+
+ try:
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/grammar/jalParser.py Fri Apr 9 12:51:17 2010
@@ -0,0 +1,6204 @@
+# $ANTLR 3.1.2 jal.g 2010-04-09 21:39:30
+
+import sys
+from antlr3 import *
+from antlr3.compat import set, frozenset
+
+from antlr3.tree import *
+
+
+
+# for convenience in actions
+HIDDEN = BaseRecognizer.HIDDEN
+
+# token types
+T__68=68
+T__69=69
+T__66=66
+T__67=67
+T__64=64
+T__29=29
+T__65=65
+T__28=28
+T__62=62
+T__27=27
+T__63=63
+T__26=26
+T__25=25
+T__24=24
+LETTER=9
+T__23=23
+T__22=22
+T__21=21
+T__20=20
+PRAGMA=8
+T__61=61
+T__60=60
+EOF=-1
+HexDigit=14
+T__55=55
+T__19=19
+T__56=56
+T__57=57
+T__58=58
+STRING_LITERAL=5
+T__51=51
+IN=6
+T__52=52
+T__53=53
+T__54=54
+IDENTIFIER=4
+T__59=59
+BIN_LITERAL=10
+HEX_LITERAL=11
+T__50=50
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__80=80
+T__46=46
+T__81=81
+T__47=47
+T__44=44
+T__45=45
+LINE_COMMENT=18
+T__48=48
+T__49=49
+OCTAL_LITERAL=12
+CHARACTER_LITERAL=7
+T__30=30
+T__31=31
+T__32=32
+WS=17
+T__71=71
+T__33=33
+T__72=72
+T__34=34
+T__35=35
+T__70=70
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__76=76
+T__75=75
+T__74=74
+OctalEscape=16
+EscapeSequence=15
+DECIMAL_LITERAL=13
+T__73=73
+T__79=79
+T__78=78
+T__77=77
+
+# token names
+tokenNames = [
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>",
+ "IDENTIFIER", "STRING_LITERAL", "IN", "CHARACTER_LITERAL", "PRAGMA",
+ "LETTER", "BIN_LITERAL", "HEX_LITERAL", "OCTAL_LITERAL", "DECIMAL_LITERAL",
+ "HexDigit", "EscapeSequence", "OctalEscape", "WS", "LINE_COMMENT",
"'return'",
+ "'assert'", "'include'", "'_debug'", "'_error'", "'_warn'", "'='", "'{'",
+ "','", "'}'", "'for'", "'using'", "'loop'", "'exit'", "'end'", "'forever'",
+ "'while'", "'repeat'", "'until'", "'if'", "'then'", "'elsif'", "'else'",
+ "'case'", "'of'", "':'", "'otherwise'", "'block'", "'procedure'", "'('",
+ "')'", "'is'", "'function'", "'volatile'", "'out'", "'\\''", "'put'",
+ "'get'", "'alias'", "'const'", "'['", "']'", "'var'", "'*'", "'shared'",
+ "'at'", "'bit'", "'byte'", "'word'", "'dword'", "'sbyte'", "'sword'",
+ "'sdword'", "'|'", "'^'", "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'",
+ "'%'", "'~'"
+]
+
+
+
+
+class jalParser(Parser):
+ grammarFileName = "jal.g"
+ antlr_version = version_str_to_tuple("3.1.2")
+ antlr_version_str = "3.1.2"
+ tokenNames = tokenNames
+
+ def __init__(self, input, state=None):
+ if state is None:
+ state = RecognizerSharedState()
+
+ Parser.__init__(self, input, state)
+
+
+ self.dfa2 = self.DFA2(
+ self, 2,
+ eot = self.DFA2_eot,
+ eof = self.DFA2_eof,
+ min = self.DFA2_min,
+ max = self.DFA2_max,
+ accept = self.DFA2_accept,
+ special = self.DFA2_special,
+ transition = self.DFA2_transition
+ )
+
+ self.dfa57 = self.DFA57(
+ self, 57,
+ eot = self.DFA57_eot,
+ eof = self.DFA57_eof,
+ min = self.DFA57_min,
+ max = self.DFA57_max,
+ accept = self.DFA57_accept,
+ special = self.DFA57_special,
+ transition = self.DFA57_transition
+ )
+
+
+
+
+
+
+
+ self._adaptor = CommonTreeAdaptor()
+
+
+
+ def getTreeAdaptor(self):
+ return self._adaptor
+
+ def setTreeAdaptor(self, adaptor):
+ self._adaptor = adaptor
+
+ adaptor = property(getTreeAdaptor, setTreeAdaptor)
+
+
+ class program_return(ParserRuleReturnScope):
+ def __init__(self):
+ ParserRuleReturnScope.__init__(self)
+
+ self.tree = None
+
+
+
+
+ # $ANTLR start "program"
+ # jal.g:22:1: program : ( statement )+ ;
+ def program(self, ):
+
+ retval = self.program_return()
+ retval.start = self.input.LT(1)
+
+ root_0 = None
+
+ statement1 = None
+
+
+
+ try:
+ try:
+ # jal.g:22:9: ( ( statement )+ )
+ # jal.g:22:11: ( statement )+
+ pass
+ root_0 = self._adaptor.nil()
+
+ # jal.g:22:11: ( statement )+
+ cnt1 = 0
+ while True: #loop1
+ alt1 = 2
+ LA1_0 = self.input.LA(1)
+
+ if (LA1_0 == IDENTIFIER or (19 <= LA1_0 <= 24) or
LA1_0 == 29 or (34 <= LA1_0 <= 36) or LA1_0 == 38 or LA1_0 == 42 or (46 <=
LA1_0 <= 47) or LA1_0 == 51 or (57 <= LA1_0 <= 58) or LA1_0 == 61) :
+ alt1 = 1
+
+
+ if alt1 == 1:
+ # jal.g:22:13: statement
+ pass
+
self._state.following.append(self.FOLLOW_statement_in_program59)
+ statement1 = self.statement()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, statement1.tree)
+ if self._state.backtracking == 0:
+ print statement1.tree.toStringTree();
+
+
+
+ else:
+ if cnt1 >= 1:
+ break #loop1
+
+ if self._state.backtracking > 0:
+ raise BacktrackingFailed
+
+ eee = EarlyExitException(1, self.input)
+ raise eee
+
+ cnt1 += 1
+
+
+
+
+
+ retval.stop = self.input.LT(-1)
+
+ if self._state.backtracking == 0:
+
+ retval.tree = self._adaptor.rulePostProcessing(root_0)
+ self._adaptor.setTokenBoundaries(retval.tree,
retval.start, retval.stop)
+
+
+ except RecognitionException, re:
+ self.reportError(re)
+ self.recover(self.input, re)
+ retval.tree = self._adaptor.errorNode(self.input,
retval.start, self.input.LT(-1), re)
+ finally:
+
+ pass
+
+ return retval
+
+ # $ANTLR end "program"
+
+ class statement_return(ParserRuleReturnScope):
+ def __init__(self):
+ ParserRuleReturnScope.__init__(self)
+
+ self.tree = None
+
+
+
+
+ # $ANTLR start "statement"
+ # jal.g:24:1: statement : ( block_stmt | for_stmt | forever_stmt |
if_stmt | repeat_stmt | while_stmt | case_stmt | var_def | const_def |
alias_def | proc_def | pseudo_proc_def | func_def | pseudo_func_def
| 'return' expr | 'assert' expr | 'include' IDENTIFIER | '_debug'
STRING_LITERAL | '_error' STRING_LITERAL | '_warn' STRING_LITERAL |
IDENTIFIER '=' expr | proc_func_call );
+ def statement(self, ):
+
+ retval = self.statement_return()
+ retval.start = self.input.LT(1)
+
+ root_0 = None
+
+ string_literal16 = None
+ string_literal18 = None
+ string_literal20 = None
+ IDENTIFIER21 = None
+ string_literal22 = None
+ STRING_LITERAL23 = None
+ string_literal24 = None
+ STRING_LITERAL25 = None
+ string_literal26 = None
+ STRING_LITERAL27 = None
+ IDENTIFIER28 = None
+ char_literal29 = None
+ block_stmt2 = None
+
+ for_stmt3 = None
+
+ forever_stmt4 = None
+
+ if_stmt5 = None
+
+ repeat_stmt6 = None
+
+ while_stmt7 = None
+
+ case_stmt8 = None
+
+ var_def9 = None
+
+ const_def10 = None
+
+ alias_def11 = None
+
+ proc_def12 = None
+
+ pseudo_proc_def13 = None
+
+ func_def14 = None
+
+ pseudo_func_def15 = None
+
+ expr17 = None
+
+ expr19 = None
+
+ expr30 = None
+
+ proc_func_call31 = None
+
+
+ string_literal16_tree = None
+ string_literal18_tree = None
+ string_literal20_tree = None
+ IDENTIFIER21_tree = None
+ string_literal22_tree = None
+ STRING_LITERAL23_tree = None
+ string_literal24_tree = None
+ STRING_LITERAL25_tree = None
+ string_literal26_tree = None
+ STRING_LITERAL27_tree = None
+ IDENTIFIER28_tree = None
+ char_literal29_tree = None
+
+ try:
+ try:
+ # jal.g:24:11: ( block_stmt | for_stmt | forever_stmt |
if_stmt | repeat_stmt | while_stmt | case_stmt | var_def | const_def |
alias_def | proc_def | pseudo_proc_def | func_def | pseudo_func_def
| 'return' expr | 'assert' expr | 'include' IDENTIFIER | '_debug'
STRING_LITERAL | '_error' STRING_LITERAL | '_warn' STRING_LITERAL |
IDENTIFIER '=' expr | proc_func_call )
+ alt2 = 22
+ alt2 = self.dfa2.predict(self.input)
+ if alt2 == 1:
+ # jal.g:25:9: block_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_block_stmt_in_statement82)
+ block_stmt2 = self.block_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, block_stmt2.tree)
+
+
+ elif alt2 == 2:
+ # jal.g:25:22: for_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_for_stmt_in_statement86)
+ for_stmt3 = self.for_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, for_stmt3.tree)
+
+
+ elif alt2 == 3:
+ # jal.g:25:33: forever_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_forever_stmt_in_statement90)
+ forever_stmt4 = self.forever_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, forever_stmt4.tree)
+
+
+ elif alt2 == 4:
+ # jal.g:25:48: if_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_if_stmt_in_statement94)
+ if_stmt5 = self.if_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, if_stmt5.tree)
+
+
+ elif alt2 == 5:
+ # jal.g:26:11: repeat_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_repeat_stmt_in_statement107)
+ repeat_stmt6 = self.repeat_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, repeat_stmt6.tree)
+
+
+ elif alt2 == 6:
+ # jal.g:26:25: while_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_while_stmt_in_statement111)
+ while_stmt7 = self.while_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, while_stmt7.tree)
+
+
+ elif alt2 == 7:
+ # jal.g:26:38: case_stmt
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_case_stmt_in_statement115)
+ case_stmt8 = self.case_stmt()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, case_stmt8.tree)
+
+
+ elif alt2 == 8:
+ # jal.g:27:11: var_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_var_def_in_statement127)
+ var_def9 = self.var_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, var_def9.tree)
+
+
+ elif alt2 == 9:
+ # jal.g:27:21: const_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_const_def_in_statement131)
+ const_def10 = self.const_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, const_def10.tree)
+
+
+ elif alt2 == 10:
+ # jal.g:27:33: alias_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_alias_def_in_statement135)
+ alias_def11 = self.alias_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, alias_def11.tree)
+
+
+ elif alt2 == 11:
+ # jal.g:28:11: proc_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_proc_def_in_statement147)
+ proc_def12 = self.proc_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, proc_def12.tree)
+
+
+ elif alt2 == 12:
+ # jal.g:28:22: pseudo_proc_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_pseudo_proc_def_in_statement151)
+ pseudo_proc_def13 = self.pseudo_proc_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0,
pseudo_proc_def13.tree)
+
+
+ elif alt2 == 13:
+ # jal.g:29:11: func_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_func_def_in_statement163)
+ func_def14 = self.func_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, func_def14.tree)
+
+
+ elif alt2 == 14:
+ # jal.g:29:22: pseudo_func_def
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_pseudo_func_def_in_statement167)
+ pseudo_func_def15 = self.pseudo_func_def()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0,
pseudo_func_def15.tree)
+
+
+ elif alt2 == 15:
+ # jal.g:30:11: 'return' expr
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal16=self.match(self.input, 19,
self.FOLLOW_19_in_statement179)
+ if self._state.backtracking == 0:
+
+ string_literal16_tree =
self._adaptor.createWithPayload(string_literal16)
+ self._adaptor.addChild(root_0,
string_literal16_tree)
+
+
self._state.following.append(self.FOLLOW_expr_in_statement181)
+ expr17 = self.expr()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, expr17.tree)
+
+
+ elif alt2 == 16:
+ # jal.g:31:11: 'assert' expr
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal18=self.match(self.input, 20,
self.FOLLOW_20_in_statement193)
+ if self._state.backtracking == 0:
+
+ string_literal18_tree =
self._adaptor.createWithPayload(string_literal18)
+ self._adaptor.addChild(root_0,
string_literal18_tree)
+
+
self._state.following.append(self.FOLLOW_expr_in_statement195)
+ expr19 = self.expr()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, expr19.tree)
+
+
+ elif alt2 == 17:
+ # jal.g:32:11: 'include' IDENTIFIER
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal20=self.match(self.input, 21,
self.FOLLOW_21_in_statement207)
+ if self._state.backtracking == 0:
+
+ string_literal20_tree =
self._adaptor.createWithPayload(string_literal20)
+ self._adaptor.addChild(root_0,
string_literal20_tree)
+
+ IDENTIFIER21=self.match(self.input, IDENTIFIER,
self.FOLLOW_IDENTIFIER_in_statement209)
+ if self._state.backtracking == 0:
+
+ IDENTIFIER21_tree =
self._adaptor.createWithPayload(IDENTIFIER21)
+ self._adaptor.addChild(root_0, IDENTIFIER21_tree)
+
+
+
+ elif alt2 == 18:
+ # jal.g:33:11: '_debug' STRING_LITERAL
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal22=self.match(self.input, 22,
self.FOLLOW_22_in_statement221)
+ if self._state.backtracking == 0:
+
+ string_literal22_tree =
self._adaptor.createWithPayload(string_literal22)
+ self._adaptor.addChild(root_0,
string_literal22_tree)
+
+ STRING_LITERAL23=self.match(self.input,
STRING_LITERAL, self.FOLLOW_STRING_LITERAL_in_statement223)
+ if self._state.backtracking == 0:
+
+ STRING_LITERAL23_tree =
self._adaptor.createWithPayload(STRING_LITERAL23)
+ self._adaptor.addChild(root_0,
STRING_LITERAL23_tree)
+
+
+
+ elif alt2 == 19:
+ # jal.g:34:11: '_error' STRING_LITERAL
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal24=self.match(self.input, 23,
self.FOLLOW_23_in_statement235)
+ if self._state.backtracking == 0:
+
+ string_literal24_tree =
self._adaptor.createWithPayload(string_literal24)
+ self._adaptor.addChild(root_0,
string_literal24_tree)
+
+ STRING_LITERAL25=self.match(self.input,
STRING_LITERAL, self.FOLLOW_STRING_LITERAL_in_statement237)
+ if self._state.backtracking == 0:
+
+ STRING_LITERAL25_tree =
self._adaptor.createWithPayload(STRING_LITERAL25)
+ self._adaptor.addChild(root_0,
STRING_LITERAL25_tree)
+
+
+
+ elif alt2 == 20:
+ # jal.g:35:11: '_warn' STRING_LITERAL
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal26=self.match(self.input, 24,
self.FOLLOW_24_in_statement249)
+ if self._state.backtracking == 0:
+
+ string_literal26_tree =
self._adaptor.createWithPayload(string_literal26)
+ self._adaptor.addChild(root_0,
string_literal26_tree)
+
+ STRING_LITERAL27=self.match(self.input,
STRING_LITERAL, self.FOLLOW_STRING_LITERAL_in_statement251)
+ if self._state.backtracking == 0:
+
+ STRING_LITERAL27_tree =
self._adaptor.createWithPayload(STRING_LITERAL27)
+ self._adaptor.addChild(root_0,
STRING_LITERAL27_tree)
+
+
+
+ elif alt2 == 21:
+ # jal.g:36:4: IDENTIFIER '=' expr
+ pass
+ root_0 = self._adaptor.nil()
+
+ IDENTIFIER28=self.match(self.input, IDENTIFIER,
self.FOLLOW_IDENTIFIER_in_statement256)
+ if self._state.backtracking == 0:
+
+ IDENTIFIER28_tree =
self._adaptor.createWithPayload(IDENTIFIER28)
+ self._adaptor.addChild(root_0, IDENTIFIER28_tree)
+
+ char_literal29=self.match(self.input, 25,
self.FOLLOW_25_in_statement258)
+ if self._state.backtracking == 0:
+
+ char_literal29_tree =
self._adaptor.createWithPayload(char_literal29)
+ self._adaptor.addChild(root_0, char_literal29_tree)
+
+
self._state.following.append(self.FOLLOW_expr_in_statement260)
+ expr30 = self.expr()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, expr30.tree)
+
+
+ elif alt2 == 22:
+ # jal.g:37:4: proc_func_call
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_proc_func_call_in_statement265)
+ proc_func_call31 = self.proc_func_call()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0,
proc_func_call31.tree)
+
+
+ retval.stop = self.input.LT(-1)
+
+ if self._state.backtracking == 0:
+
+ retval.tree = self._adaptor.rulePostProcessing(root_0)
+ self._adaptor.setTokenBoundaries(retval.tree,
retval.start, retval.stop)
+
+
+ except RecognitionException, re:
+ self.reportError(re)
+ self.recover(self.input, re)
+ retval.tree = self._adaptor.errorNode(self.input,
retval.start, self.input.LT(-1), re)
+ finally:
+
+ pass
+
+ return retval
+
+ # $ANTLR end "statement"
+
+ class cexpr_return(ParserRuleReturnScope):
+ def __init__(self):
+ ParserRuleReturnScope.__init__(self)
+
+ self.tree = None
+
+
+
+
+ # $ANTLR start "cexpr"
+ # jal.g:41:1: cexpr : constant ;
+ def cexpr(self, ):
+
+ retval = self.cexpr_return()
+ retval.start = self.input.LT(1)
+
+ root_0 = None
+
+ constant32 = None
+
+
+
+ try:
+ try:
+ # jal.g:41:9: ( constant )
+ # jal.g:41:13: constant
+ pass
+ root_0 = self._adaptor.nil()
+
+
self._state.following.append(self.FOLLOW_constant_in_cexpr280)
+ constant32 = self.constant()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, constant32.tree)
+
+
+
+ retval.stop = self.input.LT(-1)
+
+ if self._state.backtracking == 0:
+
+ retval.tree = self._adaptor.rulePostProcessing(root_0)
+ self._adaptor.setTokenBoundaries(retval.tree,
retval.start, retval.stop)
+
+
+ except RecognitionException, re:
+ self.reportError(re)
+ self.recover(self.input, re)
+ retval.tree = self._adaptor.errorNode(self.input,
retval.start, self.input.LT(-1), re)
+ finally:
+
+ pass
+
+ return retval
+
+ # $ANTLR end "cexpr"
+
+ class cexpr_list_return(ParserRuleReturnScope):
+ def __init__(self):
+ ParserRuleReturnScope.__init__(self)
+
+ self.tree = None
+
+
+
+
+ # $ANTLR start "cexpr_list"
+ # jal.g:44:1: cexpr_list : '{' cexpr ( ',' cexpr )* '}' ;
+ def cexpr_list(self, ):
+
+ retval = self.cexpr_list_return()
+ retval.start = self.input.LT(1)
+
+ root_0 = None
+
+ char_literal33 = None
+ char_literal35 = None
+ char_literal37 = None
+ cexpr34 = None
+
+ cexpr36 = None
+
+
+ char_literal33_tree = None
+ char_literal35_tree = None
+ char_literal37_tree = None
+
+ try:
+ try:
+ # jal.g:44:12: ( '{' cexpr ( ',' cexpr )* '}' )
+ # jal.g:44:14: '{' cexpr ( ',' cexpr )* '}'
+ pass
+ root_0 = self._adaptor.nil()
+
+ char_literal33=self.match(self.input, 26,
self.FOLLOW_26_in_cexpr_list297)
+ if self._state.backtracking == 0:
+
+ char_literal33_tree =
self._adaptor.createWithPayload(char_literal33)
+ self._adaptor.addChild(root_0, char_literal33_tree)
+
+
self._state.following.append(self.FOLLOW_cexpr_in_cexpr_list299)
+ cexpr34 = self.cexpr()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, cexpr34.tree)
+ # jal.g:44:24: ( ',' cexpr )*
+ while True: #loop3
+ alt3 = 2
+ LA3_0 = self.input.LA(1)
+
+ if (LA3_0 == 27) :
+ alt3 = 1
+
+
+ if alt3 == 1:
+ # jal.g:44:26: ',' cexpr
+ pass
+ char_literal35=self.match(self.input, 27,
self.FOLLOW_27_in_cexpr_list303)
+ if self._state.backtracking == 0:
+
+ char_literal35_tree =
self._adaptor.createWithPayload(char_literal35)
+ self._adaptor.addChild(root_0,
char_literal35_tree)
+
+
self._state.following.append(self.FOLLOW_cexpr_in_cexpr_list305)
+ cexpr36 = self.cexpr()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, cexpr36.tree)
+
+
+ else:
+ break #loop3
+
+
+ char_literal37=self.match(self.input, 28,
self.FOLLOW_28_in_cexpr_list310)
+ if self._state.backtracking == 0:
+
+ char_literal37_tree =
self._adaptor.createWithPayload(char_literal37)
+ self._adaptor.addChild(root_0, char_literal37_tree)
+
+
+
+
+ retval.stop = self.input.LT(-1)
+
+ if self._state.backtracking == 0:
+
+ retval.tree = self._adaptor.rulePostProcessing(root_0)
+ self._adaptor.setTokenBoundaries(retval.tree,
retval.start, retval.stop)
+
+
+ except RecognitionException, re:
+ self.reportError(re)
+ self.recover(self.input, re)
+ retval.tree = self._adaptor.errorNode(self.input,
retval.start, self.input.LT(-1), re)
+ finally:
+
+ pass
+
+ return retval
+
+ # $ANTLR end "cexpr_list"
+
+ class for_stmt_return(ParserRuleReturnScope):
+ def __init__(self):
+ ParserRuleReturnScope.__init__(self)
+
+ self.tree = None
+
+
+
+
+ # $ANTLR start "for_stmt"
+ # jal.g:47:1: for_stmt : 'for' expr ( 'using' IDENTIFIER )* 'loop' (
statement )+ ( 'exit' 'loop' )* 'end' 'loop' ;
+ def for_stmt(self, ):
+
+ retval = self.for_stmt_return()
+ retval.start = self.input.LT(1)
+
+ root_0 = None
+
+ string_literal38 = None
+ string_literal40 = None
+ IDENTIFIER41 = None
+ string_literal42 = None
+ string_literal44 = None
+ string_literal45 = None
+ string_literal46 = None
+ string_literal47 = None
+ expr39 = None
+
+ statement43 = None
+
+
+ string_literal38_tree = None
+ string_literal40_tree = None
+ IDENTIFIER41_tree = None
+ string_literal42_tree = None
+ string_literal44_tree = None
+ string_literal45_tree = None
+ string_literal46_tree = None
+ string_literal47_tree = None
+
+ try:
+ try:
+ # jal.g:47:10: ( 'for' expr ( 'using' IDENTIFIER )* 'loop'
( statement )+ ( 'exit' 'loop' )* 'end' 'loop' )
+ # jal.g:47:12: 'for' expr ( 'using' IDENTIFIER )* 'loop' (
statement )+ ( 'exit' 'loop' )* 'end' 'loop'
+ pass
+ root_0 = self._adaptor.nil()
+
+ string_literal38=self.match(self.input, 29,
self.FOLLOW_29_in_for_stmt321)
+ if self._state.backtracking == 0:
+
+ string_literal38_tree =
self._adaptor.createWithPayload(string_literal38)
+ self._adaptor.addChild(root_0, string_literal38_tree)
+
+
self._state.following.append(self.FOLLOW_expr_in_for_stmt323)
+ expr39 = self.expr()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0, expr39.tree)
+ # jal.g:47:23: ( 'using' IDENTIFIER )*
+ while True: #loop4
+ alt4 = 2
+ LA4_0 = self.input.LA(1)
+
+ if (LA4_0 == 30) :
+ alt4 = 1
+
+
+ if alt4 == 1:
+ # jal.g:47:25: 'using' IDENTIFIER
+ pass
+ string_literal40=self.match(self.input, 30,
self.FOLLOW_30_in_for_stmt327)
+ if self._state.backtracking == 0:
+
+ string_literal40_tree =
self._adaptor.createWithPayload(string_literal40)
+ self._adaptor.addChild(root_0,
string_literal40_tree)
+
+ IDENTIFIER41=self.match(self.input, IDENTIFIER,
self.FOLLOW_IDENTIFIER_in_for_stmt329)
+ if self._state.backtracking == 0:
+
+ IDENTIFIER41_tree =
self._adaptor.createWithPayload(IDENTIFIER41)
+ self._adaptor.addChild(root_0,
IDENTIFIER41_tree)
+
+
+
+ else:
+ break #loop4
+
+
+ string_literal42=self.match(self.input, 31,
self.FOLLOW_31_in_for_stmt334)
+ if self._state.backtracking == 0:
+
+ string_literal42_tree =
self._adaptor.createWithPayload(string_literal42)
+ self._adaptor.addChild(root_0, string_literal42_tree)
+
+ # jal.g:48:17: ( statement )+
+ cnt5 = 0
+ while True: #loop5
+ alt5 = 2
+ LA5_0 = self.input.LA(1)
+
+ if (LA5_0 == IDENTIFIER or (19 <= LA5_0 <= 24) or
LA5_0 == 29 or (34 <= LA5_0 <= 36) or LA5_0 == 38 or LA5_0 == 42 or (46 <=
LA5_0 <= 47) or LA5_0 == 51 or (57 <= LA5_0 <= 58) or LA5_0 == 61) :
+ alt5 = 1
+
+
+ if alt5 == 1:
+ # jal.g:0:0: statement
+ pass
+
self._state.following.append(self.FOLLOW_statement_in_for_stmt353)
+ statement43 = self.statement()
+
+ self._state.following.pop()
+ if self._state.backtracking == 0:
+ self._adaptor.addChild(root_0,
statement43.tree)
+
+
+ else:
+ if cnt5 >= 1:
+ break #loop5
+
+ if self._state.backtracking > 0:
+ raise BacktrackingFailed
+
+ eee = EarlyExitException(5, self.input)
+ raise eee
+
+ cnt5 += 1
+
+
+ # jal.g:49:17: ( 'exit' 'loop' )*
+ while True: #loop6
+ alt6 = 2
+ LA6_0 = self.input.LA(1)
+
+ if (LA6_0 == 32) :
+ alt6 = 1
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/grammar/jal.g Fri Apr 9 08:26:10 2010
+++ /trunk/grammar/jal.g Fri Apr 9 12:51:17 2010
@@ -16,6 +16,7 @@
language=Python;
output=AST;
ASTLabelType=CommonTree;
+ backtrack = true;
}
program : ( statement {print $statement.tree.toStringTree();} )+ ;
@@ -33,13 +34,14 @@
| '_error' STRING_LITERAL
| '_warn' STRING_LITERAL
| IDENTIFIER '=' expr
+ | proc_func_call
;
// FIXME
cexpr : constant
;
-cexpr_list : '{' cexpr ( ',' cexpr ) '}'
+cexpr_list : '{' cexpr ( ',' cexpr )* '}'
;
for_stmt : 'for' expr ( 'using' IDENTIFIER )* 'loop'
@@ -87,20 +89,20 @@
;
func_def : 'function' IDENTIFIER '(' proc_parm (',' proc_parm)* ')' 'is'
- statement+
+ statement*
'end' 'function'
;
-proc_parm : 'volatile'* type ( IN | 'out' | IN 'out' ) IDENTIFIER
+proc_parm : 'volatile'* type ( IN | 'out' | IN 'out' ) IDENTIFIER at_decl?
;
-pseudo_proc_def : 'procedure' IDENTIFIER '\'' 'put' '(' type IN
IDENTIFIER ')' 'is'
- statement+
+pseudo_proc_def : 'procedure' IDENTIFIER '\'' 'put' '(' proc_parm? (','
proc_parm)* ')' 'is'
+ statement*
'end' 'procedure'
;
-pseudo_func_def : 'function' IDENTIFIER '\'' 'get' 'return' type 'is'
- statement+
+pseudo_func_def : 'function' IDENTIFIER '\'' 'get' '(' proc_parm? (','
proc_parm)* ')' 'return' type 'is'
+ statement*
'end' 'function'
;
@@ -141,7 +143,8 @@
;
//FIXME: this is wrong-- add proc/func calls to the expr handler instead
-proc_func_call : IDENTIFIER '(' IDENTIFIER* ')'
+//proc_func_call : IDENTIFIER ('(' IDENTIFIER* ')') ? // jal permits
procedure call without parenthesis, but this can't be distinquished from
the start of an assignment...
+proc_func_call : IDENTIFIER ('(' IDENTIFIER* ')')?
;
var_init : proc_func_call | cexpr | cexpr_list | STRING_LITERAL |
CHARACTER_LITERAL | IDENTIFIER
@@ -173,13 +176,17 @@
//comp_op : '<' | '>' | '==' | '>=' | '<=' | '!='
// ;
//
-expr : xor_expr ('|' xor_expr)*
+
+
+expr : xor_expr ('|' xor_expr)*
;
xor_expr : and_expr ('^' and_expr)*
+ | '(' xor_expr ')'
;
-and_expr : shift_expr ('&' shift_expr)*
+and_expr : shift_expr ('&' shift_expr)*
+ | '(' and_expr ')'
;
shift_expr : arith_expr (('<<'|'>>') arith_expr)*
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/jallib?hl=en.