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 >
Text File  |  1998-05-07  |  1KB  |  35 lines

  1. (*******************************************************************************
  2. *
  3. * RDP release 1.50 by Adrian Johnstone (A.Johnstone@rhbnc.ac.uk) 20 December 1997
  4. *
  5. * mini_syn.bnf - a mini grammar for syntax checking
  6. *
  7. * This file may be freely distributed. Please mail improvements to the author.
  8. *
  9. *******************************************************************************)
  10. TITLE("Mini_syn V1.50 (c) Adrian Johnstone 1997")
  11. SUFFIX("m")
  12.  
  13. program   ::= { [var_dec | statement ] ';' }.
  14.  
  15. var_dec   ::= 'int' ( ID [ '=' e1 ] )@','.
  16.  
  17. statement ::= ID '=' e1 | 'print' '(' ( e1 | String )@',' ')'.
  18.  
  19. e1 ::= e2 { '+' e2 (* Add *)      | '-' e2 (* Subtract *) }.         
  20.  
  21. e2 ::= e3 { '*' e3 (* Multiply *) | '/' e3 (* Divide   *) }.         
  22.  
  23. e3 ::= e4 | '+' e3 (* Posite *)   | '-' e3 (* Negate   *).
  24.  
  25. e4 ::= e5 [ '**' e4 ] (* Exponentiate *).
  26.  
  27. e5 ::= ID (* Variable *) | INTEGER (* Numeric literal *) | '(' e1 ')'.
  28.  
  29. comment ::= COMMENT_NEST('(*' '*)').  (* Comments *)
  30.  
  31. String  ::= STRING_ESC('"' '\\').     (* Strings for print *)
  32.  
  33. (* End of mini_syn.bnf *)
  34.  
  35.