mirror of https://github.com/captn3m0/nand2tetris
[10] Finishes compiler implementation
parent
812c76e09a
commit
b0aa03980c
@ -0,0 +1,286 @@
|
||||
<class>
|
||||
<keyword> class </keyword>
|
||||
<identifier> Main </identifier>
|
||||
<symbol> { </symbol>
|
||||
<subroutineDec>
|
||||
<keyword> function </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> main </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<parameterList>
|
||||
</parameterList>
|
||||
<symbol> ) </symbol>
|
||||
<subroutineBody>
|
||||
<symbol> { </symbol>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<identifier> Array </identifier>
|
||||
<identifier> a </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> length </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> , </symbol>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> length </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> readInt </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
<expression>
|
||||
<term>
|
||||
<stringconstant> HOW MANY NUMBERS? </stringconstant>
|
||||
</term>
|
||||
</expression>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> a </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> Array </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> length </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<whileStatement>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
<symbol> < </symbol>
|
||||
<term>
|
||||
<identifier> length </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ] </symbol>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> readInt </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
<expression>
|
||||
<term>
|
||||
<stringconstant> ENTER THE NEXT NUMBER: </stringconstant>
|
||||
</term>
|
||||
</expression>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
<symbol> + </symbol>
|
||||
<term>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</whileStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<whileStatement>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
<symbol> < </symbol>
|
||||
<term>
|
||||
<identifier> length </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> sum </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> sum </identifier>
|
||||
</term>
|
||||
<symbol> + </symbol>
|
||||
<term>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ] </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
<symbol> + </symbol>
|
||||
<term>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</whileStatement>
|
||||
<doStatement>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Output </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> printString </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
<expression>
|
||||
<term>
|
||||
<stringconstant> THE AVERAGE IS: </stringconstant>
|
||||
</term>
|
||||
</expression>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
</doStatement>
|
||||
<doStatement>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Output </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> printInt </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> sum </identifier>
|
||||
</term>
|
||||
<symbol> / </symbol>
|
||||
<term>
|
||||
<identifier> length </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
</doStatement>
|
||||
<doStatement>
|
||||
<keyword> do </keyword>
|
||||
<identifier> Output </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> println </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
</doStatement>
|
||||
<returnStatement>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
</returnStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</subroutineBody>
|
||||
</subroutineDec>
|
||||
<symbol> } </symbol>
|
||||
</class>
|
@ -0,0 +1,244 @@
|
||||
<class>
|
||||
<keyword> class </keyword>
|
||||
<identifier> Main </identifier>
|
||||
<symbol> { </symbol>
|
||||
<classVarDec>
|
||||
<keyword> static </keyword>
|
||||
<keyword> boolean </keyword>
|
||||
<identifier> test </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</classVarDec>
|
||||
<subroutineDec>
|
||||
<keyword> function </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> main </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<parameterList>
|
||||
</parameterList>
|
||||
<symbol> ) </symbol>
|
||||
<subroutineBody>
|
||||
<symbol> { </symbol>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<identifier> SquareGame </identifier>
|
||||
<identifier> game </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> game </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> SquareGame </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<doStatement>
|
||||
<keyword> do </keyword>
|
||||
<identifier> game </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> run </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
</doStatement>
|
||||
<doStatement>
|
||||
<keyword> do </keyword>
|
||||
<identifier> game </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> dispose </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> ; </symbol>
|
||||
</doStatement>
|
||||
<returnStatement>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
</returnStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</subroutineBody>
|
||||
</subroutineDec>
|
||||
<subroutineDec>
|
||||
<keyword> function </keyword>
|
||||
<keyword> void </keyword>
|
||||
<identifier> test </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<parameterList>
|
||||
</parameterList>
|
||||
<symbol> ) </symbol>
|
||||
<subroutineBody>
|
||||
<symbol> { </symbol>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<keyword> int </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> , </symbol>
|
||||
<identifier> j </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<identifier> String </identifier>
|
||||
<identifier> s </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<varDec>
|
||||
<keyword> var </keyword>
|
||||
<identifier> Array </identifier>
|
||||
<identifier> a </identifier>
|
||||
<symbol> ; </symbol>
|
||||
</varDec>
|
||||
<statements>
|
||||
<ifStatement>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<keyword> false </keyword>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> s </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<stringconstant> string constant </stringconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> s </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<keyword> null </keyword>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ] </symbol>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> a </identifier>
|
||||
<symbol> [ </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ] </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
<keyword> else </keyword>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
<symbol> * </symbol>
|
||||
<term>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<symbol> - </symbol>
|
||||
<term>
|
||||
<identifier> j </identifier>
|
||||
</term>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> j </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> j </identifier>
|
||||
</term>
|
||||
<symbol> / </symbol>
|
||||
<term>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<symbol> - </symbol>
|
||||
<term>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
</term>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> i </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> i </identifier>
|
||||
</term>
|
||||
<symbol> | </symbol>
|
||||
<term>
|
||||
<identifier> j </identifier>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</ifStatement>
|
||||
<returnStatement>
|
||||
<keyword> return </keyword>
|
||||
<symbol> ; </symbol>
|
||||
</returnStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</subroutineBody>
|
||||
</subroutineDec>
|
||||
<symbol> } </symbol>
|
||||
</class>
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,643 @@
|
||||
<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>
|
||||
<symbol> . </symbol>
|
||||
<identifier> new </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> , </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> , </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 30 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<returnStatement>
|
||||
<keyword> return </keyword>
|
||||
<expression>
|
||||
<term>
|
||||
<keyword> this </keyword>
|
||||
</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>
|
||||
<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> moveSquare </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<parameterList>
|
||||
</parameterList>
|
||||
<symbol> ) </symbol>
|
||||
<subroutineBody>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<ifStatement>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> direction </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
</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>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
</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>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 3 </integerconstant>
|
||||
</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>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 4 </integerconstant>
|
||||
</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>
|
||||
<integerconstant> 5 </integerconstant>
|
||||
</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>
|
||||
<keyword> false </keyword>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
<whileStatement>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<symbol> ~ </symbol>
|
||||
<term>
|
||||
<identifier> exit </identifier>
|
||||
</term>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<whileStatement>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> key </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> keyPressed </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</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>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 81 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> exit </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<keyword> true </keyword>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</ifStatement>
|
||||
<ifStatement>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> key </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 90 </integerconstant>
|
||||
</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>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 88 </integerconstant>
|
||||
</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>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 131 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 1 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</ifStatement>
|
||||
<ifStatement>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> key </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 133 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 2 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</ifStatement>
|
||||
<ifStatement>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> key </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 130 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 3 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</ifStatement>
|
||||
<ifStatement>
|
||||
<keyword> if </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> key </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 132 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> direction </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<integerconstant> 4 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ; </symbol>
|
||||
</letStatement>
|
||||
</statements>
|
||||
<symbol> } </symbol>
|
||||
</ifStatement>
|
||||
<whileStatement>
|
||||
<keyword> while </keyword>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<symbol> ~ </symbol>
|
||||
<term>
|
||||
<symbol> ( </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> key </identifier>
|
||||
</term>
|
||||
<symbol> = </symbol>
|
||||
<term>
|
||||
<integerconstant> 0 </integerconstant>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
</term>
|
||||
</term>
|
||||
</expression>
|
||||
<symbol> ) </symbol>
|
||||
<symbol> { </symbol>
|
||||
<statements>
|
||||
<letStatement>
|
||||
<keyword> let </keyword>
|
||||
<identifier> key </identifier>
|
||||
<symbol> = </symbol>
|
||||
<expression>
|
||||
<term>
|
||||
<identifier> Keyboard </identifier>
|
||||
<symbol> . </symbol>
|
||||
<identifier> keyPressed </identifier>
|
||||
<symbol> ( </symbol>
|
||||
<expressionList>
|
||||
</expressionList>
|
||||
<symbol> ) </symbol>
|
||||
</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