packages feed

uuagc 0.9.20 → 0.9.21

raw patch · 7 files changed

+299/−283 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

src-derived/ConcreteSyntax.hs view
@@ -189,6 +189,7 @@          child ident          : {Identifier}          child rhs            : {Expression}       alternative Def:+         child pos            : {Pos}          child pattern        : {Pattern}          child rhs            : {Expression}          child owrt           : {Bool}@@ -204,7 +205,7 @@ data SemDef  = AroundDef (Identifier) (Expression)               | AttrOrderBefore ([(Identifier,Identifier)]) ([(Identifier,Identifier)])               | AugmentDef (Identifier) (Expression) -             | Def (Pattern) (Expression) (Bool) +             | Def (Pos) (Pattern) (Expression) (Bool)               | SemPragma ([NontermIdent])               | TypeDef (Identifier) (Type)               | UniqueDef (Identifier) (Identifier) 
src-derived/Transform.hs view
@@ -5070,6 +5070,7 @@          child ident          : {Identifier}          child rhs            : {Expression}       alternative Def:+         child pos            : {Pos}          child pattern        : Pattern           child rhs            : {Expression}          child owrt           : {Bool}@@ -5091,8 +5092,8 @@     (sem_SemDef_AttrOrderBefore _before _after ) sem_SemDef (AugmentDef _ident _rhs )  =     (sem_SemDef_AugmentDef _ident _rhs )-sem_SemDef (Def _pattern _rhs _owrt )  =-    (sem_SemDef_Def (sem_Pattern _pattern ) _rhs _owrt )+sem_SemDef (Def _pos _pattern _rhs _owrt )  =+    (sem_SemDef_Def _pos (sem_Pattern _pattern ) _rhs _owrt ) sem_SemDef (SemPragma _names )  =     (sem_SemDef_SemPragma _names ) sem_SemDef (TypeDef _ident _tp )  =@@ -5126,42 +5127,42 @@                    _lhsOaroundInfos =                        {-# LINE 952 "Transform.ag" #-}                        [ (ident_, rhs_) ]-                       {-# LINE 5130 "Transform.hs" #-}+                       {-# LINE 5131 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 884, column 40)                    _lhsOaugmentInfos =                        {-# LINE 884 "Transform.ag" #-}                        []-                       {-# LINE 5135 "Transform.hs" #-}+                       {-# LINE 5136 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        []-                       {-# LINE 5140 "Transform.hs" #-}+                       {-# LINE 5141 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 747, column 44)                    _lhsOorderDepsCollect =                        {-# LINE 747 "Transform.ag" #-}                        Set.empty-                       {-# LINE 5145 "Transform.hs" #-}+                       {-# LINE 5146 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 716, column 46)                    _lhsOpragmaNamesCollect =                        {-# LINE 716 "Transform.ag" #-}                        []-                       {-# LINE 5150 "Transform.hs" #-}+                       {-# LINE 5151 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 881, column 40)                    _lhsOruleInfos =                        {-# LINE 881 "Transform.ag" #-}                        []-                       {-# LINE 5155 "Transform.hs" #-}+                       {-# LINE 5156 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 882, column 40)                    _lhsOsigInfos =                        {-# LINE 882 "Transform.ag" #-}                        []-                       {-# LINE 5160 "Transform.hs" #-}+                       {-# LINE 5161 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 883, column 40)                    _lhsOuniqueInfos =                        {-# LINE 883 "Transform.ag" #-}                        []-                       {-# LINE 5165 "Transform.hs" #-}+                       {-# LINE 5166 "Transform.hs" #-}                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) ) sem_SemDef_AttrOrderBefore :: ([(Identifier,Identifier)]) ->                               ([(Identifier,Identifier)]) ->@@ -5179,47 +5180,47 @@                    _dependency =                        {-# LINE 751 "Transform.ag" #-}                        [ Dependency b a | b <- before_, a <- after_ ]-                       {-# LINE 5183 "Transform.hs" #-}+                       {-# LINE 5184 "Transform.hs" #-}                    -- "Transform.ag"(line 752, column 7)                    _lhsOorderDepsCollect =                        {-# LINE 752 "Transform.ag" #-}                        Set.fromList _dependency-                       {-# LINE 5188 "Transform.hs" #-}+                       {-# LINE 5189 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 885, column 40)                    _lhsOaroundInfos =                        {-# LINE 885 "Transform.ag" #-}                        []-                       {-# LINE 5193 "Transform.hs" #-}+                       {-# LINE 5194 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 884, column 40)                    _lhsOaugmentInfos =                        {-# LINE 884 "Transform.ag" #-}                        []-                       {-# LINE 5198 "Transform.hs" #-}+                       {-# LINE 5199 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        []-                       {-# LINE 5203 "Transform.hs" #-}+                       {-# LINE 5204 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 716, column 46)                    _lhsOpragmaNamesCollect =                        {-# LINE 716 "Transform.ag" #-}                        []-                       {-# LINE 5208 "Transform.hs" #-}+                       {-# LINE 5209 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 881, column 40)                    _lhsOruleInfos =                        {-# LINE 881 "Transform.ag" #-}                        []-                       {-# LINE 5213 "Transform.hs" #-}+                       {-# LINE 5214 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 882, column 40)                    _lhsOsigInfos =                        {-# LINE 882 "Transform.ag" #-}                        []-                       {-# LINE 5218 "Transform.hs" #-}+                       {-# LINE 5219 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 883, column 40)                    _lhsOuniqueInfos =                        {-# LINE 883 "Transform.ag" #-}                        []-                       {-# LINE 5223 "Transform.hs" #-}+                       {-# LINE 5224 "Transform.hs" #-}                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) ) sem_SemDef_AugmentDef :: Identifier ->                          Expression ->@@ -5237,48 +5238,49 @@                    _lhsOaugmentInfos =                        {-# LINE 949 "Transform.ag" #-}                        [ (ident_, rhs_) ]-                       {-# LINE 5241 "Transform.hs" #-}+                       {-# LINE 5242 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 885, column 40)                    _lhsOaroundInfos =                        {-# LINE 885 "Transform.ag" #-}                        []-                       {-# LINE 5246 "Transform.hs" #-}+                       {-# LINE 5247 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        []-                       {-# LINE 5251 "Transform.hs" #-}+                       {-# LINE 5252 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 747, column 44)                    _lhsOorderDepsCollect =                        {-# LINE 747 "Transform.ag" #-}                        Set.empty-                       {-# LINE 5256 "Transform.hs" #-}+                       {-# LINE 5257 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 716, column 46)                    _lhsOpragmaNamesCollect =                        {-# LINE 716 "Transform.ag" #-}                        []-                       {-# LINE 5261 "Transform.hs" #-}+                       {-# LINE 5262 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 881, column 40)                    _lhsOruleInfos =                        {-# LINE 881 "Transform.ag" #-}                        []-                       {-# LINE 5266 "Transform.hs" #-}+                       {-# LINE 5267 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 882, column 40)                    _lhsOsigInfos =                        {-# LINE 882 "Transform.ag" #-}                        []-                       {-# LINE 5271 "Transform.hs" #-}+                       {-# LINE 5272 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 883, column 40)                    _lhsOuniqueInfos =                        {-# LINE 883 "Transform.ag" #-}                        []-                       {-# LINE 5276 "Transform.hs" #-}+                       {-# LINE 5277 "Transform.hs" #-}                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )-sem_SemDef_Def :: T_Pattern  ->+sem_SemDef_Def :: Pos ->+                  T_Pattern  ->                   Expression ->                   Bool ->                   T_SemDef -sem_SemDef_Def (T_Pattern pattern_ ) rhs_ owrt_  =+sem_SemDef_Def pos_ (T_Pattern pattern_ ) rhs_ owrt_  =     (T_SemDef (let _lhsOruleInfos :: ([RuleInfo])                    _lhsOaroundInfos :: ([AroundInfo])                    _lhsOaugmentInfos :: ([AugmentInfo])@@ -5296,42 +5298,42 @@                    _lhsOruleInfos =                        {-# LINE 940 "Transform.ag" #-}                        [ (_patternIpatunder, rhs_, _patternIdefinedAttrs, owrt_, show _patternIstpos) ]-                       {-# LINE 5300 "Transform.hs" #-}+                       {-# LINE 5302 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 885, column 40)                    _lhsOaroundInfos =                        {-# LINE 885 "Transform.ag" #-}                        []-                       {-# LINE 5305 "Transform.hs" #-}+                       {-# LINE 5307 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 884, column 40)                    _lhsOaugmentInfos =                        {-# LINE 884 "Transform.ag" #-}                        []-                       {-# LINE 5310 "Transform.hs" #-}+                       {-# LINE 5312 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        _patternIdefinedInsts-                       {-# LINE 5315 "Transform.hs" #-}+                       {-# LINE 5317 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 747, column 44)                    _lhsOorderDepsCollect =                        {-# LINE 747 "Transform.ag" #-}                        Set.empty-                       {-# LINE 5320 "Transform.hs" #-}+                       {-# LINE 5322 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 716, column 46)                    _lhsOpragmaNamesCollect =                        {-# LINE 716 "Transform.ag" #-}                        []-                       {-# LINE 5325 "Transform.hs" #-}+                       {-# LINE 5327 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 882, column 40)                    _lhsOsigInfos =                        {-# LINE 882 "Transform.ag" #-}                        []-                       {-# LINE 5330 "Transform.hs" #-}+                       {-# LINE 5332 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 883, column 40)                    _lhsOuniqueInfos =                        {-# LINE 883 "Transform.ag" #-}                        []-                       {-# LINE 5335 "Transform.hs" #-}+                       {-# LINE 5337 "Transform.hs" #-}                    ( _patternIcopy,_patternIdefinedAttrs,_patternIdefinedInsts,_patternIpatunder,_patternIstpos) =                        (pattern_ )                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )@@ -5350,42 +5352,42 @@                    _lhsOpragmaNamesCollect =                        {-# LINE 720 "Transform.ag" #-}                        names_-                       {-# LINE 5354 "Transform.hs" #-}+                       {-# LINE 5356 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 885, column 40)                    _lhsOaroundInfos =                        {-# LINE 885 "Transform.ag" #-}                        []-                       {-# LINE 5359 "Transform.hs" #-}+                       {-# LINE 5361 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 884, column 40)                    _lhsOaugmentInfos =                        {-# LINE 884 "Transform.ag" #-}                        []-                       {-# LINE 5364 "Transform.hs" #-}+                       {-# LINE 5366 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        []-                       {-# LINE 5369 "Transform.hs" #-}+                       {-# LINE 5371 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 747, column 44)                    _lhsOorderDepsCollect =                        {-# LINE 747 "Transform.ag" #-}                        Set.empty-                       {-# LINE 5374 "Transform.hs" #-}+                       {-# LINE 5376 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 881, column 40)                    _lhsOruleInfos =                        {-# LINE 881 "Transform.ag" #-}                        []-                       {-# LINE 5379 "Transform.hs" #-}+                       {-# LINE 5381 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 882, column 40)                    _lhsOsigInfos =                        {-# LINE 882 "Transform.ag" #-}                        []-                       {-# LINE 5384 "Transform.hs" #-}+                       {-# LINE 5386 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 883, column 40)                    _lhsOuniqueInfos =                        {-# LINE 883 "Transform.ag" #-}                        []-                       {-# LINE 5389 "Transform.hs" #-}+                       {-# LINE 5391 "Transform.hs" #-}                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) ) sem_SemDef_TypeDef :: Identifier ->                       Type ->@@ -5403,42 +5405,42 @@                    _lhsOsigInfos =                        {-# LINE 943 "Transform.ag" #-}                        [ (ident_, tp_) ]-                       {-# LINE 5407 "Transform.hs" #-}+                       {-# LINE 5409 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 885, column 40)                    _lhsOaroundInfos =                        {-# LINE 885 "Transform.ag" #-}                        []-                       {-# LINE 5412 "Transform.hs" #-}+                       {-# LINE 5414 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 884, column 40)                    _lhsOaugmentInfos =                        {-# LINE 884 "Transform.ag" #-}                        []-                       {-# LINE 5417 "Transform.hs" #-}+                       {-# LINE 5419 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        []-                       {-# LINE 5422 "Transform.hs" #-}+                       {-# LINE 5424 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 747, column 44)                    _lhsOorderDepsCollect =                        {-# LINE 747 "Transform.ag" #-}                        Set.empty-                       {-# LINE 5427 "Transform.hs" #-}+                       {-# LINE 5429 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 716, column 46)                    _lhsOpragmaNamesCollect =                        {-# LINE 716 "Transform.ag" #-}                        []-                       {-# LINE 5432 "Transform.hs" #-}+                       {-# LINE 5434 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 881, column 40)                    _lhsOruleInfos =                        {-# LINE 881 "Transform.ag" #-}                        []-                       {-# LINE 5437 "Transform.hs" #-}+                       {-# LINE 5439 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 883, column 40)                    _lhsOuniqueInfos =                        {-# LINE 883 "Transform.ag" #-}                        []-                       {-# LINE 5442 "Transform.hs" #-}+                       {-# LINE 5444 "Transform.hs" #-}                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) ) sem_SemDef_UniqueDef :: Identifier ->                         Identifier ->@@ -5456,42 +5458,42 @@                    _lhsOuniqueInfos =                        {-# LINE 946 "Transform.ag" #-}                        [ (ident_, ref_) ]-                       {-# LINE 5460 "Transform.hs" #-}+                       {-# LINE 5462 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 885, column 40)                    _lhsOaroundInfos =                        {-# LINE 885 "Transform.ag" #-}                        []-                       {-# LINE 5465 "Transform.hs" #-}+                       {-# LINE 5467 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 884, column 40)                    _lhsOaugmentInfos =                        {-# LINE 884 "Transform.ag" #-}                        []-                       {-# LINE 5470 "Transform.hs" #-}+                       {-# LINE 5472 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 955, column 55)                    _lhsOdefinedInsts =                        {-# LINE 955 "Transform.ag" #-}                        []-                       {-# LINE 5475 "Transform.hs" #-}+                       {-# LINE 5477 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 747, column 44)                    _lhsOorderDepsCollect =                        {-# LINE 747 "Transform.ag" #-}                        Set.empty-                       {-# LINE 5480 "Transform.hs" #-}+                       {-# LINE 5482 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 716, column 46)                    _lhsOpragmaNamesCollect =                        {-# LINE 716 "Transform.ag" #-}                        []-                       {-# LINE 5485 "Transform.hs" #-}+                       {-# LINE 5487 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 881, column 40)                    _lhsOruleInfos =                        {-# LINE 881 "Transform.ag" #-}                        []-                       {-# LINE 5490 "Transform.hs" #-}+                       {-# LINE 5492 "Transform.hs" #-}                    -- use rule "Transform.ag"(line 882, column 40)                    _lhsOsigInfos =                        {-# LINE 882 "Transform.ag" #-}                        []-                       {-# LINE 5495 "Transform.hs" #-}+                       {-# LINE 5497 "Transform.hs" #-}                in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) ) -- SemDefs ----------------------------------------------------- {-@@ -5559,42 +5561,42 @@                     _lhsOaroundInfos =                         {-# LINE 885 "Transform.ag" #-}                         _hdIaroundInfos ++ _tlIaroundInfos-                        {-# LINE 5563 "Transform.hs" #-}+                        {-# LINE 5565 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 884, column 40)                     _lhsOaugmentInfos =                         {-# LINE 884 "Transform.ag" #-}                         _hdIaugmentInfos ++ _tlIaugmentInfos-                        {-# LINE 5568 "Transform.hs" #-}+                        {-# LINE 5570 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 955, column 55)                     _lhsOdefinedInsts =                         {-# LINE 955 "Transform.ag" #-}                         _hdIdefinedInsts ++ _tlIdefinedInsts-                        {-# LINE 5573 "Transform.hs" #-}+                        {-# LINE 5575 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 747, column 44)                     _lhsOorderDepsCollect =                         {-# LINE 747 "Transform.ag" #-}                         _hdIorderDepsCollect `Set.union` _tlIorderDepsCollect-                        {-# LINE 5578 "Transform.hs" #-}+                        {-# LINE 5580 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 716, column 46)                     _lhsOpragmaNamesCollect =                         {-# LINE 716 "Transform.ag" #-}                         _hdIpragmaNamesCollect ++ _tlIpragmaNamesCollect-                        {-# LINE 5583 "Transform.hs" #-}+                        {-# LINE 5585 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 881, column 40)                     _lhsOruleInfos =                         {-# LINE 881 "Transform.ag" #-}                         _hdIruleInfos ++ _tlIruleInfos-                        {-# LINE 5588 "Transform.hs" #-}+                        {-# LINE 5590 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 882, column 40)                     _lhsOsigInfos =                         {-# LINE 882 "Transform.ag" #-}                         _hdIsigInfos ++ _tlIsigInfos-                        {-# LINE 5593 "Transform.hs" #-}+                        {-# LINE 5595 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 883, column 40)                     _lhsOuniqueInfos =                         {-# LINE 883 "Transform.ag" #-}                         _hdIuniqueInfos ++ _tlIuniqueInfos-                        {-# LINE 5598 "Transform.hs" #-}+                        {-# LINE 5600 "Transform.hs" #-}                     ( _hdIaroundInfos,_hdIaugmentInfos,_hdIdefinedInsts,_hdIorderDepsCollect,_hdIpragmaNamesCollect,_hdIruleInfos,_hdIsigInfos,_hdIuniqueInfos) =                         (hd_ )                     ( _tlIaroundInfos,_tlIaugmentInfos,_tlIdefinedInsts,_tlIorderDepsCollect,_tlIpragmaNamesCollect,_tlIruleInfos,_tlIsigInfos,_tlIuniqueInfos) =@@ -5614,40 +5616,40 @@                     _lhsOaroundInfos =                         {-# LINE 885 "Transform.ag" #-}                         []-                        {-# LINE 5618 "Transform.hs" #-}+                        {-# LINE 5620 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 884, column 40)                     _lhsOaugmentInfos =                         {-# LINE 884 "Transform.ag" #-}                         []-                        {-# LINE 5623 "Transform.hs" #-}+                        {-# LINE 5625 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 955, column 55)                     _lhsOdefinedInsts =                         {-# LINE 955 "Transform.ag" #-}                         []-                        {-# LINE 5628 "Transform.hs" #-}+                        {-# LINE 5630 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 747, column 44)                     _lhsOorderDepsCollect =                         {-# LINE 747 "Transform.ag" #-}                         Set.empty-                        {-# LINE 5633 "Transform.hs" #-}+                        {-# LINE 5635 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 716, column 46)                     _lhsOpragmaNamesCollect =                         {-# LINE 716 "Transform.ag" #-}                         []-                        {-# LINE 5638 "Transform.hs" #-}+                        {-# LINE 5640 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 881, column 40)                     _lhsOruleInfos =                         {-# LINE 881 "Transform.ag" #-}                         []-                        {-# LINE 5643 "Transform.hs" #-}+                        {-# LINE 5645 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 882, column 40)                     _lhsOsigInfos =                         {-# LINE 882 "Transform.ag" #-}                         []-                        {-# LINE 5648 "Transform.hs" #-}+                        {-# LINE 5650 "Transform.hs" #-}                     -- use rule "Transform.ag"(line 883, column 40)                     _lhsOuniqueInfos =                         {-# LINE 883 "Transform.ag" #-}                         []-                        {-# LINE 5653 "Transform.hs" #-}+                        {-# LINE 5655 "Transform.hs" #-}                 in  ( _lhsOaroundInfos,_lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
src/Parser.hs view
@@ -43,23 +43,217 @@  parseFile :: Options -> [FilePath] -> String -> IO  ([Elem],[String],[String],[Message Token Pos ]) parseFile opts searchPath file -               = do txt <- readFile file-                    let litMode = ".lag" `isSuffixOf` file-                        (files,text) = if litMode then scanLit txt-                                       else ([],txt)-                        tokens       = input opts (initPos file) text+ = do txt <- readFile file+      let litMode = ".lag" `isSuffixOf` file+          (files,text) = if litMode then scanLit txt+                         else ([],txt)+          tokens       = input opts (initPos file) text -                        steps = parse (pElemsFiles opts) tokens-                        stop (_,fs,_,_) = null fs-                        cont (es,fs,allfs,msg)-                          = do files <- mapM (resolveFile searchPath) fs-                               res <- mapM (parseFile opts searchPath) files-                               let (ess,fss,allfss, msgs) = unzip4 res-                               return (es ++ concat ess, concat fss, concat allfss ++ allfs, msg ++ concat msgs)-                    let (Pair (es,fls) _ ,mesg) = evalStepsMessages steps-                    let allfs = files ++ fls-                    loopp stop cont (es,allfs,allfs,mesg)+          steps = parse pElemsFiles tokens+          stop (_,fs,_,_) = null fs+          cont (es,fs,allfs,msg)+            = do files <- mapM (resolveFile searchPath) fs+                 res <- mapM (parseFile opts searchPath) files+                 let (ess,fss,allfss, msgs) = unzip4 res+                 return (es ++ concat ess, concat fss, concat allfss ++ allfs, msg ++ concat msgs)+      let (Pair (es,fls) _ ,mesg) = evalStepsMessages steps+      let allfs = files ++ fls+      loopp stop cont (es,allfs,allfs,mesg)+ where+  +    --+    -- Option dependent AG Parsers inlined here+    -- to have access to the opts+    -- while retaining sharing+    --+    +    pElemsFiles :: AGParser ([Elem],[String])+    pElemsFiles = pFoldr (($),([],[])) pElem'+       where pElem' =  addElem <$> pElem+                   <|> pINCLUDE *> (addInc <$> pStringPos)+             addElem e      (es,fs) = (e:es,   fs)+             addInc  (fn,_) (es,fs) = (  es,fn:fs) +    pCodescrapL = (\(ValToken _ str pos) -> (str, pos))<$>+                        parseScrapL <?> "a code block"++    parseScrapL :: AGParser Token+    parseScrapL+               = let p acc =  (\k (Input pos str next) ->+                               let (sc,rest) = case next of+                                     Just (t@(ValToken TkTextln _ _), rs) -> (t,rs)+                                     _ -> let (tok,p2,inp2) = codescrapL pos str+                                          in (tok, input opts p2 inp2)+                                   steps   = k ( rest)+                               in  (val (acc sc)  steps)+                          )+                 in anaDynE  (mkPR (P (p  ), R (p (const id))))++    pElems :: AGParser Elems+    pElems = pList_ng pElem++    pComplexType =  List   <$> pBracks pTypeEncapsulated +               <|> Maybe  <$ pMAYBE <*> pType+               <|> Either <$ pEITHER <*> pType <*> pType+               <|> Map    <$ pMAP <*> pTypePrimitive <*> pType+               <|> IntMap <$ pINTMAP <*> pType+               <|> tuple  <$> pParens (pListSep pComma field)+      where field = (,) <$> ((Just <$> pIdentifier <* pTypeColon) `opt` Nothing) <*> pTypeEncapsulated+            tuple xs = Tuple [(fromMaybe (Ident ("x"++show n) noPos) f, t) +                             | (n,(f,t)) <- zip [1..] xs+                             ]++    pElem :: AGParser Elem+    pElem+         =  Data <$> pDATA+                 <*> pOptClassContext+                 <*> pNontSet+                 <*> pList pIdentifier+                 <*> pOptAttrs+                 <*> pAlts+                <*> pSucceed False+        <|> Attr <$> pATTR+                 <*> pOptClassContext+                 <*> pNontSet+                 <*> pAttrs+        <|> Type <$> pTYPE+                 <*> pOptClassContext+                 <*> pIdentifierU+                 <*> pList pIdentifier+                 <*  pEquals+                 <*> pComplexType+        <|> Sem  <$> pSEM+                 <*> pOptClassContext+                 <*> pNontSet+                 <*> pOptAttrs+                 <*> pSemAlts+        <|> Set  <$> pSET+                 <*> pIdentifierU+                 <*  pEquals+                 <*> pNontSet+        <|> Deriving+                 <$> pDERIVING+                 <*> pNontSet+                 <*  pColon+                 <*> pListSep pComma pIdentifierU+        <|> Wrapper+                 <$> pWRAPPER+                 <*> pNontSet+        <|> Pragma+                 <$> pPRAGMA+                 <*> pNames+        <|> Module+                 <$> pMODULE+                 <*> pCodescrap'+                 <*> pCodescrap'+                 <*> pCodescrap'+        <|> codeBlock <$> (pIdentifier <|> pSucceed (Ident "" noPos)) <*> ((Just <$ pATTACH <*> pIdentifierU) <|> pSucceed Nothing) <*> pCodeBlock <?> "a statement"+              where codeBlock nm mbNt (txt,pos) = Txt pos nm mbNt (lines txt)+++    pAttrs :: AGParser Attrs+    pAttrs+        = Attrs <$> pOBrackPos <*> (concat <$> pList pInhAttrNames <?> "inherited attribute declarations")+                                  <* pBar    <*> (concat <$> pList pAttrNames <?> "chained attribute declarations"  )+                                  <* pBar    <*> (concat <$> pList pAttrNames <?> "synthesised attribute declarations"  )+                   <*  pCBrack+           <|> (\ds -> Attrs (fst $ head ds) [n | (_,(nms,_,_)) <- ds, n <- nms] [n | (_,(_,nms,_)) <- ds, n <- nms] [n | (_,(_,_,nms)) <- ds, n <- nms]) <$> pList1 pSingleAttrDefs++    pSingleAttrDefs :: AGParser (Pos, (AttrNames, AttrNames, AttrNames))+    pSingleAttrDefs+      =    (\p is -> (p, (is,[],[]))) <$> pINH <*> pList1Sep pComma pSingleInhAttrDef+      <|>  (\p is -> (p, ([],[],is))) <$> pSYN <*> pList1Sep pComma pSingleSynAttrDef+      <|>  (\p is -> (p, ([],is,[]))) <$> pCHN <*> pList1Sep pComma pSingleChnAttrDef++    pSingleInhAttrDef :: AGParser (Identifier,Type,(String,String,String))+    pSingleInhAttrDef+      = (\v tp -> (v,tp,("","",""))) <$> pIdentifier <* pTypeColon <*> pType <?> "inh attribute declaration"++    pSingleSynAttrDef :: AGParser (Identifier,Type,(String,String,String))+    pSingleSynAttrDef+      = (\v u tp -> (v,tp,u)) <$> pIdentifier <*> pUse <* pTypeColon <*> pType <?> "syn attribute declaration"+      +    pSingleChnAttrDef :: AGParser (Identifier,Type,(String,String,String))+    pSingleChnAttrDef+      = (\v tp -> (v,tp,("","",""))) <$> pIdentifier <* pTypeColon <*> pType <?> "chn attribute declaration"++    pOptAttrs :: AGParser Attrs+    pOptAttrs = pAttrs `opt` Attrs noPos [] [] []++    pInhAttrNames :: AGParser AttrNames+    pInhAttrNames+                   = (\vs tp -> map (\v -> (v,tp,("","",""))) vs)+                      <$> pIdentifiers <*  pTypeColon <*> pType <?> "attribute declarations"++    pAttrNames :: AGParser AttrNames+    pAttrNames+             = (\vs use tp -> map (\v -> (v,tp,use)) vs)+                 <$> pIdentifiers <*> pUse <* pTypeColon <*> pType <?> "attribute declarations"++    pAlt :: AGParser Alt+    pAlt =  Alt <$> pBar <*> pSimpleConstructorSet <*> pFields <?> "a datatype alternative"++    pAlts :: AGParser Alts+    pAlts =  pList_ng pAlt <?> "datatype alternatives"++    pFields :: AGParser Fields+    pFields = concat <$> pList_ng pField <?> "fields"++    pField :: AGParser Fields+    pField+           =  (\nms tp -> map (flip (,) tp) nms)+              <$> pIdentifiers <* pTypeColon <*> pType+              <|> (\s -> [(Ident (mklower (getName s)) (getPos s) ,NT s [])]) <$> pIdentifierU++    pSemAlt :: AGParser SemAlt+    pSemAlt = SemAlt <$> pBar <*> pConstructorSet <*> pSemDefs <?> "SEM alternative"++    pSemAlts :: AGParser SemAlts+    pSemAlts =  pList pSemAlt <?> "SEM alternatives"++    pSemDef :: AGParser [SemDef]+    pSemDef+          =   (\x fs -> map ($ x) fs)<$> pFieldIdentifier <*> pList1 pAttrDef+          <|>                            pLOC              *> pList1 pLocDecl+          <|>                            pINST             *> pList1 pInstDecl+          <|>  pSEMPRAGMA *> pList1 (SemPragma <$> pNames)+          <|> (\n e -> [AugmentDef n e]) <$ pAugmentToken <*> pIdentifier <* pAssign <*> pExpr+          <|> (\n e -> [AroundDef n e]) <$ pAROUND <*> pIdentifier <* pAssign <*> pExpr+          <|> (\a b -> [AttrOrderBefore a [b]]) <$> pList1 pAttr <* pSmaller <*> pAttr+          <|> (\pat (owrt,pos) exp -> [Def pos (pat ()) exp owrt]) <$> pPattern (const <$> pAttr) <*> pAssignPos <*> pExpr++    pAttrDef :: AGParser (Identifier -> SemDef)+    pAttrDef+      = (\pat (owrt,pos) exp fld -> Def pos (pat fld) exp owrt)+               <$ pDot <*> pattern <*> pAssignPos <*> pExpr+      where pattern =  pPattern pVar+                   <|> (\ir a fld -> ir $ Alias fld a (Underscore noPos) []) <$> ((Irrefutable <$ pTilde) `opt` id) <*> pIdentifier++    pLocDecl :: AGParser SemDef+    pLocDecl = pDot <**> (pIdentifier <**> (pTypeColon <**> (   (\tp _ ident _  -> TypeDef ident tp) <$> pLocType+                                                            <|> (\ref _ ident _ -> UniqueDef ident ref) <$ pUNIQUEREF <*> pIdentifier )))+++    pInstDecl :: AGParser SemDef+    pInstDecl = (\ident tp -> TypeDef ident tp)+                  <$ pDot <*> pIdentifier <* pTypeColon <*> pTypeNt++    pSemDefs :: AGParser SemDefs+    pSemDefs =  concat <$> pList_ng pSemDef <?> "attribute rules"++    pExpr :: AGParser Expression+    pExpr = (\(str,pos) ->  Expression pos (lexTokens pos str)) <$> pCodescrapL <?> "an expression"++    pTypeColon :: AGParser Pos+    pTypeColon+      = if doubleColons opts+        then pDoubleColon+        else pColon++    --+    -- End of AG Parser+    --+ resolveFile :: [FilePath] -> FilePath -> IO FilePath resolveFile path fname = search (path ++ ["."])                                                    where search (p:ps) = do dExists <- doesDirectoryExist p@@ -89,29 +283,7 @@ loopp pred cont x | pred x = return x                   | otherwise = do x' <- cont x                                    loopp pred cont x'-                                  -pElemsFiles :: Options -> AGParser ([Elem],[String])-pElemsFiles opts = pFoldr (($),([],[])) pElem'-   where pElem' =  addElem <$> pElem opts-               <|> pINCLUDE *> (addInc <$> pStringPos)-         addElem e      (es,fs) = (e:es,   fs)-         addInc  (fn,_) (es,fs) = (  es,fn:fs) -pCodescrapL opts = (\(ValToken _ str pos) -> (str, pos))<$>-            parseScrapL opts  <?> "a code block"--parseScrapL :: Options -> AGParser Token-parseScrapL opts-            = let p acc =  (\k (Input pos str next) ->-                            let (sc,rest) = case next of-                                  Just (t@(ValToken TkTextln _ _), rs) -> (t,rs)-                                  _ -> let (tok,p2,inp2) = codescrapL pos str-                                       in (tok, input opts p2 inp2)-                                steps   = k ( rest)-                            in  (val (acc sc)  steps)-                       )-              in anaDynE  (mkPR (P (p  ), R (p (const id))))- codescrapL p []                 = (valueToken TkTextln "" p,p,[]) codescrapL p (x:xs) | isSpace x = (updPos'  x p)  codescrapL xs                     | otherwise = let refcol = column p@@ -135,75 +307,13 @@ pNames :: AGParser [Identifier] pNames = pList1 pIdentifier --- pAG  :: Options -> AGParser AG--- pAG opts = AG <$> pElems opts -pElems :: Options -> AGParser Elems-pElems opts = pList_ng (pElem opts) -pComplexType opts =  List   <$> pBracks pTypeEncapsulated -            <|> Maybe  <$ pMAYBE <*> pType-            <|> Either <$ pEITHER <*> pType <*> pType-            <|> Map    <$ pMAP <*> pTypePrimitive <*> pType-            <|> IntMap <$ pINTMAP <*> pType-            <|> tuple  <$> pParens (pListSep pComma field)- where field = (,) <$> ((Just <$> pIdentifier <* pTypeColon opts) `opt` Nothing) <*> pTypeEncapsulated-       tuple xs = Tuple [(fromMaybe (Ident ("x"++show n) noPos) f, t) -                        | (n,(f,t)) <- zip [1..] xs-                        ]-pElem :: Options -> AGParser Elem-pElem opts-      =  Data <$> pDATA-              <*> pOptClassContext-              <*> pNontSet-              <*> pList pIdentifier-              <*> pOptAttrs opts-              <*> pAlts opts-             <*> pSucceed False-     <|> Attr <$> pATTR-              <*> pOptClassContext-              <*> pNontSet-              <*> pAttrs opts-     <|> Type <$> pTYPE-              <*> pOptClassContext-              <*> pIdentifierU-              <*> pList pIdentifier-              <*  pEquals-              <*> pComplexType opts-     <|> Sem  <$> pSEM-              <*> pOptClassContext-              <*> pNontSet-              <*> pOptAttrs opts-              <*> pSemAlts opts-     <|> Set  <$> pSET-              <*> pIdentifierU-              <*  pEquals-              <*> pNontSet-     <|> Deriving-              <$> pDERIVING-              <*> pNontSet-              <*  pColon-              <*> pListSep pComma pIdentifierU-     <|> Wrapper-              <$> pWRAPPER-              <*> pNontSet-     <|> Pragma-              <$> pPRAGMA-              <*> pNames-     <|> Module-              <$> pMODULE-              <*> pCodescrap'-              <*> pCodescrap'-              <*> pCodescrap'-     <|> codeBlock <$> (pIdentifier <|> pSucceed (Ident "" noPos)) <*> ((Just <$ pATTACH <*> pIdentifierU) <|> pSucceed Nothing) <*> pCodeBlock <?> "a statement"-           where codeBlock nm mbNt (txt,pos) = Txt pos nm mbNt (lines txt) - -- Insertion is expensive for pCodeBlock in order to prevent infinite inserts. pCodeBlock ::  AGParser (String,Pos) pCodeBlock   = pCostValToken 90 TkTextln "" <?> "a code block" - pOptClassContext :: AGParser ClassContext pOptClassContext   =   pClassContext <* pDoubleArrow@@ -213,30 +323,6 @@ pClassContext   = pListSep pComma ((,) <$> pIdentifierU <*> pList pTypeHaskellAnyAsString) -pAttrs :: Options -> AGParser Attrs-pAttrs opts-    = Attrs <$> pOBrackPos <*> (concat <$> pList (pInhAttrNames opts) <?> "inherited attribute declarations")-                              <* pBar    <*> (concat <$> pList (pAttrNames opts) <?> "chained attribute declarations"  )-                              <* pBar    <*> (concat <$> pList (pAttrNames opts) <?> "synthesised attribute declarations"  )-               <*  pCBrack-       <|> (\ds -> Attrs (fst $ head ds) [n | (_,Left nms) <- ds, n <- nms] [] [n | (_,Right nms) <- ds, n <- nms]) <$> pList1 (pSingleAttrDefs opts)--pSingleAttrDefs :: Options -> AGParser (Pos, Either AttrNames AttrNames)-pSingleAttrDefs opts-  =    (\p is -> (p, Left is))  <$> pINH <*> pList1Sep pComma (pSingleInhAttrDef opts)-  <|>  (\p is -> (p, Right is)) <$> pSYN <*> pList1Sep pComma (pSingleSynAttrDef opts)--pSingleInhAttrDef :: Options -> AGParser (Identifier,Type,(String,String,String))-pSingleInhAttrDef opts-  = (\v tp -> (v,tp,("","",""))) <$> pIdentifier <* pTypeColon opts <*> pType <?> "inh attribute declaration"--pSingleSynAttrDef :: Options -> AGParser (Identifier,Type,(String,String,String))-pSingleSynAttrDef opts-  = (\v u tp -> (v,tp,u)) <$> pIdentifier <*> pUse <* pTypeColon opts <*> pType <?> "syn attribute declaration"--pOptAttrs :: Options -> AGParser Attrs-pOptAttrs opts = pAttrs opts `opt` Attrs noPos [] [] []- pTypeNt :: AGParser Type pTypeNt   =   ((\nt -> NT nt []) <$> pIdentifierU <?> "nonterminal name (no brackets)")@@ -264,46 +350,16 @@ pType =  pTypeNt      <|> pTypePrimitive --pInhAttrNames :: Options -> AGParser AttrNames-pInhAttrNames opts-               = (\vs tp -> map (\v -> (v,tp,("","",""))) vs)-                  <$> pIdentifiers <*  pTypeColon opts <*> pType <?> "attribute declarations"- pIdentifiers :: AGParser [Identifier] pIdentifiers =  pList1Sep pComma pIdentifier <?> "lowercase identifiers" --pAttrNames :: Options -> AGParser AttrNames-pAttrNames opts -         = (\vs use tp -> map (\v -> (v,tp,use)) vs)-             <$> pIdentifiers <*> pUse <* pTypeColon opts <*> pType <?> "attribute declarations"- pUse :: AGParser (String,String,String) pUse = (  (\u x y->(x,y,show u)) <$> pUSE <*> pCodescrap'  <*> pCodescrap')` opt` ("","","") <?> "USE declaration" -pAlt :: Options -> AGParser Alt-pAlt opts =  Alt <$> pBar <*> pSimpleConstructorSet <*> pFields opts <?> "a datatype alternative"--pAlts :: Options -> AGParser Alts-pAlts opts =  pList_ng (pAlt opts) <?> "datatype alternatives"--pFields    :: Options -> AGParser Fields-pFields opts = concat <$> pList_ng (pField opts) <?> "fields"--pField     :: Options -> AGParser Fields-pField opts-        =  (\nms tp -> map (flip (,) tp) nms)-           <$> pIdentifiers <* pTypeColon opts <*> pType-           <|> (\s -> [(Ident (mklower (getName s)) (getPos s) ,NT s [])]) <$> pIdentifierU- mklower :: String -> String mklower (x:xs) = toLower x : xs mklower []     = [] -pSemAlt :: Options -> AGParser SemAlt-pSemAlt opts = SemAlt <$> pBar <*> pConstructorSet <*> pSemDefs opts <?> "SEM alternative"- pSimpleConstructorSet :: AGParser ConstructorSet pSimpleConstructorSet =  CName <$> pIdentifierU                      <|> CAll  <$  pStar@@ -314,74 +370,37 @@   where term2 =  pChainr (pSucceed CUnion) term1         term1 =  CName <$> pIdentifierU              <|> CAll  <$  pStar-                -pSemAlts :: Options -> AGParser SemAlts-pSemAlts opts =  pList (pSemAlt opts) <?> "SEM alternatives"- pFieldIdentifier :: AGParser Identifier pFieldIdentifier =  pIdentifier                 <|> Ident "lhs"  <$> pLHS                 <|> Ident "loc"  <$> pLOC                 <|> Ident "inst" <$> pINST -pSemDef :: Options -> AGParser [SemDef]-pSemDef opts-      =   (\x fs -> map ($ x) fs)<$> pFieldIdentifier <*> pList1 (pAttrDef opts)-      <|>                            pLOC              *> pList1 (pLocDecl opts)-      <|>                            pINST             *> pList1 (pInstDecl opts)-      <|>  pSEMPRAGMA *> pList1 (SemPragma <$> pNames)-      <|> (\n e -> [AugmentDef n e]) <$ pAugmentToken <*> pIdentifier <* pAssign <*> pExpr opts-      <|> (\n e -> [AroundDef n e]) <$ pAROUND <*> pIdentifier <* pAssign <*> pExpr opts-      <|> (\a b -> [AttrOrderBefore a [b]]) <$> pList1 pAttr <* pSmaller <*> pAttr-      <|> (\pat owrt exp -> [Def (pat ()) exp owrt]) <$> pPattern (const <$> pAttr) <*> pAssign <*> pExpr opts- pAugmentToken :: AGParser () pAugmentToken = () <$ (pAUGMENT <|> pPlus)  pAttr = (,) <$> pFieldIdentifier <* pDot <*> pIdentifier- -pAttrDef :: Options -> AGParser (Identifier -> SemDef)-pAttrDef opts-  = (\pat owrt exp fld -> Def (pat fld) exp owrt)-           <$ pDot <*> pattern <*> pAssign <*> pExpr opts-  where pattern =  pPattern pVar-               <|> (\ir a fld -> ir $ Alias fld a (Underscore noPos) []) <$> ((Irrefutable <$ pTilde) `opt` id) <*> pIdentifier - nl2sp :: Char -> Char nl2sp '\n' = ' ' nl2sp '\r' = ' ' nl2sp x = x -pLocDecl :: Options -> AGParser SemDef-pLocDecl opts = pDot <**> (pIdentifier <**> (pTypeColon opts <**> (   (\tp _ ident _  -> TypeDef ident tp) <$> pLocType-                                                                  <|> (\ref _ ident _ -> UniqueDef ident ref) <$ pUNIQUEREF <*> pIdentifier )))- pLocType = (Haskell . getName) <$> pIdentifierU        <|> Haskell <$> pCodescrap'  <?> "a type" -pInstDecl :: Options -> AGParser SemDef-pInstDecl opts = (\ident tp -> TypeDef ident tp)-                  <$ pDot <*> pIdentifier <* pTypeColon opts <*> pTypeNt--pSemDefs :: Options -> AGParser SemDefs-pSemDefs opts =  concat <$> pList_ng (pSemDef opts) <?> "attribute rules"- pVar :: AGParser (Identifier -> (Identifier, Identifier)) pVar = (\att fld -> (fld,att)) <$> pIdentifier - -pExpr :: Options -> AGParser Expression-pExpr opts = (\(str,pos) ->  Expression pos (lexTokens pos str)) <$> pCodescrapL opts <?> "an expression"- pAssign :: AGParser Bool pAssign =  False <$ pReserved "="        <|> True  <$ pReserved ":="-       --- pAttrDefs :: Options -> AGParser (Identifier -> [SemDef])--- pAttrDefs opts = (\fs field -> map ($ field) fs) <$> pList1 (pAttrDef opts) <?> "attribute definitions" +pAssignPos :: AGParser (Bool, Pos)+pAssignPos  =   (\p -> (False,p)) <$> pReserved "="+            <|> (\p -> (True,p))  <$> pReserved ":="+ pPattern :: AGParser (a -> (Identifier,Identifier)) -> AGParser (a -> Pattern) pPattern pvar = pPattern2 where   pPattern0 =  (\i pats a -> Constr i (map ($ a) pats))@@ -404,13 +423,6 @@ pCodescrap ::  AGParser (String,Pos) pCodescrap   = pCodeBlock -pTypeColon :: Options -> AGParser Pos-pTypeColon opts-  = if doubleColons opts-    then pDoubleColon-    else pColon-- pSEM, pATTR, pDATA, pUSE, pLOC,pINCLUDE, pTYPE, pEquals, pColonEquals, pTilde,       pBar, pColon, pLHS,pINST,pSET,pDERIVING,pMinus,pIntersect,pDoubleArrow,pArrow,       pDot, pUScore, pEXT,pAt,pStar, pSmaller, pWRAPPER, pPRAGMA, pMAYBE, pEITHER, pMAP, pINTMAP,@@ -430,6 +442,7 @@ pTYPE        = pCostReserved 90 "TYPE"    <?> "TYPE" pINH         = pCostReserved 90 "INH"     <?> "INH" pSYN         = pCostReserved 90 "SYN"     <?> "SYN"+pCHN         = pCostReserved 90 "CHN"     <?> "CHN" pMAYBE       = pCostReserved 5  "MAYBE"   <?> "MAYBE" pEITHER      = pCostReserved 5  "EITHER"  <?> "EITHER" pMAP         = pCostReserved 5  "MAP"     <?> "MAP"
src/Scanner.hs view
@@ -132,7 +132,7 @@ keywords = lowercaseKeywords ++
            [ "DATA", "EXT", "ATTR", "SEM","TYPE", "USE", "INCLUDE"
            , "SET","DERIVING","FOR", "WRAPPER", "MAYBE", "EITHER", "MAP", "INTMAP"
-           , "PRAGMA", "SEMPRAGMA", "MODULE", "ATTACH", "UNIQUEREF", "INH", "SYN"
+           , "PRAGMA", "SEMPRAGMA", "MODULE", "ATTACH", "UNIQUEREF", "INH", "SYN", "CHN"
            , "AUGMENT", "AROUND"
            ]
 
src/Version.hs view
@@ -1,4 +1,4 @@ module Version where
 
 banner :: String
-banner = "Attribute Grammar compiler / HUT project. Version 0.9.20"
+banner = "Attribute Grammar compiler / HUT project. Version 0.9.21"
uuagc.cabal view
@@ -1,7 +1,7 @@ cabal-version: >=1.2 build-type: Simple name: uuagc-version: 0.9.20+version: 0.9.21 license: GPL license-file: LICENSE maintainer: Arie Middelkoop <ariem@cs.uu.nl>
uuagc.cabal-for-ghc-6.6 view
@@ -1,5 +1,5 @@ name: uuagc-version: 0.9.20+version: 0.9.21 license: GPL license-file: LICENSE maintainer: Arie Middelkoop <ariem@cs.uu.nl>