home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
cs.rhul.ac.uk
/
www.cs.rhul.ac.uk.zip
/
www.cs.rhul.ac.uk
/
pub
/
rdp
/
rdp_cs3470.tar
/
mini_syn.bnf
< prev
next >
Wrap
Text File
|
1998-05-07
|
1KB
|
35 lines
(*******************************************************************************
*
* RDP release 1.50 by Adrian Johnstone (A.Johnstone@rhbnc.ac.uk) 20 December 1997
*
* mini_syn.bnf - a mini grammar for syntax checking
*
* This file may be freely distributed. Please mail improvements to the author.
*
*******************************************************************************)
TITLE("Mini_syn V1.50 (c) Adrian Johnstone 1997")
SUFFIX("m")
program ::= { [var_dec | statement ] ';' }.
var_dec ::= 'int' ( ID [ '=' e1 ] )@','.
statement ::= ID '=' e1 | 'print' '(' ( e1 | String )@',' ')'.
e1 ::= e2 { '+' e2 (* Add *) | '-' e2 (* Subtract *) }.
e2 ::= e3 { '*' e3 (* Multiply *) | '/' e3 (* Divide *) }.
e3 ::= e4 | '+' e3 (* Posite *) | '-' e3 (* Negate *).
e4 ::= e5 [ '**' e4 ] (* Exponentiate *).
e5 ::= ID (* Variable *) | INTEGER (* Numeric literal *) | '(' e1 ')'.
comment ::= COMMENT_NEST('(*' '*)'). (* Comments *)
String ::= STRING_ESC('"' '\\'). (* Strings for print *)
(* End of mini_syn.bnf *)