CSPM-Frontend 0.9.0.6 → 0.9.2.0
raw patch · 7 files changed
+124/−102 lines, 7 filesdep +dlistdep +eitherdep +filepathdep ~containersdep ~ghc-primdep ~sybPVP ok
version bump matches the API change (PVP)
Dependencies added: dlist, either, filepath, transformers
Dependency ranges changed: containers, ghc-prim, syb
API changes (from Hackage documentation)
+ Language.CSPM.Frontend: lexIncludePath :: FilePath -> String -> IO (Either LexError [Token])
+ Language.CSPM.LexHelper: instance Show FilePart
+ Language.CSPM.LexHelper: lexIncludePath :: FilePath -> String -> IO (Either LexError [Token])
Files
- CSPM-Frontend.cabal +13/−8
- dist/build/Language/CSPM/Lexer.hs +26/−57
- src/Language/CSPM/AST.hs +1/−2
- src/Language/CSPM/Frontend.hs +2/−1
- src/Language/CSPM/LexHelper.hs +78/−30
- src/Language/CSPM/Parser.hs +1/−1
- src/Language/CSPM/Utils.hs +3/−3
CSPM-Frontend.cabal view
@@ -1,5 +1,5 @@ Name: CSPM-Frontend-Version: 0.9.0.6+Version: 0.9.2.0 Synopsis: A CSP-M parser compatible with FDR-2.91 @@ -13,10 +13,10 @@ License: BSD3 category: Language,Formal Methods,Concurrency License-File: LICENSE-Author: Marc Fontaine 2007 - 2012-Maintainer: Marc Fontaine <Marc.Fontaine@gmx.de>, me@dobrikov.biz+Author: Marc Fontaine 2007 - 2013+Maintainer: Marc Fontaine <Marc.Fontaine@gmx.de>, Ivaylo Dobrikov <dobrikov84@yahoo.com> Stability: maintained-Tested-With: GHC == 7.4.1+Tested-With: GHC == 7.6.3 cabal-Version: >= 1.14 build-type: Simple@@ -24,15 +24,20 @@ library Build-Depends: base >=4.0 && < 5.0- ,containers >= 0.4 && < 0.5+ ,containers >= 0.5 && < 0.6 ,array >= 0.4 && < 0.5 ,parsec2 >= 1.0.0 && < 1.1.0 ,prettyclass >= 1.0 && < 1.1 ,mtl >= 2.1 && < 2.2- ,syb >= 0.3 && < 0.4- ,ghc-prim >=0.2 && < 0.3+ ,either >= 3.4 && < 3.5+ ,transformers >= 0.3 && < 0.4+ ,dlist >= 0.5 && < 0.6+ ,syb >= 0.4 && < 0.5+ ,ghc-prim >=0.3 && < 0.4+ ,filepath >=1.3+ Default-Language: Haskell2010- Other-Extensions: + Other-Extensions: DeriveDataTypeable -- ,DeriveGeneric GHC-Options: -funbox-strict-fields -O2 -Wall
dist/build/Language/CSPM/Lexer.hs view
@@ -47,7 +47,7 @@ alex_deflt :: AlexAddr alex_deflt = AlexA# "\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\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\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x3f\x00\xff\xff\xff\xff\x48\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x00\xcc\x00\xcc\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\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\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\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\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\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\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\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\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\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\xff\xff\xcc\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\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\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\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\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\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\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\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\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\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\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\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\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"# -alex_accept = listArray (0::Int,373) [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_0))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_57))],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_61))],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[(AlexAcc (alex_action_65))],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_69))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_76))],[(AlexAcc (alex_action_77))],[(AlexAcc (alex_action_78))],[(AlexAcc (alex_action_79))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_84))],[(AlexAcc (alex_action_85))],[(AlexAcc (alex_action_86))],[(AlexAcc (alex_action_87))],[(AlexAcc (alex_action_88))],[(AlexAcc (alex_action_89))],[(AlexAcc (alex_action_90))],[(AlexAcc (alex_action_91))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_95))],[(AlexAcc (alex_action_96))],[(AlexAcc (alex_action_97))],[(AlexAcc (alex_action_98))],[(AlexAcc (alex_action_99))],[(AlexAcc (alex_action_100))],[(AlexAcc (alex_action_101))],[(AlexAcc (alex_action_102))],[(AlexAcc (alex_action_103))],[(AlexAcc (alex_action_104))],[(AlexAcc (alex_action_105))],[(AlexAcc (alex_action_106))],[(AlexAcc (alex_action_107))],[(AlexAcc (alex_action_108))],[(AlexAcc (alex_action_109))],[(AlexAcc (alex_action_110))],[(AlexAcc (alex_action_111))],[(AlexAcc (alex_action_112))],[(AlexAcc (alex_action_113))],[(AlexAcc (alex_action_114))],[(AlexAcc (alex_action_115))],[(AlexAcc (alex_action_116))],[(AlexAcc (alex_action_117))],[(AlexAcc (alex_action_118))],[(AlexAcc (alex_action_119))],[(AlexAcc (alex_action_120))],[(AlexAcc (alex_action_121))],[(AlexAcc (alex_action_122))],[(AlexAcc (alex_action_123))],[(AlexAcc (alex_action_124))],[(AlexAcc (alex_action_125))],[(AlexAcc (alex_action_126))],[(AlexAcc (alex_action_127))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_130))],[(AlexAcc (alex_action_131))],[(AlexAcc (alex_action_132))],[(AlexAcc (alex_action_133))],[(AlexAcc (alex_action_134))],[(AlexAcc (alex_action_135))],[(AlexAcc (alex_action_136))],[(AlexAcc (alex_action_137))],[(AlexAcc (alex_action_138))],[(AlexAcc (alex_action_139))],[(AlexAcc (alex_action_140))],[(AlexAcc (alex_action_141))],[(AlexAcc (alex_action_142))],[(AlexAcc (alex_action_143))],[(AlexAcc (alex_action_144))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))]]+alex_accept = listArray (0::Int,373) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAcc (alex_action_0),AlexAcc (alex_action_1),AlexAcc (alex_action_2),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAcc (alex_action_65),AlexAcc (alex_action_66),AlexAcc (alex_action_67),AlexAcc (alex_action_68),AlexAcc (alex_action_69),AlexAcc (alex_action_70),AlexAcc (alex_action_71),AlexAcc (alex_action_72),AlexAcc (alex_action_73),AlexAcc (alex_action_74),AlexAcc (alex_action_75),AlexAcc (alex_action_76),AlexAcc (alex_action_77),AlexAcc (alex_action_78),AlexAcc (alex_action_79),AlexAcc (alex_action_80),AlexAcc (alex_action_81),AlexAcc (alex_action_82),AlexAcc (alex_action_83),AlexAcc (alex_action_84),AlexAcc (alex_action_85),AlexAcc (alex_action_86),AlexAcc (alex_action_87),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAcc (alex_action_91),AlexAcc (alex_action_92),AlexAcc (alex_action_93),AlexAcc (alex_action_94),AlexAcc (alex_action_95),AlexAcc (alex_action_96),AlexAcc (alex_action_97),AlexAcc (alex_action_98),AlexAcc (alex_action_99),AlexAcc (alex_action_100),AlexAcc (alex_action_101),AlexAcc (alex_action_102),AlexAcc (alex_action_103),AlexAcc (alex_action_104),AlexAcc (alex_action_105),AlexAcc (alex_action_106),AlexAcc (alex_action_107),AlexAcc (alex_action_108),AlexAcc (alex_action_109),AlexAcc (alex_action_110),AlexAcc (alex_action_111),AlexAcc (alex_action_112),AlexAcc (alex_action_113),AlexAcc (alex_action_114),AlexAcc (alex_action_115),AlexAcc (alex_action_116),AlexAcc (alex_action_117),AlexAcc (alex_action_118),AlexAcc (alex_action_119),AlexAcc (alex_action_120),AlexAcc (alex_action_121),AlexAcc (alex_action_122),AlexAcc (alex_action_123),AlexAcc (alex_action_124),AlexAcc (alex_action_125),AlexAcc (alex_action_126),AlexAcc (alex_action_127),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_129),AlexAcc (alex_action_129),AlexAcc (alex_action_129),AlexAcc (alex_action_129),AlexAcc (alex_action_130),AlexAcc (alex_action_131),AlexAcc (alex_action_132),AlexAcc (alex_action_133),AlexAcc (alex_action_134),AlexAcc (alex_action_135),AlexAcc (alex_action_136),AlexAcc (alex_action_137),AlexAcc (alex_action_138),AlexAcc (alex_action_139),AlexAcc (alex_action_140),AlexAcc (alex_action_141),AlexAcc (alex_action_142),AlexAcc (alex_action_143),AlexAcc (alex_action_144),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145)] {-# LINE 218 "src/Language/CSPM/Lexer.x" #-} alexMonadScan = do@@ -232,8 +232,8 @@ alex_action_145 = skip {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<eingebaut>" #-}-{-# LINE 1 "<Kommandozeile>" #-}+{-# LINE 1 "<built-in>" #-}+{-# LINE 1 "<command-line>" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- ----------------------------------------------------------------------------- -- ALEX TEMPLATE@@ -244,9 +244,9 @@ -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine -{-# LINE 37 "templates/GenericTemplate.hs" #-}+{-# LINE 35 "templates/GenericTemplate.hs" #-} -{-# LINE 47 "templates/GenericTemplate.hs" #-}+{-# LINE 45 "templates/GenericTemplate.hs" #-} data AlexAddr = AlexA# Addr#@@ -277,14 +277,14 @@ #ifdef WORDS_BIGENDIAN narrow32Int# i where- !i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`+ i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#` (b2 `uncheckedShiftL#` 16#) `or#` (b1 `uncheckedShiftL#` 8#) `or#` b0)- !b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))- !b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))- !b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- !b0 = int2Word# (ord# (indexCharOffAddr# arr off'))- !off' = off *# 4#+ b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))+ b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))+ b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))+ b0 = int2Word# (ord# (indexCharOffAddr# arr off'))+ off' = off *# 4# #else indexInt32OffAddr# arr off #endif@@ -359,35 +359,29 @@ - let- (base) = alexIndexInt32OffAddr alex_base s- ((I# (ord_c))) = fromIntegral c- (offset) = (base +# ord_c)- (check) = alexIndexInt16OffAddr alex_check offset+ case fromIntegral c of { (I# (ord_c)) ->+ let+ base = alexIndexInt32OffAddr alex_base s+ offset = (base +# ord_c)+ check = alexIndexInt16OffAddr alex_check offset - (new_s) = if (offset >=# 0#) && (check ==# ord_c)+ new_s = if (offset >=# 0#) && (check ==# ord_c) then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in- case new_s of + case new_s of -1# -> (new_acc, input) -- on an error, we want to keep the input *before* the -- character that failed, not after. _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len) -- note that the length is increased ONLY if this is the 1st byte in a char encoding) new_input new_s new_acc-+ } where- check_accs [] = last_acc- check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))- check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len))- check_accs (AlexAccPred a predx : rest)- | predx user orig_input (I# (len)) input- = AlexLastAcc a input (I# (len))- check_accs (AlexAccSkipPred predx : rest)- | predx user orig_input (I# (len)) input- = AlexLastSkip input (I# (len))- check_accs (_ : rest) = check_accs rest+ check_accs (AlexAccNone) = last_acc+ check_accs (AlexAcc a ) = AlexLastAcc a input (I# (len))+ check_accs (AlexAccSkip) = AlexLastSkip input (I# (len))+{-# LINE 191 "templates/GenericTemplate.hs" #-} data AlexLastAcc a = AlexNone@@ -400,35 +394,10 @@ fmap f (AlexLastSkip x y) = AlexLastSkip x y data AlexAcc a user- = AlexAcc a+ = AlexAccNone+ | AlexAcc a | AlexAccSkip- | AlexAccPred a (AlexAccPred user)- | AlexAccSkipPred (AlexAccPred user)--type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool---- -------------------------------------------------------------------------------- Predicates on a rule--alexAndPred p1 p2 user in1 len in2- = p1 user in1 len in2 && p2 user in1 len in2----alexPrevCharIsPred :: Char -> AlexAccPred _ -alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input--alexPrevCharMatches f _ input _ _ = f (alexInputPrevChar input)----alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ -alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input----alexRightContext :: Int -> AlexAccPred _-alexRightContext (I# (sc)) user _ _ input = - case alex_scan_tkn user input 0# input sc AlexNone of- (AlexNone, _) -> False- _ -> True- -- TODO: there's no need to find the longest- -- match when checking the right context, just- -- the first match will do.+{-# LINE 235 "templates/GenericTemplate.hs" #-} -- used by wrappers iUnbox (I# (i)) = i
src/Language/CSPM/AST.hs view
@@ -1,7 +1,7 @@ ---------------------------------------------------------------------------- -- | -- Module : Language.CSPM.AST--- Copyright : (c) Fontaine 2008 - 2012+-- Copyright : (c) Fontaine 2008 - 2013 -- License : BSD3 -- -- Maintainer : Fontaine@cs.uni-duesseldorf.de@@ -24,7 +24,6 @@ import Data.Typeable (Typeable) import Data.Generics.Basics (Data) import GHC.Generics (Generic)-import Data.Generics.Instances () import Data.IntMap (IntMap) import Data.Map (Map) import Data.Array.IArray
src/Language/CSPM/Frontend.hs view
@@ -30,6 +30,7 @@ -- Language.CSPM.LexHelper ,Lexer.lexInclude+ ,Lexer.lexIncludePath ,Lexer.lexPlain ,Lexer.removeIgnoredToken @@ -70,7 +71,7 @@ (removeSourceLocations,removeParens ,unUniqueIdent , computeFreeNames, setNodeIdsZero) import qualified Language.CSPM.LexHelper as Lexer- (lexInclude, lexPlain, removeIgnoredToken)+ (lexInclude, lexIncludePath, lexPlain, removeIgnoredToken) import Language.CSPM.PrettyPrinter () import Language.CSPM.Utils (eitherToExc, handleLexError, handleParseError, handleRenameError
src/Language/CSPM/LexHelper.hs view
@@ -2,6 +2,7 @@ module Language.CSPM.LexHelper ( lexInclude+ ,lexIncludePath ,lexPlain ,removeIgnoredToken ,tokenIsComment@@ -14,8 +15,13 @@ import Language.CSPM.Token (Token(..), LexError(..)) import Language.CSPM.TokenClasses (PrimToken(..)) import Language.CSPM.UnicodeSymbols (lookupDefaultSymbol)+import Control.Monad.IO.Class import qualified Data.Set as Set +import qualified Data.DList as DList+import Control.Monad.Trans.Either+import System.FilePath(isAbsolute,splitDirectories,normalise,joinPath)+ -- | lex a String . lexPlain :: String -> Either LexError [Token] lexPlain src = fmap reverse $ Lexer.scanner src@@ -36,41 +42,65 @@ Just (_, symbol) -> symbol Nothing -> tokenString token --- | lex a String and process CSP-M include statements.+type Chunk = [Token]+type Chunks = DList.DList Chunk+data FilePart+ = Toks Chunk+ | Include FilePath+ deriving Show++-- | lex input-string and import all includes files lexInclude :: String -> IO (Either LexError [Token])-lexInclude src = do- case Lexer.scanner src of- Left err -> return $ Left err- Right toks -> do- tokenIncl <- processIncludeAndReverse toks- case tokenIncl of- Left err -> return $ Left err- Right t -> return $ Right t+lexInclude input+ = lexIncludePath "" input --- | Monsterfunction : todo refactor-processIncludeAndReverse :: [Token] -> IO (Either LexError [Token] )-processIncludeAndReverse tokens = picl_acc tokens []- where - picl_acc ::[Token] ->[Token] -> IO (Either LexError [Token] )- picl_acc [] acc = return $ Right acc- picl_acc ((Token _ _ _ L_String fname) : (Token _ _ _ L_Include _) :trest) acc = do- let fileName = reverse $ tail $ reverse $ tail fname -- remove quotes- -- putStrLn $ "Including file : " ++ fileName- input <-readFile fileName- case Lexer.scanner input of- Right toks -> do- new_acc <- picl_acc toks acc- case new_acc of- Right t -> picl_acc trest t- e -> return e- Left e -> return $ Left e- picl_acc ((incl@(Token _ _ _ L_Include _)) : _) _ = - return $ Left $ LexError {+-- | lex input-string and import all includes files+lexIncludePath :: FilePath -> String -> IO (Either LexError [Token])+lexIncludePath srcName input+ = eitherT (return . Left) (return . Right . concat . DList.toList) $ lexInclude2 srcName input++lexInclude2 :: FilePath -> String -> EitherT LexError IO Chunks+lexInclude2 srcName input = do+ hoistEither $ lexPlain input+ >>= hoistEither . splitIncludes []+ >>= mapM (processPart srcName)+ >>= return . DList.concat++processPart :: FilePath -> FilePart -> EitherT LexError IO Chunks+processPart srcName part = case part of+ Toks ch -> return $ DList.singleton $ ch+ Include fname -> (liftIO $ readFile absolutePath) >>= lexInclude2 absolutePath+ where+ absolutePath = getAbsoluteIncludeFileName srcName fname ++-- | micro-parser for include-statements+splitIncludes :: [Token] -> [Token] -> Either LexError [FilePart]+splitIncludes acc [] = return [Toks $ reverse acc]+splitIncludes acc (h:rest) = case h of+ tok@(Token _ _ _ L_Include _) -> do+ r <- scanInclude tok rest+ return $ (Toks $ reverse acc) : r+ _ -> splitIncludes (h:acc) rest++scanInclude :: Token -> [Token] -> Either LexError [FilePart]+scanInclude incl (h:rest) = case h of+ Token _ _ _ T_WhiteSpace _ -> scanInclude incl rest+ Token _ _ _ L_String fname -> do+ r <- splitIncludes [] rest+ let fileName = reverse $ tail $ reverse $ tail fname -- remove quotes+ return $ (Include fileName) : r+ _ -> Left $ LexError { lexEPos = tokenStart incl- ,lexEMsg = "Include without filename" + ,lexEMsg = "Include without filename" }- picl_acc (h:rest) acc = picl_acc rest $ h:acc ++scanInclude incl _ = Left $ LexError {+ lexEPos = tokenStart incl+ ,lexEMsg = "Include without filename at end of file"+ }++ -- | Remove comments, whitespaces and unneeded newlines. removeIgnoredToken :: [Token] -> [Token] removeIgnoredToken = soakNewlines . removeComments@@ -126,3 +156,21 @@ ++ binaryOperators) consumeNLAfterToken = Set.fromList ( [T_openParen, T_openBrace, T_lt] ++ binaryOperators)++-- Helper function for determining the absolute path of an include file name.+-- getAbsoluteIncludeFileName makes it possible to include other CSP modules by +-- giving the file path locally w.r.t. the current file path of the CSP module,+-- which includes the particular CSP modules.+getAbsoluteIncludeFileName :: FilePath -> FilePath -> FilePath+getAbsoluteIncludeFileName srcFileName inclFileName = + case isAbsolute inclFileName of + True -> inclFileName + False -> joinPath $ (+ take ((length srcDirSequence)-(countBackDirs fileDirSequence)) srcDirSequence + ++ (removeBackDirs fileDirSequence))+ where+ fileDirSequence = splitDirectories $ normalise inclFileName+ srcDirSequence = init $ splitDirectories $ normalise srcFileName+ countBackDirs = length . filter (".." ==) + removeBackDirs = dropWhile (".." == )+
src/Language/CSPM/Parser.hs view
@@ -504,6 +504,7 @@ ,[ infixM proc_op_lparallel AssocLeft ] ,[infixM procOpSharing AssocLeft ]+ ,[infixM (nfun2 T_backslash F_Hiding ) AssocLeft] ,[infixM (nfun2 T_amp F_Guard ) AssocLeft] ,[infixM (nfun2 T_semicolon F_Sequential ) AssocLeft] ,[infixM (nfun2 T_triangle F_Interrupt ) AssocLeft]@@ -512,7 +513,6 @@ ,[infixM (nfun2 T_sqcap F_IntChoice ) AssocLeft] ,[infixM procOpException AssocLeft] ,[infixM (nfun2 T_interleave F_Interleave ) AssocLeft]- ,[infixM (nfun2 T_backslash F_Hiding ) AssocLeft] ] ) where
src/Language/CSPM/Utils.hs view
@@ -22,7 +22,7 @@ import Language.CSPM.Rename (RenameError(..), renameModule, ModuleFromRenaming) import Language.CSPM.Token (LexError(..)) import Language.CSPM.AST (ModuleFromParser)-import qualified Language.CSPM.LexHelper as Lexer (lexInclude)+import qualified Language.CSPM.LexHelper as Lexer (lexIncludePath) import Control.Exception as Exception import System.CPUTime@@ -56,7 +56,7 @@ parseNamedString :: FilePath -> String -> IO ModuleFromParser parseNamedString name str = do- tokenList <- Lexer.lexInclude str >>= eitherToExc+ tokenList <- Lexer.lexIncludePath name str >>= eitherToExc eitherToExc $ parse name tokenList -- | Lex and parse File.@@ -67,7 +67,7 @@ putStrLn $ "Reading File " ++ fileName startTime <- (return $ length src) >> getCPUTime- tokenList <- Lexer.lexInclude src >>= eitherToExc+ tokenList <- Lexer.lexIncludePath fileName src >>= eitherToExc time_have_tokens <- getCPUTime ast <- eitherToExc $ parse fileName tokenList