Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Ambiguous grammar
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Dangling else === {{main|Dangling else}} A common example of ambiguity in computer programming languages is the [[dangling else]] problem. In many languages, the <code>else</code> in an [[Conditional (computer programming)#If–then(–else)|If–then(–else)]] statement is optional, which results in nested conditionals having multiple ways of being recognized in terms of the context-free grammar. Concretely, in many languages one may write conditionals in two valid forms: the if-then form, and the if-then-else form – in effect, making the else clause optional. In a grammar containing the rules{{efn|The following example uses [[Pascal (programming language)|Pascal]] syntax.}} Statement → '''if''' Condition '''then''' Statement | '''if''' Condition '''then''' Statement '''else''' Statement | ... Condition → ... some ambiguous phrase structures can appear. The expression '''if''' a '''then''' '''if''' b '''then''' s '''else''' s2 can be parsed as either '''if''' a '''then''' '''begin''' '''if''' b '''then''' s '''end''' '''else''' s2 or as '''if''' a '''then''' '''begin''' '''if''' b '''then''' s '''else''' s2 '''end''' depending on whether the <code>else</code> is associated with the first <code>if</code> or second <code>if</code>. This is resolved in various ways in different languages. Sometimes the grammar is modified so that it is unambiguous, such as by requiring an <code>endif</code> statement or making <code>else</code> mandatory. In other cases the grammar is left ambiguous, but the ambiguity is resolved by making the overall phrase grammar context-sensitive, such as by associating an <code>else</code> with the nearest <code>if</code>. In this latter case the grammar is unambiguous, but the context-free grammar is ambiguous.{{clarify|reason=There is no such thing as an 'overall phrase grammar'. The 'nearest-if' rule can possibly be implemented by using a slightly modified, but still context-free grammar.|date=January 2017}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)