From: simonpj Date: Mon, 29 Nov 2004 16:16:57 +0000 (+0000) Subject: [project @ 2004-11-29 16:16:57 by simonpj] X-Git-Tag: Initial_conversion_from_CVS_complete~1386 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=05eae53416443026fa1a042919881321047cc048;p=ghc-hetmet.git [project @ 2004-11-29 16:16:57 by simonpj] Update ambiguity errors --- diff --git a/ghc/compiler/parser/Parser.y.pp b/ghc/compiler/parser/Parser.y.pp index e8144a6..8305022 100644 --- a/ghc/compiler/parser/Parser.y.pp +++ b/ghc/compiler/parser/Parser.y.pp @@ -46,36 +46,49 @@ import GLAEXTS {- ----------------------------------------------------------------------------- -Conflicts: 33 shift/reduce, [SDM 19/9/2002] +Conflicts: 34 shift/reduce (1.15) -10 for abiguity in 'if x then y else z + 1' [State 136] +10 for abiguity in 'if x then y else z + 1' [State 178] (shift parses as 'if x then y else (z + 1)', as per longest-parse rule) 10 because op might be: : - ! * . `x` VARSYM CONSYM QVARSYM QCONSYM -1 for ambiguity in 'if x then y else z with ?x=3' [State 136] - (shift parses as 'if x then y else (z with ?x=3)' - -1 for ambiguity in 'if x then y else z :: T' [State 136] +1 for ambiguity in 'if x then y else z :: T' [State 178] (shift parses as 'if x then y else (z :: T)', as per longest-parse rule) -4 for ambiguity in 'if x then y else z -< e' +4 for ambiguity in 'if x then y else z -< e' [State 178] (shift parses as 'if x then y else (z -< T)', as per longest-parse rule) + There are four such operators: -<, >-, -<<, >>- + + +2 for ambiguity in 'case v of { x :: T -> T ... } ' [States 11, 253] + Which of these two is intended? + case v of + (x::T) -> T -- Rhs is T + or + case v of + (x::T -> T) -> .. -- Rhs is ... -8 for ambiguity in 'e :: a `b` c'. Does this mean [States 160,246] +8 for ambiguity in 'e :: a `b` c'. Does this mean [States 11, 253] (e::a) `b` c, or (e :: (a `b` c)) + As well as `b` we can have !, QCONSYM, and CONSYM, hence 3 cases + Same duplication between states 11 and 253 as the previous case -1 for ambiguity in 'let ?x ...' [State 268] +1 for ambiguity in 'let ?x ...' [State 329] the parser can't tell whether the ?x is the lhs of a normal binding or an implicit binding. Fortunately resolving as shift gives it the only sensible meaning, namely the lhs of an implicit binding. -1 for ambiguity in '{-# RULES "name" [ ... #-} [State 332] +1 for ambiguity in '{-# RULES "name" [ ... #-} [State 382] we don't know whether the '[' starts the activation or not: it might be the start of the declaration with the activation being empty. --SDM 1/4/2002 -1 for ambiguity in '{-# RULES "name" forall = ... #-}' [State 394] +6 for conflicts between `fdecl' and `fdeclDEPRECATED', [States 393,394] + which are resolved correctly, and moreover, + should go away when `fdeclDEPRECATED' is removed. + +1 for ambiguity in '{-# RULES "name" forall = ... #-}' [State 474] since 'forall' is a valid variable name, we don't know whether to treat a forall on the input as the beginning of a quantifier or the beginning of the rule itself. Resolving to shift means @@ -83,10 +96,6 @@ Conflicts: 33 shift/reduce, [SDM 19/9/2002] This saves explicitly defining a grammar for the rule lhs that doesn't include 'forall'. -6 for conflicts between `fdecl' and `fdeclDEPRECATED', [States 384,385] - which are resolved correctly, and moreover, - should go away when `fdeclDEPRECATED' is removed. - -- --------------------------------------------------------------------------- -- Adding location info