mirror of https://github.com/captn3m0/nand2tetris
[10] Tokenizer works on all files correctly
parent
c54e5ccaa4
commit
19f0d670ac
|
@ -135,9 +135,8 @@ Final hack instruction set count in brackets as before.
|
|||
|
||||
### Tokenizer
|
||||
|
||||
- [ ] Square
|
||||
- [ ] ExpressionLessSquare
|
||||
- [ ] TestArray
|
||||
- [x] Square
|
||||
- [x] TestArray
|
||||
|
||||
### Parser (Compilation Engine)
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ class Token(Enum):
|
|||
SYMBOL = 2
|
||||
IDENTIFIER = 3
|
||||
INTEGERCONSTANT = 4
|
||||
STRING_CONST = 5
|
||||
STRINGCONSTANT = 5
|
||||
UNKNOWN = 6
|
||||
|
||||
class Keyword(Enum):
|
||||
|
@ -50,13 +50,16 @@ class JackTokenizer:
|
|||
elif re.compile("\d+").match(t):
|
||||
return Token.INTEGERCONSTANT
|
||||
elif re.compile("\".*\"").match(t):
|
||||
return Token.STRING_CONST
|
||||
return Token.STRINGCONSTANT
|
||||
else:
|
||||
return Token.IDENTIFIER
|
||||
pass
|
||||
|
||||
def printable_token(self):
|
||||
return escape(self.current_token(), True)
|
||||
if self.tokenType() == Token.STRINGCONSTANT:
|
||||
return self.current_token()[1:-1]
|
||||
else:
|
||||
return escape(self.current_token(), True)
|
||||
|
||||
""" Returns the character which is the current token """
|
||||
def symbol(self):
|
||||
|
@ -113,9 +116,12 @@ class JackTokenizer:
|
|||
if len(line) == 0:
|
||||
return []
|
||||
else:
|
||||
regex = re.compile("(class|constructor|function|method|field|static|var|int|char|boolean|void|true|false|null|this|let|do|if|else|while|return)|(\(|\)|\[|\]|,|\+|-|;|<|>|=|~|&|{|}|\*|\/|\||\.)|\s+")
|
||||
tokens = regex.split(line)
|
||||
return [e.strip() for e in tokens if e != None and e.strip()!='']
|
||||
# Regex contains 3 parts:
|
||||
# 1. Keywords
|
||||
# 2. Symbols
|
||||
# 3. Identifiers
|
||||
regex = re.compile("(class|constructor|function|method|field|static|var|int|char|boolean|void|true|false|null|this|let|do|if|else|while|return|\(|\)|\[|\]|,|\+|-|;|<|>|=|~|&|{|}|\*|\/|\||\.|[a-zA-Z_]+\w*|\".*\")")
|
||||
return [e.strip() for e in regex.split(line) if e != None and e.strip()!='']
|
||||
|
||||
def has_more_tokens(self):
|
||||
return self.ptr < len(self.tokens)
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
<tokens>
|
||||
<keyword> class </keyword>
|
||||
<identifier> Main </identifier>
|
||||
<symbol> { </symbol>
|
||||
<keyword> function </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> main </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> var </keyword>
|
||||
<identifier> Array </identifier>
|
||||
<identifier> a </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> var </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> length </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> var </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> , </symbol>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> length </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> readInt </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<stringconstant> HOW MANY NUMBERS? </stringconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> a </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> Array </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> length </identifier>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> < </symbol>
|
||||
<identifier> length </identifier>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> ] </symbol>
|
||||
<symbol> = </symbol>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> readInt </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<stringconstant> ENTER THE NEXT NUMBER: </stringconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> + </symbol>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> < </symbol>
|
||||
<identifier> length </identifier>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> + </symbol>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> ] </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> + </symbol>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Output </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> printString </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<stringconstant> THE AVERAGE IS: </stringconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Output </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> printInt </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> / </symbol>
|
||||
<identifier> length </identifier>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Output </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> println </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<symbol> } </symbol>
|
||||
</tokens>
|
|
@ -0,0 +1,126 @@
|
|||
<tokens>
|
||||
<keyword> class </keyword>
|
||||
<identifier> Main </identifier>
|
||||
<symbol> { </symbol>
|
||||
<keyword> static </keyword>
|
||||
<keyword> boolean </keyword>
|
||||
<identifier> test </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> function </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> main </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> var </keyword>
|
||||
<identifier> SquareGame </identifier>
|
||||
<identifier> game </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> game </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> SquareGame </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> game </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> run </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> game </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> dispose </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> function </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> test </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> var </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> , </symbol>
|
||||
<identifier> j </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> var </keyword>
|
||||
<identifier> String </identifier>
|
||||
<identifier> s </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> var </keyword>
|
||||
<identifier> Array </identifier>
|
||||
<identifier> a </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<keyword> false </keyword>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> s </identifier>
|
||||
<symbol> = </symbol>
|
||||
<stringconstant> string constant </stringconstant>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> s </identifier>
|
||||
<symbol> = </symbol>
|
||||
<keyword> null </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
<symbol> ] </symbol>
|
||||
<symbol> = </symbol>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
<symbol> ] </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> else </keyword>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> * </symbol>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> - </symbol>
|
||||
<identifier> j </identifier>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> j </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> j </identifier>
|
||||
<symbol> / </symbol>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> - </symbol>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> i </identifier>
|
||||
<symbol> | </symbol>
|
||||
<identifier> j </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<symbol> } </symbol>
|
||||
</tokens>
|
|
@ -0,0 +1,315 @@
|
|||
<tokens>
|
||||
<keyword> class </keyword>
|
||||
<identifier> SquareGame </identifier>
|
||||
<symbol> { </symbol>
|
||||
<keyword> field </keyword>
|
||||
<identifier> Square </identifier>
|
||||
<identifier> square </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> field </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> constructor </keyword>
|
||||
<identifier> SquareGame </identifier>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> Square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> , </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> , </symbol>
|
||||
<integerconstant> 30 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> return </keyword>
|
||||
<keyword> this </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> method </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> dispose </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> dispose </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Memory </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> deAlloc </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<keyword> this </keyword>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> method </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> moveSquare </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> moveUp </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> moveDown </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 3 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> moveLeft </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 4 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> moveRight </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Sys </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> wait </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<integerconstant> 5 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> method </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> run </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> var </keyword>
|
||||
<keyword> char </keyword>
|
||||
<identifier> key </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> var </keyword>
|
||||
<keyword> boolean </keyword>
|
||||
<identifier> exit </identifier>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> exit </identifier>
|
||||
<symbol> = </symbol>
|
||||
<keyword> false </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ~ </symbol>
|
||||
<identifier> exit </identifier>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> keyPressed </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> moveSquare </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 81 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> exit </identifier>
|
||||
<symbol> = </symbol>
|
||||
<keyword> true </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 90 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> decSize </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 88 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> square </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> incSize </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 131 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 133 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 130 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 3 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 132 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 4 </integerconstant>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ~ </symbol>
|
||||
<symbol> ( </symbol>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<keyword> let </keyword>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> keyPressed </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<keyword> do </keyword>
|
||||
<identifier> moveSquare </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<symbol> } </symbol>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
<symbol> } </symbol>
|
||||
<symbol> } </symbol>
|
||||
</tokens>
|
Loading…
Reference in New Issue