/* File: else2.y One way to fix the dangling else is to require the programmer to always use braces after THEN and ELSE. Note that statement has been replaced with stmt_block. */ %{ %} %token IF THEN ELSE %token FOO %token EXPR %% program : statement_list ; statement_list : statement_list statement | statement ; statement : if_stmt | other_stmt | stmt_block ; stmt_block : '{' statement_list '}' ; other_stmt : FOO ';' ; if_stmt : IF EXPR THEN stmt_block ELSE stmt_block | IF EXPR THEN stmt_block ; %%