packages feed

ogma-language-fret-cs 1.0.9 → 1.0.10

raw patch · 4 files changed

+44/−10 lines, 4 filesdep ~ogma-extradep ~ogma-language-cocospecdep ~ogma-language-smv

Dependency ranges changed: ogma-extra, ogma-language-cocospec, ogma-language-smv

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for ogma-language-fret-cs +## [1.0.10] - 2023-07-21++* Version bump 1.0.10 (#98).+* Improve parsing error messages (#96).+ ## [1.0.9] - 2023-05-21  * Version bump 1.0.9 (#93).
ogma-language-fret-cs.cabal view
@@ -32,7 +32,7 @@ build-type:          Simple  name:                ogma-language-fret-cs-version:             1.0.9+version:             1.0.10 homepage:            http://nasa.gov license:             OtherLicense license-file:        LICENSE.pdf@@ -68,8 +68,8 @@       base                   >= 4.11.0.0 && < 5     , aeson                  >= 2.0.0.0  && < 2.2 -    , ogma-language-cocospec >= 1.0.9 && < 1.1-    , ogma-language-smv      >= 1.0.9 && < 1.1+    , ogma-language-cocospec >= 1.0.10 && < 1.1+    , ogma-language-smv      >= 1.0.10 && < 1.1    hs-source-dirs:     src@@ -95,7 +95,7 @@     , test-framework     , test-framework-quickcheck2 -    , ogma-extra                 >= 1.0.9 && < 1.1+    , ogma-extra                 >= 1.0.10 && < 1.1     , ogma-language-fret-cs    hs-source-dirs:
src/Language/FRETComponentSpec/AST.hs view
@@ -128,11 +128,40 @@   deriving (Show)  instance FromJSON FRETRequirement where-  parseJSON (Object v) = FRETRequirement-    <$> v .: "name"-    <*> (fmap (CoCoSpec.pBoolSpec . CoCoSpec.myLexer) <$> v .: "CoCoSpecCode")-    <*> (fmap (SMV.pBoolSpec . SMV.myLexer) <$> v .: "ptLTL")-    <*> (v .: "fretish")+  parseJSON (Object v) = do+      n <- v .: "name"++      coco  <- fmap (CoCoSpec.pBoolSpec . CoCoSpec.myLexer)+                 <$> v .: "CoCoSpecCode"+      coco' <-+        case coco of+          Nothing        -> fail $ noField "CoCoSpecCode" n+          Just (Left s)  -> fail $ noParse "CoCoSpecCode" n s+          Just (Right _) -> return coco++      ptltl  <- fmap (SMV.pBoolSpec . SMV.myLexer) <$> v .: "ptLTL"+      ptltl' <-+        case ptltl of+          Nothing        -> fail $ noField "ptLTL" n+          Just (Left s)  -> fail $ noParse "ptLTL" n s+          Just (Right _) -> return ptltl++      fretish <- v .: "fretish"++      return $ FRETRequirement n coco' ptltl' fretish++    where++      noField field req = concat+        [ "error: requirement ", show req , " does not have a ", field+        , " field"+        ]++      noParse field req err = concat+        [ "error: parsing of ", field, " field of requirement ", show req+        , " failed with ", err+        ]+    parseJSON invalid =     prependFailure "parsing FRET Requirement failed, "
tests/fret_good.json view
@@ -12,7 +12,7 @@     "Requirements": [       {         "name": "behnazOne",-        "CoCoSpecCode": "",+        "CoCoSpecCode": "true",         "ptLTL": "((H ((((! <b><i>flight_mode</i></b>) & (Y <b><i>flight_mode</i></b>)) & (Y TRUE)) -> (Y (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) S (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) & (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>))))))))) & (((! ((! <b><i>flight_mode</i></b>) & (Y <b><i>flight_mode</i></b>))) S ((! ((! <b><i>flight_mode</i></b>) & (Y <b><i>flight_mode</i></b>))) & (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) -> (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) S (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) & (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>))))))))",         "fretish": "Meaning not specified"       }