-
Notifications
You must be signed in to change notification settings - Fork 12
Grammar compatible to view on online tool
Vishal Mittal edited this page Mar 13, 2020
·
17 revisions
Grammar with AST creation rules
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.