Adds grammar for Statements

This commit is contained in:
Nemo 2020-06-16 01:23:46 +05:30
parent 937db42830
commit 9e40244023
1 changed files with 47 additions and 0 deletions

View File

@ -322,3 +322,50 @@ subRoutineName
#### `className`, `subroutineName`, `varName`
`identifier`
### Statements
#### `statements`
`statement*`
#### `statement`
`letStatement | ifStatement | whileStatement | doStatement | returnStatement`
#### `letStatement`
`let varName ([ expression])? = expression ;`
#### `ifStatement`
```
if (expression) { statements }
(else {statements})?
```
#### `whileStatement`
`while (expression) {statements}`
#### `doStatement`
`do subroutineCall;`
#### `returnStatement`
`return expression?`;
### Expressions
TODO
### Terminal / Non-Terminal Keywords
|Terminal|Non-Terminal|
|--------|------------|
|keyword,symbol,integerConstant,stringConstant,identifier|class,classVarDec,subroutineDec,parameterList,subroutineBody,varDec|
||statements,whileStatement,ifStatement,returnStatement,letStatement,doStatement|
||expression,term,expressionList|