From 9e4024402322b0194ba3245bd239d861d94a3ebb Mon Sep 17 00:00:00 2001 From: Nemo Date: Tue, 16 Jun 2020 01:23:46 +0530 Subject: [PATCH] Adds grammar for Statements --- compiler/README.md | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/compiler/README.md b/compiler/README.md index 68e4d81..66e19a3 100644 --- a/compiler/README.md +++ b/compiler/README.md @@ -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| + +