Difference between revisions of "Introduction to Syntax/Exercise 1"

From Wiki**3

< Introduction to Syntax
(New page: == The Problem == Consider the following grammar: <text> bexpr -> bexpr or bexpr | bterm bterm -> bterm and bterm | bfactor bfactor -> not bfactor | ( bexpr ) | true | false </text>...)
 
(The Problem)
Line 3: Line 3:
 
Consider the following grammar:
 
Consider the following grammar:
 
<text>
 
<text>
bexpr -> bexpr or bexpr | bterm
+
bexpr   -> bexpr or bexpr | bterm
bterm -> bterm and bterm | bfactor
+
bterm   -> bterm and bterm | bfactor
bfactor -> not bfactor | ( bexpr ) | true | false
+
bfactor -> not bfactor | ( bexpr ) | true | false
 
</text>
 
</text>
  

Revision as of 13:04, 8 April 2008

The Problem

Consider the following grammar: <text> bexpr -> bexpr or bexpr | bterm bterm -> bterm and bterm | bfactor bfactor -> not bfactor | ( bexpr ) | true | false </text>

  1. Identify the terminal and non-terminal symbols of the grammar.
  2. Show that the grammar is ambiguous by deriving two different trees for the same input sequence.
  3. Write a non-ambiguous grammar for the same language.
  4. Build the tree corresponding to the analysis of the following input sequence: not ( true or false and true )

Solution