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 +5/−0
- ogma-language-fret-cs.cabal +4/−4
- src/Language/FRETComponentSpec/AST.hs +34/−5
- tests/fret_good.json +1/−1
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" }