Re: Why are ambiguous grammars usually a bad idea? Why are languages usually defined and implemented with ambiguous grammars?

Fernando <pronesto@gmail.com>
Mon, 27 Dec 2021 03:56:35 -0800 (PST)

          From comp.compilers

Related articles
| List of all articles for this month |
From: Fernando <pronesto@gmail.com>
Newsgroups: comp.compilers
Date: Mon, 27 Dec 2021 03:56:35 -0800 (PST)
Organization: Compilers Central
References: 21-12-003
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="3282"; mail-complaints-to="abuse@iecc.com"
Keywords: parse, design
Posted-Date: 27 Dec 2021 21:27:47 EST
In-Reply-To: 21-12-003

Hi Roger,


One problem with ambiguous grammars is that ambiguities might confuse the
semantics of the programming language. One example is with the associativity
and precedence of operators. Concerning associativity, the ambiguous grammar
below does not specify if subtraction is left or right associative:


E ::= E - E | num


And, there is this classic example from C-like languages involving conditional
statements:


<cmd> ::= if <bool_expr> then <cmd>
              | if <bool_expr> then <cmd> else <cmd>


What would be the meaning of a statement like the one below? Depending on how
you fix the ambiguity, it's possible to make the else refer to the innermost
or the outermost conditional.


if (a > b) then if (c > d) then print(1) else print(2)


Regards,


Fernando


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.