Skip to content

Grammar compatible to view on online tool

Vishal Mittal edited this page Mar 13, 2020 · 17 revisions

Grammar on DOC

Grammar with AST creation rules

Parsing table on checker tool

ABC -> MAINPROGRAM dollar.
MAINPROGRAM  ->  MODULEDECLARATIONS OTHERMODULES DRIVERMODULE OTHERMODULES.
MODULEDECLARATIONS -> MODULEDECLARATION MODULEDECLARATIONS | .
MODULEDECLARATION -> declare module id semicol.
OTHERMODULES -> NTMODULE OTHERMODULES | .
DRIVERMODULE -> driverdef program driverenddef MODULEDEF.
NTMODULE -> def module id enddef takes input sqbo INPUT_PLIST sqbc semicol RET MODULEDEF.
MODULEDEF ->  start STATEMENTS end.
RET  ->  returns  sqbo OUTPUT_PLIST sqbc semicol | .
INPUT_PLIST -> id colon DATATYPE INPUT_PLIST_DASH.
INPUT_PLIST_DASH -> comma id colon DATATYPE INPUT_PLIST_DASH | .
OUTPUT_PLIST -> id colon TYPE OUTPUT_PLIST_DASH.
OUTPUT_PLIST_DASH -> comma id colon TYPE OUTPUT_PLIST_DASH | .
DATATYPE ->integer| real | boolean | array sqbo RANGE sqbc of TYPE.
TYPE  ->  integer | real | boolean.
STATEMENTS -> STATEMENT STATEMENTS   | . 
STATEMENT -> IOSTMT | SIMPLESTMT | DECLARESTMT | CONDITIONALSTMT | ITERATIVESTMT. 
IOSTMT -> get_value  bo   id  bc semicol | print bo LITERAL bc semicol.
LITERAL -> VAR | true | false .
VAR  ->  id WHICHID | num | rnum.  
WHICHID  -> sqbo INDEX sqbc |  . 
SIMPLESTMT  -> ASSIGNMENTSTMT | MODULEREUSESTMT.  
ASSIGNMENTSTMT -> id WHICHSTMT. 
WHICHSTMT -> LVALUEIDSTMT | LVALUEARRSTMT. 
LVALUEIDSTMT -> assignop EXPRESSION semicol.
LVALUEARRSTMT -> sqbo INDEX sqbc assignop EXPRESSION semicol.
INDEX  -> num | id. 
MODULEREUSESTMT -> OPTIONAL use module id with parameters IDLIST semicol.
OPTIONAL  ->  sqbo IDLIST sqbc assignop |  .
IDLIST -> id IDLIST_DASH.
IDLIST_DASH -> comma  id IDLIST_DASH | .
EXPRESSION -> RELATIONALEXPR EXPRESSIONDASH  | UNARYARITHMETICEXPR.
EXPRESSIONDASH  -> LOGICALOP EXPRESSION | .
RELATIONALEXPR -> NONUNARYARITHMETICEXPR RELATIONALEXPRDASH .
RELATIONALEXPRDASH -> RELATIONALOP NONUNARYARITHMETICEXPR RELATIONALEXPRDASH | .
LOGICALOP -> and  | or.
RELATIONALOP  -> lt | le | gt | ge | eq | ne.
UNARYARITHMETICEXPR -> ADDSUBOP RESTUNARYARITHMETICEXPR .
RESTUNARYARITHMETICEXPR -> bo NONUNARYARITHMETICEXPR bc | VAR .
NONUNARYARITHMETICEXPR -> TERM NONUNARYARITHMETICEXPRDASH.
NONUNARYARITHMETICEXPRDASH -> ADDSUBOP TERM NONUNARYARITHMETICEXPRDASH | .
TERM -> FACTOR TERM_DASH.
TERM_DASH -> MULDIVOP FACTOR TERM_DASH | .
FACTOR -> bo RELATIONALEXPR EXPRESSIONDASH bc | LITERAL.
ADDSUBOP  -> plus | minus.
MULDIVOP ->  mul | div.
DECLARESTMT   -> declare  IDLIST colon DATATYPE semicol.
CONDITIONALSTMT -> switch bo id bc start CASESTMT DEFAULT end.
CASESTMT ->  case VALUE  colon STATEMENTS break semicol OTHERCASE.
OTHERCASE ->  case VALUE colon STATEMENTS break semicol OTHERCASE | .
VALUE -> num | true | false.
DEFAULT -> default colon STATEMENTS break semicol | .
ITERATIVESTMT -> for bo id in num rangeop num bc start STATEMENTS end | while bo EXPRESSION bc start STATEMENTS end.
RANGE -> INDEX  rangeop INDEX.

Clone this wiki locally