CSC 533: Organization of Programming Languages
Spring 2005
HW2: EBNF Grammar
The following questions all refer to the EBNF of Python.
Note that this grammar uses a slight variation on the EBNF
syntax described in class: most notably, * denotes zero or more repetitions
and + denotes one or more repetitions.
- Which of the following are legal literals in Python?
For each legal literal, provide a parse tree (with the
<literal> abstraction at the root).
00 -2.9 0XA2 092
2E-4 0.01E12 5.5E+5.5 5.
- Describe, in concise English, the format for identifiers
(<identifier>) in Python. That is, what
characters may be used? What restrictions (if any) are there on order?
- What is the shortest possible function definition (<funcdef>) in
Python? Justify your answer.
- What is the order of precedence for the operators +, and
* in Python? Justify your answer by providing the parse tree
for the <expression>: 1+2*3.
- Does the dangling-else problem apply to Python? Justify your
answer.