diff options
author | Camil Staps | 2018-07-06 11:12:03 +0200 |
---|---|---|
committer | Camil Staps | 2018-07-06 11:14:23 +0200 |
commit | fdcc5373160d2d522ecd9a1b8e1dde0d782605e2 (patch) | |
tree | cece8d2c8a49f530ba8f8c77ef928031271201c0 /Assignment2 | |
parent | Provide initial description of the implementation (diff) |
This is so ugly
Diffstat (limited to 'Assignment2')
-rw-r--r-- | Assignment2/src/DTMC.icl | 18 | ||||
-rw-r--r-- | Assignment2/src/Dockerfile | 2 | ||||
-rw-r--r-- | Assignment2/src/Expression.dcl | 8 | ||||
-rw-r--r-- | Assignment2/src/Expression.icl | 51 | ||||
-rwxr-xr-x | Assignment2/src/entry.sh | 3 |
5 files changed, 77 insertions, 5 deletions
diff --git a/Assignment2/src/DTMC.icl b/Assignment2/src/DTMC.icl index 6c81510..1d9bafd 100644 --- a/Assignment2/src/DTMC.icl +++ b/Assignment2/src/DTMC.icl @@ -16,6 +16,7 @@ import Data.List import qualified Data.Map as M from Data.Map import :: Map, alter import Data.Maybe +import System.CommandLine import System.File import System.FilePath import Text @@ -169,8 +170,8 @@ printDTMC dtmc=:{nr_states,states} # (state_strings,states) = printStates 0 states # s = join "\n" [ "@type: DTMC" - , "@parameters" - , "@reward_models" + , "@parameters\n" + , "@reward_models\n" , "@nr_states" , toString nr_states , "@model" @@ -213,7 +214,16 @@ where addVar f t (Just fn) = Just ("((" <+ fn <+ ") + v" <+ f <+ "_" <+ t <+ ")") Start w -# (dtmc,w) = parseDTMC "die.drn" w +# ([prog:args],w) = getCommandLine w +| length args <> 2 + # (io,w) = stdio w + # io = io <<< "Usage: " <<< prog <<< " DRN_IN DRN_OUT\n" + # (_,w) = fclose io w + = w +# [drn_in,drn_out:_] = args +# (dtmc,w) = parseDTMC drn_in w # dtmc = addVars dtmc # dtmc = stateElimination dtmc -= printDTMC dtmc +# (dtmcs,dtmc) = printDTMC dtmc +# (_,w) = writeFile drn_out dtmcs w += w diff --git a/Assignment2/src/Dockerfile b/Assignment2/src/Dockerfile index ecdbab0..4bec59e 100644 --- a/Assignment2/src/Dockerfile +++ b/Assignment2/src/Dockerfile @@ -24,4 +24,4 @@ RUN apt-get update -qq &&\ ENV CLEAN_HOME=/opt/clean ENV PATH=$PATH:/opt/storm/build/bin:/opt/clean/bin:/opt/clean/exe -ENTRYPOINT cd /src; bash +ENTRYPOINT /src/entry.sh diff --git a/Assignment2/src/Expression.dcl b/Assignment2/src/Expression.dcl new file mode 100644 index 0000000..d462eb9 --- /dev/null +++ b/Assignment2/src/Expression.dcl @@ -0,0 +1,8 @@ +definition module Expression + +from StdOverloaded import class toString + +:: Expression + +parseInfix :: !String -> Expression +instance toString Expression // prefix diff --git a/Assignment2/src/Expression.icl b/Assignment2/src/Expression.icl new file mode 100644 index 0000000..7622103 --- /dev/null +++ b/Assignment2/src/Expression.icl @@ -0,0 +1,51 @@ +implementation module Expression + +from StdChar import instance == Char +from StdOverloaded import class toString(toString) +from StdString import instance toString {#Char}, instance toString Int, instance toString Real + +import Data._Array +from Data.Func import $ +import Data.Maybe +import Text +import Text.GenParse + +:: Expression + = (+) infixl 6 !Expression !Expression + | (-) infixl 6 !Expression !Expression + | (*) infixl 7 !Expression !Expression + | (/) infixl 7 !Expression !Expression + | LitInt !Int + | LitReal !Real + | Var !String + +derive gParse Expression + +parseInfix :: !String -> Expression +parseInfix s = fromJust $ gParse{|*|} $ addLiteralBoxes $ preParseString s +where + addLiteralBoxes :: !Expr -> Expr + addLiteralBoxes e = case e of + ExprInt i -> ExprApp {ExprIdent "LitInt",e} + ExprReal r -> ExprApp {ExprIdent "LitReal",e} + + ExprIdent id | id.[0] == 'v' + -> ExprApp {ExprIdent "Var",ExprString id} + + ExprApp es -> ExprApp (mapArray addLiteralBoxes es) + ExprTuple es -> ExprTuple (mapArray addLiteralBoxes es) + ExprAppInInfix es x y z + -> ExprAppInInfix (mapArray addLiteralBoxes es) x y z + + _ -> e + +instance toString Expression +where + toString e = case e of + (e1 + e2) -> "(+ " <+ e1 <+ " " <+ e2 <+ ")" + (e1 - e2) -> "(- " <+ e1 <+ " " <+ e2 <+ ")" + (e1 * e2) -> "(* " <+ e1 <+ " " <+ e2 <+ ")" + (e1 / e2) -> "(/ " <+ e1 <+ " " <+ e2 <+ ")" + LitInt i -> toString i + LitReal r -> toString r + Var v -> v diff --git a/Assignment2/src/entry.sh b/Assignment2/src/entry.sh new file mode 100755 index 0000000..3702ac5 --- /dev/null +++ b/Assignment2/src/entry.sh @@ -0,0 +1,3 @@ +cd /src +clm -ms -IL Platform -nr -nt DTMC -o dtmc +bash |