• Masahiro Yamada's avatar
    kconfig: remove grammatically ambiguous "unexpected option" diagnostic · 6900ae9e
    Masahiro Yamada authored
    This commit decreases 15 shift/reduce conflicts.
    
    The location of this error recovery is ambiguous.
    
    For example, there are two ways to interpret the following code:
    
      1 config FOO
      2         bool "foo"
    
     [A] Both lines are reduced together into a config_stmt.
    
     [B] The only line 1 is reduced into a config_stmt, and the line 2
         matches to "option_name error T_EOL"
    
    Of course, we expect [A], but [B] could be grammatically possible.
    
    Kconfig has no terminator for a config block. So, we cannot detect its
    end until we see a non-property keyword. People often insert a blank
    line between two config blocks, but it is just a coding convention.
    Blank lines are actually allowed anywhere in Kconfig files.
    
    The real error is when a property keyword appears right after "endif",
    "endchoice", "endmenu",  "source", "comment", or variable assignment.
    
    Instead of fixing the grammatical ambiguity, I chose to simply remove
    this error recovery.
    
    The difference is
    
      unexpected option "bool"
    
    ... is turned into a more generic message:
    
      invalid statement
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    6900ae9e
zconf.y 16.2 KB