6.12 BNF and EBNF Notations



Meta-symbols of BNF


::= stands for ‘is defined as’
| stands for ‘or’
category-namesnon-terminal symbols


Extra meta-symbols of EBNF


[] optional items
{} repetative items

real::=(integer | decimal)? ’E’ integer
decimal::=integer ’.’ integer | integer ’.’ | ’.’ integer
integer::=digit+
digit::=‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’

Derivation:

real==>decimal ‘E’ integer
==>integer ‘.’ integer ‘E’ integer
==>digit+ ‘.’ digit+ ‘E’ digit+
==>‘12.3E45’

Derivation tree:

               real  
                |  
        +-------+---+----+  
        |           |    |  
     decimal        |    |  
        |           |    |  
   +----+-----+     |    |  
   |    |     |     |    |  
integer |  integer  | integer  
   |    |     |     |    |  
 digit+ |   digit+  |  digit+  
   |    |     |     |    |  
 +-+-+  |     |     |  +-+-+  
 |   |  |     |     |  |   |  
 1   2  .     3     E  4   5