Fix empty expression tags, and add directory support
This commit is contained in:
parent
a274797e58
commit
02cb984fec
|
@ -1,6 +1,13 @@
|
||||||
from engine import Engine
|
from engine import Engine
|
||||||
import sys
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
Engine(sys.argv[1]).compileClass()
|
p = Path(sys.argv[1])
|
||||||
|
if p.is_dir():
|
||||||
|
for f in p.glob("*.jack"):
|
||||||
|
print("compiling %s" % f)
|
||||||
|
Engine(f.as_posix()).compileClass()
|
||||||
|
elif p.is_file():
|
||||||
|
Engine(p.as_posix()).compileClass()
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,8 @@ class Engine:
|
||||||
def ZeroOrMany(self, grammarList, matchOnly):
|
def ZeroOrMany(self, grammarList, matchOnly):
|
||||||
# print("ZOM called")
|
# print("ZOM called")
|
||||||
ret = self.compile(grammarList[0], matchOnly)
|
ret = self.compile(grammarList[0], matchOnly)
|
||||||
if ret and matchOnly:
|
if matchOnly:
|
||||||
return True
|
return ret
|
||||||
elif ret:
|
elif ret:
|
||||||
# We now expect the whole of it
|
# We now expect the whole of it
|
||||||
for e in grammarList:
|
for e in grammarList:
|
||||||
|
@ -39,7 +39,7 @@ class Engine:
|
||||||
self.ZeroOrMany(grammarList, False)
|
self.ZeroOrMany(grammarList, False)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return None
|
return False
|
||||||
|
|
||||||
def write(self, line, end = "\n"):
|
def write(self, line, end = "\n"):
|
||||||
self.file.write(self.i*" " + line + end)
|
self.file.write(self.i*" " + line + end)
|
||||||
|
@ -54,6 +54,7 @@ class Engine:
|
||||||
|
|
||||||
# We don't have to move the cursor for LL0 grammar
|
# We don't have to move the cursor for LL0 grammar
|
||||||
if matchOnly:
|
if matchOnly:
|
||||||
|
assert(lookahead == 1)
|
||||||
return lookup_keys in dictionary
|
return lookup_keys in dictionary
|
||||||
|
|
||||||
for _ in range(lookahead-1):
|
for _ in range(lookahead-1):
|
||||||
|
@ -85,7 +86,10 @@ class Engine:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def ZeroOrOne(self, grammarTuple, matchOnly):
|
def ZeroOrOne(self, grammarTuple, matchOnly):
|
||||||
if self.compile(grammarTuple[0], True):
|
ret = self.compile(grammarTuple[0], True)
|
||||||
|
if matchOnly:
|
||||||
|
return ret
|
||||||
|
elif ret:
|
||||||
for e in grammarTuple:
|
for e in grammarTuple:
|
||||||
self.compile(e)
|
self.compile(e)
|
||||||
return True
|
return True
|
||||||
|
@ -98,8 +102,8 @@ class Engine:
|
||||||
current = self.atom()
|
current = self.atom()
|
||||||
# We use in here to accomodate for bitmasks
|
# We use in here to accomodate for bitmasks
|
||||||
match = current in expected
|
match = current in expected
|
||||||
if match and matchOnly:
|
if matchOnly:
|
||||||
return True
|
return match
|
||||||
elif match:
|
elif match:
|
||||||
self.write(self.jt.xml_row(), end="")
|
self.write(self.jt.xml_row(), end="")
|
||||||
self.advance()
|
self.advance()
|
||||||
|
@ -118,20 +122,17 @@ class Engine:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
If you set matchOnly = true, the cursor will not move forward
|
If you set matchOnly = true, the cursor will not move forward
|
||||||
if it is forced to move forward, it will instead RAISE AN ERROR
|
If it is forced to move forward (LL1 grammar for eg,) it will raise an error instead
|
||||||
"""
|
"""
|
||||||
def compile(self, thing, matchOnly = False):
|
def compile(self, thing, matchOnly = False):
|
||||||
# TODO: OPEN TAGS
|
|
||||||
if isinstance(thing, Element):
|
if isinstance(thing, Element):
|
||||||
ret = False
|
ret = self.compile(thing.grammar[0], True)
|
||||||
if self.compile(thing.grammar[0], True):
|
if (matchOnly == False and ret) or thing.empty:
|
||||||
self.open(thing)
|
self.open(thing)
|
||||||
for e in thing.grammar:
|
for e in thing.grammar:
|
||||||
ret = self.compile(e)
|
ret = self.compile(e)
|
||||||
self.close(thing)
|
self.close(thing)
|
||||||
return ret
|
return ret
|
||||||
else:
|
|
||||||
return ret
|
|
||||||
elif callable(thing):
|
elif callable(thing):
|
||||||
grammar = thing()
|
grammar = thing()
|
||||||
return self.compile(grammar, matchOnly)
|
return self.compile(grammar, matchOnly)
|
||||||
|
|
|
@ -26,6 +26,7 @@ class Element:
|
||||||
assert(type(grammar)==list)
|
assert(type(grammar)==list)
|
||||||
self.name = name
|
self.name = name
|
||||||
self.grammar = grammar
|
self.grammar = grammar
|
||||||
|
self.empty = False
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -51,8 +52,14 @@ CONSTANT = Atom.TRUE | Atom.FALSE|Atom.NULL|Atom.THIS
|
||||||
""" Pseudo-element to help define subroutine declarations """
|
""" Pseudo-element to help define subroutine declarations """
|
||||||
RETURN_TYPES= Atom.INT | Atom.CHAR|Atom.BOOLEAN|Atom.IDENTIFIER|Atom.VOID
|
RETURN_TYPES= Atom.INT | Atom.CHAR|Atom.BOOLEAN|Atom.IDENTIFIER|Atom.VOID
|
||||||
|
|
||||||
# TODO: This is missing a lot of stuff
|
# TODO: This is missing the following:
|
||||||
TERM = Element('term', [Atom.INTEGERCONSTANT | Atom.STRINGCONSTANT | Atom.TRUE | Atom.FALSE | Atom.IDENTIFIER])
|
# var [expression]
|
||||||
|
# subRoutineCall
|
||||||
|
# (expressions in parenthes)
|
||||||
|
# unaryOP TERM
|
||||||
|
TERM = Element('term', [
|
||||||
|
Atom.INTEGERCONSTANT | Atom.STRINGCONSTANT | Atom.TRUE | Atom.FALSE | Atom.NULL| Atom.THIS | Atom.IDENTIFIER
|
||||||
|
])
|
||||||
|
|
||||||
EXPRESSION = Element('expression', [TERM, [OP, TERM]])
|
EXPRESSION = Element('expression', [TERM, [OP, TERM]])
|
||||||
|
|
||||||
|
@ -132,6 +139,8 @@ PARAMETER_LIST = Element('parameterList', [(
|
||||||
[Atom.COMMA, Atom.INT | Atom.CHAR|Atom.BOOLEAN|Atom.IDENTIFIER, Atom.IDENTIFIER]
|
[Atom.COMMA, Atom.INT | Atom.CHAR|Atom.BOOLEAN|Atom.IDENTIFIER, Atom.IDENTIFIER]
|
||||||
)])
|
)])
|
||||||
|
|
||||||
|
EXPRESSIONLIST.empty = PARAMETER_LIST.empty = True
|
||||||
|
|
||||||
SUBROUTINEDEC = Element('subroutineDec', [
|
SUBROUTINEDEC = Element('subroutineDec', [
|
||||||
# (constructor | function | method) (void | type) subRoutineName '(' parameterList ')'
|
# (constructor | function | method) (void | type) subRoutineName '(' parameterList ')'
|
||||||
# subroutineBody
|
# subroutineBody
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
<keyword> void </keyword>
|
<keyword> void </keyword>
|
||||||
<identifier> main </identifier>
|
<identifier> main </identifier>
|
||||||
<symbol> ( </symbol>
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
<symbol> ) </symbol>
|
<symbol> ) </symbol>
|
||||||
<subroutineBody>
|
<subroutineBody>
|
||||||
<symbol> { </symbol>
|
<symbol> { </symbol>
|
||||||
|
@ -27,10 +29,10 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> game </identifier>
|
<identifier> game </identifier>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> game </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> game </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</letStatement>
|
</letStatement>
|
||||||
|
@ -40,6 +42,8 @@
|
||||||
<symbol> . </symbol>
|
<symbol> . </symbol>
|
||||||
<identifier> run </identifier>
|
<identifier> run </identifier>
|
||||||
<symbol> ( </symbol>
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
<symbol> ) </symbol>
|
<symbol> ) </symbol>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</doStatement>
|
</doStatement>
|
||||||
|
@ -49,6 +53,8 @@
|
||||||
<symbol> . </symbol>
|
<symbol> . </symbol>
|
||||||
<identifier> dispose </identifier>
|
<identifier> dispose </identifier>
|
||||||
<symbol> ( </symbol>
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
<symbol> ) </symbol>
|
<symbol> ) </symbol>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</doStatement>
|
</doStatement>
|
||||||
|
@ -65,6 +71,8 @@
|
||||||
<keyword> void </keyword>
|
<keyword> void </keyword>
|
||||||
<identifier> test </identifier>
|
<identifier> test </identifier>
|
||||||
<symbol> ( </symbol>
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
<symbol> ) </symbol>
|
<symbol> ) </symbol>
|
||||||
<subroutineBody>
|
<subroutineBody>
|
||||||
<symbol> { </symbol>
|
<symbol> { </symbol>
|
||||||
|
@ -92,10 +100,10 @@
|
||||||
<ifStatement>
|
<ifStatement>
|
||||||
<keyword> if </keyword>
|
<keyword> if </keyword>
|
||||||
<symbol> ( </symbol>
|
<symbol> ( </symbol>
|
||||||
<term>
|
|
||||||
<identifier> i </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> i </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ) </symbol>
|
<symbol> ) </symbol>
|
||||||
<symbol> { </symbol>
|
<symbol> { </symbol>
|
||||||
|
@ -104,10 +112,10 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> s </identifier>
|
<identifier> s </identifier>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> i </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> i </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</letStatement>
|
</letStatement>
|
||||||
|
@ -115,10 +123,10 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> s </identifier>
|
<identifier> s </identifier>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> j </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> j </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</letStatement>
|
</letStatement>
|
||||||
|
@ -126,17 +134,17 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> a </identifier>
|
<identifier> a </identifier>
|
||||||
<symbol> [ </symbol>
|
<symbol> [ </symbol>
|
||||||
<term>
|
|
||||||
<identifier> i </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> i </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ] </symbol>
|
<symbol> ] </symbol>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> j </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> j </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</letStatement>
|
</letStatement>
|
||||||
|
@ -149,10 +157,10 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> i </identifier>
|
<identifier> i </identifier>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> i </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> i </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</letStatement>
|
</letStatement>
|
||||||
|
@ -160,10 +168,10 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> j </identifier>
|
<identifier> j </identifier>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> j </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> j </identifier>
|
||||||
|
</term>
|
||||||
</expression>
|
</expression>
|
||||||
<symbol> ; </symbol>
|
<symbol> ; </symbol>
|
||||||
</letStatement>
|
</letStatement>
|
||||||
|
@ -171,10 +179,10 @@
|
||||||
<keyword> let </keyword>
|
<keyword> let </keyword>
|
||||||
<identifier> i </identifier>
|
<identifier> i </identifier>
|
||||||
<symbol> = </symbol>
|
<symbol> = </symbol>
|
||||||
<term>
|
|
||||||
<identifier> i </identifier>
|
|
||||||
</term>
|
|
||||||
<expression>
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> i </identifier>
|
||||||
|
</term>
|
||||||
<symbol> | </symbol>
|
<symbol> | </symbol>
|
||||||
<term>
|
<term>
|
||||||
<identifier> j </identifier>
|
<identifier> j </identifier>
|
||||||
|
|
|
@ -0,0 +1,967 @@
|
||||||
|
<class>
|
||||||
|
<keyword> class </keyword>
|
||||||
|
<identifier> Square </identifier>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<classVarDec>
|
||||||
|
<keyword> field </keyword>
|
||||||
|
<keyword> int </keyword>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</classVarDec>
|
||||||
|
<classVarDec>
|
||||||
|
<keyword> field </keyword>
|
||||||
|
<keyword> int </keyword>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</classVarDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> constructor </keyword>
|
||||||
|
<identifier> Square </identifier>
|
||||||
|
<identifier> new </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
<keyword> int </keyword>
|
||||||
|
<identifier> Ax </identifier>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<keyword> int </keyword>
|
||||||
|
<identifier> Ay </identifier>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<keyword> int </keyword>
|
||||||
|
<identifier> Asize </identifier>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> Ax </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> Ay </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> Asize </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> draw </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> dispose </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Memory </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> deAlloc </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<keyword> this </keyword>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> draw </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> erase </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> incSize </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> erase </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> draw </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> decSize </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> erase </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> size </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> draw </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> moveUp </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> moveDown </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> moveLeft </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> moveRight </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> setColor </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Screen </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> drawRectangle </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> x </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> , </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> y </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</class>
|
|
@ -0,0 +1,544 @@
|
||||||
|
<class>
|
||||||
|
<keyword> class </keyword>
|
||||||
|
<identifier> SquareGame </identifier>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<classVarDec>
|
||||||
|
<keyword> field </keyword>
|
||||||
|
<identifier> Square </identifier>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</classVarDec>
|
||||||
|
<classVarDec>
|
||||||
|
<keyword> field </keyword>
|
||||||
|
<keyword> int </keyword>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</classVarDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> constructor </keyword>
|
||||||
|
<identifier> SquareGame </identifier>
|
||||||
|
<identifier> new </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> dispose </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> dispose </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Memory </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> deAlloc </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> moveSquare </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> moveUp </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> moveDown </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> moveLeft </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> moveRight </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> Sys </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> wait </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<subroutineDec>
|
||||||
|
<keyword> method </keyword>
|
||||||
|
<keyword> void </keyword>
|
||||||
|
<identifier> run </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<parameterList>
|
||||||
|
</parameterList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<subroutineBody>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<varDec>
|
||||||
|
<keyword> var </keyword>
|
||||||
|
<keyword> char </keyword>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</varDec>
|
||||||
|
<varDec>
|
||||||
|
<keyword> var </keyword>
|
||||||
|
<keyword> boolean </keyword>
|
||||||
|
<identifier> exit </identifier>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</varDec>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> exit </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<whileStatement>
|
||||||
|
<keyword> while </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> exit </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<whileStatement>
|
||||||
|
<keyword> while </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> moveSquare </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</whileStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> exit </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> exit </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> decSize </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
<symbol> . </symbol>
|
||||||
|
<identifier> incSize </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> exit </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> square </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<ifStatement>
|
||||||
|
<keyword> if </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> direction </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</ifStatement>
|
||||||
|
<whileStatement>
|
||||||
|
<keyword> while </keyword>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> { </symbol>
|
||||||
|
<statements>
|
||||||
|
<letStatement>
|
||||||
|
<keyword> let </keyword>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
<symbol> = </symbol>
|
||||||
|
<expression>
|
||||||
|
<term>
|
||||||
|
<identifier> key </identifier>
|
||||||
|
</term>
|
||||||
|
</expression>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</letStatement>
|
||||||
|
<doStatement>
|
||||||
|
<keyword> do </keyword>
|
||||||
|
<identifier> moveSquare </identifier>
|
||||||
|
<symbol> ( </symbol>
|
||||||
|
<expressionList>
|
||||||
|
</expressionList>
|
||||||
|
<symbol> ) </symbol>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</doStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</whileStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</whileStatement>
|
||||||
|
<returnStatement>
|
||||||
|
<keyword> return </keyword>
|
||||||
|
<symbol> ; </symbol>
|
||||||
|
</returnStatement>
|
||||||
|
</statements>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</subroutineBody>
|
||||||
|
</subroutineDec>
|
||||||
|
<symbol> } </symbol>
|
||||||
|
</class>
|
Loading…
Reference in New Issue