|
<program> ::= <statement>
<statement> ::= begin <stat list> end |
if <exp> then <statement> else <statement> |
while <exp> do <statement> |
<ident>:=<exp> |
output <exp> |
<ident> |
<dec>
<dec> ::= var <id list> |
proc <ident> = <statement>
<id list> ::= <ident> | <ident>, <id list>
<stat list> ::= <statement> | <statement>; <stat list>
<exp> ::= <sexp> <relop> <sexp> | <sexp>
<sexp> ::= <sexp> <addop> <term> | <term>
<term> ::= <term> * <opd> | <opd>
<opd> ::= ( <exp> ) | <ident> | <integer>
<relop> ::= = | <> | < | <= | > | >=
<addop> ::= + | -
-- Figure 1. Concrete Syntax --
I.e. The concrete syntax of the demonstration, imperative
language being defined.
Note that it includes procedure definition and call.
|
|