diff options
| author | bringert <unknown> | 2005-03-21 13:27:04 +0000 |
|---|---|---|
| committer | bringert <unknown> | 2005-03-21 13:27:04 +0000 |
| commit | 75d228629a267da1be6c26a6fb13a14f3da0f7c2 (patch) | |
| tree | 4ea46964cd8ae546b6e759276a123eb4f225e46d /src/GF/CFGM/ParCFG.hs | |
| parent | 96a08c9df49345657c769ac481b6df47cbea3a8d (diff) | |
Build cfgm files using the nondeterministic conversion. Allow coercions in cfgm rule functions and remove the name.
Diffstat (limited to 'src/GF/CFGM/ParCFG.hs')
| -rw-r--r-- | src/GF/CFGM/ParCFG.hs | 239 |
1 files changed, 127 insertions, 112 deletions
diff --git a/src/GF/CFGM/ParCFG.hs b/src/GF/CFGM/ParCFG.hs index 454b69ccb..e41aefb98 100644 --- a/src/GF/CFGM/ParCFG.hs +++ b/src/GF/CFGM/ParCFG.hs @@ -1,6 +1,4 @@ {-# OPTIONS -fglasgow-exts -cpp #-} --- parser produced by Happy Version 1.13 - module ParCFG where import AbsCFG import LexCFG @@ -12,6 +10,8 @@ import GHC.Exts import GlaExts #endif +-- parser produced by Happy Version 1.15 + newtype HappyAbsSyn t4 t5 t6 t7 = HappyAbsSyn (() -> ()) happyIn4 :: t4 -> (HappyAbsSyn t4 t5 t6 t7) happyIn4 x = unsafeCoerce# x @@ -79,46 +79,46 @@ happyIn14 x = unsafeCoerce# x happyOut14 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Rule]) happyOut14 x = unsafeCoerce# x {-# INLINE happyOut14 #-} -happyIn15 :: (Profile) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn15 :: (Fun) -> (HappyAbsSyn t4 t5 t6 t7) happyIn15 x = unsafeCoerce# x {-# INLINE happyIn15 #-} -happyOut15 :: (HappyAbsSyn t4 t5 t6 t7) -> (Profile) +happyOut15 :: (HappyAbsSyn t4 t5 t6 t7) -> (Fun) happyOut15 x = unsafeCoerce# x {-# INLINE happyOut15 #-} -happyIn16 :: (Ints) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn16 :: (Profile) -> (HappyAbsSyn t4 t5 t6 t7) happyIn16 x = unsafeCoerce# x {-# INLINE happyIn16 #-} -happyOut16 :: (HappyAbsSyn t4 t5 t6 t7) -> (Ints) +happyOut16 :: (HappyAbsSyn t4 t5 t6 t7) -> (Profile) happyOut16 x = unsafeCoerce# x {-# INLINE happyOut16 #-} -happyIn17 :: ([Ints]) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn17 :: (Ints) -> (HappyAbsSyn t4 t5 t6 t7) happyIn17 x = unsafeCoerce# x {-# INLINE happyIn17 #-} -happyOut17 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Ints]) +happyOut17 :: (HappyAbsSyn t4 t5 t6 t7) -> (Ints) happyOut17 x = unsafeCoerce# x {-# INLINE happyOut17 #-} -happyIn18 :: ([Integer]) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn18 :: ([Ints]) -> (HappyAbsSyn t4 t5 t6 t7) happyIn18 x = unsafeCoerce# x {-# INLINE happyIn18 #-} -happyOut18 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Integer]) +happyOut18 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Ints]) happyOut18 x = unsafeCoerce# x {-# INLINE happyOut18 #-} -happyIn19 :: (Symbol) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn19 :: ([Integer]) -> (HappyAbsSyn t4 t5 t6 t7) happyIn19 x = unsafeCoerce# x {-# INLINE happyIn19 #-} -happyOut19 :: (HappyAbsSyn t4 t5 t6 t7) -> (Symbol) +happyOut19 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Integer]) happyOut19 x = unsafeCoerce# x {-# INLINE happyOut19 #-} -happyIn20 :: ([Symbol]) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn20 :: (Symbol) -> (HappyAbsSyn t4 t5 t6 t7) happyIn20 x = unsafeCoerce# x {-# INLINE happyIn20 #-} -happyOut20 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Symbol]) +happyOut20 :: (HappyAbsSyn t4 t5 t6 t7) -> (Symbol) happyOut20 x = unsafeCoerce# x {-# INLINE happyOut20 #-} -happyIn21 :: (Name) -> (HappyAbsSyn t4 t5 t6 t7) +happyIn21 :: ([Symbol]) -> (HappyAbsSyn t4 t5 t6 t7) happyIn21 x = unsafeCoerce# x {-# INLINE happyIn21 #-} -happyOut21 :: (HappyAbsSyn t4 t5 t6 t7) -> (Name) +happyOut21 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Symbol]) happyOut21 x = unsafeCoerce# x {-# INLINE happyOut21 #-} happyIn22 :: (Category) -> (HappyAbsSyn t4 t5 t6 t7) @@ -135,21 +135,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\x33\x00\x00\x00\x27\x00\x34\x00\x00\x00\x31\x00\x00\x00\x30\x00\x38\x00\x19\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x36\x00\x35\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x2e\x00\x2f\x00\x2b\x00\x2a\x00\x29\x00\x22\x00\x1f\x00\x28\x00\x24\x00\x20\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x11\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x00\x00\x37\x00\x00\x00\x31\x00\x34\x00\x00\x00\x30\x00\x00\x00\x2e\x00\x36\x00\x17\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x33\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x2b\x00\x27\x00\x29\x00\x21\x00\x1e\x00\x28\x00\x22\x00\x24\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x11\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x21\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0d\x00\x01\x00\x16\x00\x00\x00\x1a\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\xf9\xff\x00\x00\x1c\x00\x00\x00\x00\x00\x0b\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x02\x00\x03\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x19\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x0c\x00\x05\x00\x01\x00\x00\x00\x1b\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x09\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf8\xff\x00\x00\xfe\xff\x00\x00\xfa\xff\xf7\xff\x00\x00\xf5\xff\xf2\xff\x00\x00\x00\x00\x00\x00\xe2\xff\xf6\xff\xfb\xff\x00\x00\x00\x00\x00\x00\xf4\xff\xf9\xff\xf1\xff\x00\x00\xe3\xff\x00\x00\x00\x00\xee\xff\xed\xff\x00\x00\xeb\xff\x00\x00\x00\x00\xea\xff\x00\x00\xfd\xff\xf0\xff\xee\xff\xec\xff\xef\xff\xeb\xff\x00\x00\xe7\xff\xe5\xff\xf3\xff\xe8\xff\xe6\xff\xfc\xff\xe9\xff\xe4\xff"# +happyDefActions = HappyA# "\xf8\xff\x00\x00\xfe\xff\x00\x00\xfa\xff\xf7\xff\x00\x00\xf5\xff\xf2\xff\x00\x00\x00\x00\x00\x00\xe1\xff\xf6\xff\xfb\xff\xf0\xff\x00\x00\x00\x00\xef\xff\x00\x00\xf4\xff\xf9\xff\x00\x00\xf1\xff\x00\x00\xec\xff\xeb\xff\x00\x00\xe9\xff\x00\x00\x00\x00\xe8\xff\x00\x00\xfd\xff\xee\xff\xec\xff\xea\xff\xed\xff\xe9\xff\x00\x00\xe5\xff\xe3\xff\xf3\xff\xe6\xff\xe4\xff\xfc\xff\xe7\xff\xe2\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x02\x00\x03\x00\x01\x00\x0b\x00\x02\x00\x03\x00\x03\x00\x03\x00\x08\x00\x03\x00\x05\x00\x01\x00\x00\x00\x0f\x00\x10\x00\x0e\x00\x12\x00\x0f\x00\x10\x00\x03\x00\x12\x00\x12\x00\x12\x00\x11\x00\x0e\x00\x00\x00\x0c\x00\x0d\x00\x07\x00\x0d\x00\x0e\x00\x0a\x00\x08\x00\x05\x00\x09\x00\x0b\x00\x04\x00\x06\x00\x06\x00\x0c\x00\x0d\x00\x0c\x00\x07\x00\x04\x00\x0e\x00\x0c\x00\x06\x00\x05\x00\x07\x00\x03\x00\x05\x00\x0e\x00\x09\x00\x01\x00\x10\x00\x02\x00\x01\x00\x0a\x00\x0e\x00\x0b\x00\x09\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x02\x00\x03\x00\x0c\x00\x02\x00\x03\x00\x03\x00\x03\x00\x07\x00\x01\x00\x01\x00\x0a\x00\x00\x00\x08\x00\x03\x00\x10\x00\x11\x00\x12\x00\x10\x00\x11\x00\x12\x00\x12\x00\x12\x00\x0f\x00\x0f\x00\x0e\x00\x0f\x00\x00\x00\x05\x00\x04\x00\x0d\x00\x06\x00\x09\x00\x0d\x00\x0e\x00\x0c\x00\x09\x00\x05\x00\x0b\x00\x0d\x00\x0e\x00\x06\x00\x08\x00\x07\x00\x04\x00\x0f\x00\x0d\x00\x08\x00\x07\x00\x06\x00\x03\x00\x06\x00\x0a\x00\x02\x00\x01\x00\x01\x00\xff\xff\x0b\x00\xff\xff\x0f\x00\x0c\x00\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\x11\x00\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x28\x00\x0c\x00\x1f\x00\x18\x00\x28\x00\x0c\x00\x0c\x00\x0c\x00\x08\x00\x16\x00\x05\x00\x1f\x00\x07\x00\x29\x00\x2f\x00\x2e\x00\x2b\x00\x29\x00\x2a\x00\x2d\x00\x2b\x00\x1e\x00\x0d\x00\x17\x00\x20\x00\x0f\x00\x1a\x00\x24\x00\x09\x00\x2e\x00\x0f\x00\x0a\x00\x12\x00\x1d\x00\x10\x00\x03\x00\x03\x00\x26\x00\x04\x00\x1a\x00\x1b\x00\x22\x00\x27\x00\x28\x00\x0f\x00\x22\x00\x23\x00\x1d\x00\x24\x00\x1e\x00\x1a\x00\x0f\x00\x14\x00\x15\x00\xff\xff\x16\x00\x13\x00\x0c\x00\x0f\x00\x03\x00\x07\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x28\x00\x0c\x00\x18\x00\x28\x00\x0c\x00\x0c\x00\x0c\x00\x09\x00\x1f\x00\x1f\x00\x0a\x00\x07\x00\x08\x00\x2d\x00\x29\x00\x2f\x00\x2b\x00\x29\x00\x2a\x00\x2b\x00\x1e\x00\x0d\x00\x2e\x00\x20\x00\x2e\x00\x0f\x00\x0f\x00\x13\x00\x03\x00\x22\x00\x04\x00\x14\x00\x1a\x00\x24\x00\x03\x00\x10\x00\x05\x00\x11\x00\x1a\x00\x1b\x00\x1d\x00\x27\x00\x26\x00\x28\x00\x0f\x00\x22\x00\x24\x00\x23\x00\x1d\x00\x1e\x00\x1a\x00\x16\x00\x17\x00\x18\x00\x15\x00\x00\x00\x0c\x00\x00\x00\x0f\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\xff\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (1, 29) [ +happyReduceArr = array (1, 30) [ (1 , happyReduce_1), (2 , happyReduce_2), (3 , happyReduce_3), @@ -178,10 +178,11 @@ happyReduceArr = array (1, 29) [ (26 , happyReduce_26), (27 , happyReduce_27), (28 , happyReduce_28), - (29 , happyReduce_29) + (29 , happyReduce_29), + (30 , happyReduce_30) ] -happy_n_terms = 17 :: Int +happy_n_terms = 18 :: Int happy_n_nonterms = 19 :: Int happyReduce_1 = happySpecReduce_1 0# happyReduction_1 @@ -271,9 +272,8 @@ happyReduction_11 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_12 = happyReduce 8# 9# happyReduction_12 -happyReduction_12 (happy_x_8 `HappyStk` - happy_x_7 `HappyStk` +happyReduce_12 = happyReduce 7# 9# happyReduction_12 +happyReduction_12 (happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` @@ -281,14 +281,13 @@ happyReduction_12 (happy_x_8 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut4 happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOut15 happy_x_4 of { happy_var_4 -> - case happyOut22 happy_x_6 of { happy_var_6 -> - case happyOut20 happy_x_8 of { happy_var_8 -> + = case happyOut15 happy_x_1 of { happy_var_1 -> + case happyOut16 happy_x_3 of { happy_var_3 -> + case happyOut22 happy_x_5 of { happy_var_5 -> + case happyOut21 happy_x_7 of { happy_var_7 -> happyIn13 - (Rule happy_var_1 happy_var_3 happy_var_4 happy_var_6 happy_var_8 - ) `HappyStk` happyRest}}}}} + (Rule happy_var_1 happy_var_3 happy_var_5 happy_var_7 + ) `HappyStk` happyRest}}}} happyReduce_13 = happySpecReduce_0 10# happyReduction_13 happyReduction_13 = happyIn14 @@ -305,120 +304,126 @@ happyReduction_14 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_15 = happySpecReduce_3 11# happyReduction_15 -happyReduction_15 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut17 happy_x_2 of { happy_var_2 -> +happyReduce_15 = happySpecReduce_1 11# happyReduction_15 +happyReduction_15 happy_x_1 + = case happyOut4 happy_x_1 of { happy_var_1 -> happyIn15 - (Profile happy_var_2 + (Cons happy_var_1 )} -happyReduce_16 = happySpecReduce_3 12# happyReduction_16 -happyReduction_16 happy_x_3 +happyReduce_16 = happySpecReduce_1 11# happyReduction_16 +happyReduction_16 happy_x_1 + = happyIn15 + (Coerce + ) + +happyReduce_17 = happySpecReduce_3 12# happyReduction_17 +happyReduction_17 happy_x_3 happy_x_2 happy_x_1 = case happyOut18 happy_x_2 of { happy_var_2 -> happyIn16 + (Profile happy_var_2 + )} + +happyReduce_18 = happySpecReduce_3 13# happyReduction_18 +happyReduction_18 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut19 happy_x_2 of { happy_var_2 -> + happyIn17 (Ints happy_var_2 )} -happyReduce_17 = happySpecReduce_0 13# happyReduction_17 -happyReduction_17 = happyIn17 +happyReduce_19 = happySpecReduce_0 14# happyReduction_19 +happyReduction_19 = happyIn18 ([] ) -happyReduce_18 = happySpecReduce_1 13# happyReduction_18 -happyReduction_18 happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn17 +happyReduce_20 = happySpecReduce_1 14# happyReduction_20 +happyReduction_20 happy_x_1 + = case happyOut17 happy_x_1 of { happy_var_1 -> + happyIn18 ((:[]) happy_var_1 )} -happyReduce_19 = happySpecReduce_3 13# happyReduction_19 -happyReduction_19 happy_x_3 +happyReduce_21 = happySpecReduce_3 14# happyReduction_21 +happyReduction_21 happy_x_3 happy_x_2 happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut17 happy_x_3 of { happy_var_3 -> - happyIn17 + = case happyOut17 happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_3 of { happy_var_3 -> + happyIn18 ((:) happy_var_1 happy_var_3 )}} -happyReduce_20 = happySpecReduce_0 14# happyReduction_20 -happyReduction_20 = happyIn18 +happyReduce_22 = happySpecReduce_0 15# happyReduction_22 +happyReduction_22 = happyIn19 ([] ) -happyReduce_21 = happySpecReduce_1 14# happyReduction_21 -happyReduction_21 happy_x_1 +happyReduce_23 = happySpecReduce_1 15# happyReduction_23 +happyReduction_23 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - happyIn18 + happyIn19 ((:[]) happy_var_1 )} -happyReduce_22 = happySpecReduce_3 14# happyReduction_22 -happyReduction_22 happy_x_3 +happyReduce_24 = happySpecReduce_3 15# happyReduction_24 +happyReduction_24 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut18 happy_x_3 of { happy_var_3 -> - happyIn18 + case happyOut19 happy_x_3 of { happy_var_3 -> + happyIn19 ((:) happy_var_1 happy_var_3 )}} -happyReduce_23 = happySpecReduce_1 15# happyReduction_23 -happyReduction_23 happy_x_1 +happyReduce_25 = happySpecReduce_1 16# happyReduction_25 +happyReduction_25 happy_x_1 = case happyOut22 happy_x_1 of { happy_var_1 -> - happyIn19 + happyIn20 (CatS happy_var_1 )} -happyReduce_24 = happySpecReduce_1 15# happyReduction_24 -happyReduction_24 happy_x_1 +happyReduce_26 = happySpecReduce_1 16# happyReduction_26 +happyReduction_26 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> - happyIn19 + happyIn20 (TermS happy_var_1 )} -happyReduce_25 = happySpecReduce_1 16# happyReduction_25 -happyReduction_25 happy_x_1 - = happyIn20 +happyReduce_27 = happySpecReduce_1 17# happyReduction_27 +happyReduction_27 happy_x_1 + = happyIn21 ([] ) -happyReduce_26 = happySpecReduce_1 16# happyReduction_26 -happyReduction_26 happy_x_1 - = case happyOut19 happy_x_1 of { happy_var_1 -> - happyIn20 +happyReduce_28 = happySpecReduce_1 17# happyReduction_28 +happyReduction_28 happy_x_1 + = case happyOut20 happy_x_1 of { happy_var_1 -> + happyIn21 ((:[]) happy_var_1 )} -happyReduce_27 = happySpecReduce_2 16# happyReduction_27 -happyReduction_27 happy_x_2 +happyReduce_29 = happySpecReduce_2 17# happyReduction_29 +happyReduction_29 happy_x_2 happy_x_1 - = case happyOut19 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - happyIn20 + = case happyOut20 happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> + happyIn21 ((:) happy_var_1 happy_var_2 )}} -happyReduce_28 = happySpecReduce_1 17# happyReduction_28 -happyReduction_28 happy_x_1 - = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn21 - (Name happy_var_1 - )} - -happyReduce_29 = happySpecReduce_1 18# happyReduction_29 -happyReduction_29 happy_x_1 +happyReduce_30 = happySpecReduce_1 18# happyReduction_30 +happyReduction_30 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn22 (Category happy_var_1 )} happyNewToken action sts stk [] = - happyDoAction 16# (error "reading EOF!") action sts stk [] + happyDoAction 17# (error "reading EOF!") action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in @@ -427,28 +432,35 @@ happyNewToken action sts stk (tk:tks) = PT _ (TS ":") -> cont 2#; PT _ (TS ".") -> cont 3#; PT _ (TS "->") -> cont 4#; - PT _ (TS "[") -> cont 5#; - PT _ (TS "]") -> cont 6#; - PT _ (TS ",") -> cont 7#; - PT _ (TS "end") -> cont 8#; - PT _ (TS "grammar") -> cont 9#; - PT _ (TS "startcat") -> cont 10#; - PT _ (TV happy_dollar_dollar) -> cont 11#; - PT _ (TI happy_dollar_dollar) -> cont 12#; - PT _ (TL happy_dollar_dollar) -> cont 13#; - PT _ (T_SingleQuoteString happy_dollar_dollar) -> cont 14#; - _ -> cont 15#; - _ -> happyError tks + PT _ (TS "_") -> cont 5#; + PT _ (TS "[") -> cont 6#; + PT _ (TS "]") -> cont 7#; + PT _ (TS ",") -> cont 8#; + PT _ (TS "end") -> cont 9#; + PT _ (TS "grammar") -> cont 10#; + PT _ (TS "startcat") -> cont 11#; + PT _ (TV happy_dollar_dollar) -> cont 12#; + PT _ (TI happy_dollar_dollar) -> cont 13#; + PT _ (TL happy_dollar_dollar) -> cont 14#; + PT _ (T_SingleQuoteString happy_dollar_dollar) -> cont 15#; + _ -> cont 16#; + _ -> happyError' (tk:tks) } -happyThen :: Err a -> (a -> Err b) -> Err b +happyError_ tk tks = happyError' (tk:tks) + +happyThen :: () => Err a -> (a -> Err b) -> Err b happyThen = (thenM) -happyReturn :: a -> Err a +happyReturn :: () => a -> Err a happyReturn = (returnM) happyThen1 m k tks = (thenM) m (\a -> k a tks) +happyReturn1 :: () => a -> b -> Err a happyReturn1 = \a tks -> (returnM) a +happyError' :: () => [Token] -> Err a +happyError' = happyError -pGrammars tks = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut8 x)) +pGrammars tks = happySomeParser where + happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut8 x)) happySeq = happyDontSeq @@ -464,7 +476,7 @@ happyError ts = myLexer = tokens {-# LINE 1 "GenericTemplate.hs" #-} --- $Id: ParCFG.hs,v 1.5 2005/02/04 14:17:06 bringert Exp $ +-- $Id: ParCFG.hs,v 1.6 2005/03/21 14:27:06 bringert Exp $ @@ -532,9 +544,13 @@ happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll ----------------------------------------------------------------------------- -- Accepting the parse -happyAccept j tk st sts (HappyStk ans _) = (happyTcHack j - (happyTcHack st)) - (happyReturn1 ans) +-- If the current token is 0#, it means we've just accepted a partial +-- parse (a %partial parser). We must ignore the saved token on the top of +-- the stack in this case. +happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = + happyReturn1 ans +happyAccept j tk st sts (HappyStk ans _) = + (happyTcHack j (happyTcHack st)) (happyReturn1 ans) ----------------------------------------------------------------------------- -- Arrays only: do the next action @@ -607,7 +623,7 @@ data HappyAddr = HappyA# Addr# ----------------------------------------------------------------------------- -- HappyState data type (not arrays) -{-# LINE 165 "GenericTemplate.hs" #-} +{-# LINE 169 "GenericTemplate.hs" #-} ----------------------------------------------------------------------------- @@ -687,8 +703,7 @@ happyGoto nt j tk st = -- parse error if we are in recovery and we fail again happyFail 0# tk old_st _ stk = -- trace "failing" $ - happyError - + happyError_ tk {- We don't need state discarding for our restricted implementation of "error". In fact, it can cause some bogus parses, so I've disabled it |
