The BNF rules in each of the following 6 cases describe a construct that consists of a list of elements.
(a) Describe the list.
(b) How many elements does it have?
(c) Does anything appear between or after the elements?
a. <name list> -> <name> | <name> ,< name list>
b. <field list> -> <field> ; | <field> ;< field list>
c. <statement list> -> <empty> |< statement> ; <statement list>
d. <term> -> <term> * <factor> |< factor>
e. <variables> -> <empty> | var <var decls>
<var decls> -> <name list> : <type> ; |< name list> : <type> ; <var dels>
f. <constants> -> <empty> | <const decls>
<const decls> -> const <name> = <constant> ;
| <const decls> <name> = <const> ;
The nonterminal for the empty string is: <empty> ->
Expert Answer
At first we can use “::==” in place of “–>” to mean “is defined as” and in BNF
a) non terminals are written in angle brackets. e.g. < >.
b) terminals are usually written in quotes. e.g. ” “.
now to answer your first Question.
a. <name list> -> <name> | <name> ,< name list> to describe the list in BNF,it will be
<name list> ::== {<name>”;”}<name>
for the second list ,to describe the list in BNF,
b. <field list> -> <field> ; | <field> ;< field list> it will look like
<field list> ::=={<field>”;”}<field>
for the third list ,to describe the list in BNF
c. <statement list> -> <empty> |< statement> ; <statement list> it will look like
<statement list> ::==[<statement>”;”]<statement>
b) How many elements does it have?
ans for 1. It has 2 elemnts.
ans for 2. it has 1 element.