diff options
author | Camil Staps | 2021-01-04 20:27:45 +0100 |
---|---|---|
committer | Camil Staps | 2021-01-04 20:27:45 +0100 |
commit | 88de5784428bec9a4b32bdf447c160da29b3745e (patch) | |
tree | 4b5a52c8fe2560e98aca0d74ec8dcd5cb09b2b70 /Sil/Util | |
parent | Fix error reporting for illegal command line arguments (diff) |
Make up to date
Diffstat (limited to 'Sil/Util')
-rw-r--r-- | Sil/Util/Parser.dcl | 1 | ||||
-rw-r--r-- | Sil/Util/Parser.icl | 19 | ||||
-rw-r--r-- | Sil/Util/Printer.icl | 9 |
3 files changed, 13 insertions, 16 deletions
diff --git a/Sil/Util/Parser.dcl b/Sil/Util/Parser.dcl index 2c34d83..38ee921 100644 --- a/Sil/Util/Parser.dcl +++ b/Sil/Util/Parser.dcl @@ -7,7 +7,6 @@ from Control.Applicative import class pure, class <*>, class Applicative, from Control.Monad import class Monad from Data.Error import :: MaybeError from Data.Functor import class Functor -from Data.Maybe import :: Maybe from Sil.Error import :: Error diff --git a/Sil/Util/Parser.icl b/Sil/Util/Parser.icl index 95b0813..3f32882 100644 --- a/Sil/Util/Parser.icl +++ b/Sil/Util/Parser.icl @@ -10,7 +10,6 @@ import Data.Error from Data.Func import $ import Data.Functor import Data.List -import Data.Maybe import Sil.Error @@ -33,10 +32,10 @@ makeParseState i = , ps_commits = [] } -nextToken :: (ParseState a) -> (Maybe a, ParseState a) -nextToken ps=:{ps_input=[]} = (Nothing, ps) +nextToken :: (ParseState a) -> (?a, ParseState a) +nextToken ps=:{ps_input=[]} = (?None, ps) nextToken ps=:{ps_input=[i:is]} = case i of - PI_Token t -> (Just t, {advance & ps_pos=ps.ps_pos + 1}) + PI_Token t -> (?Just t, {advance & ps_pos=ps.ps_pos + 1}) PI_NewLine -> nextToken {advance & ps_line=ps.ps_line + 1} where advance = {ps & ps_read=[i:ps.ps_read], ps_input=is} @@ -114,13 +113,13 @@ fail = empty top :: Parser a a top = Parser \st -> case nextToken st of - (Nothing, st) -> (Error $ UnknownError "top in Parser failed", st) - (Just x, st) -> (Ok x, st) + (?None, st) -> (Error $ UnknownError "top in Parser failed", st) + (?Just x, st) -> (Ok x, st) peek :: Parser a a peek = Parser \st -> case nextToken st of - (Nothing, st) -> (Error $ UnknownError "peek in Parser failed", st) - (Just x, st) -> (Ok x, tokenBack st) + (?None, st) -> (Error $ UnknownError "peek in Parser failed", st) + (?Just x, st) -> (Ok x, tokenBack st) satisfy :: (a -> Bool) -> Parser a a satisfy f = top >>= \r -> if (f r) (pure r) fail @@ -170,5 +169,5 @@ where eof :: Parser a () | toString a eof = Parser \st=:{ps_line,ps_pos} -> case nextToken st of - (Nothing, st) -> (Ok (), st) - (Just t, st) -> (Error $ P_Expected (errpos {pp_line=ps_line,pp_token=ps_pos}) "eof" t, st) + (?None, st) -> (Ok (), st) + (?Just t, st) -> (Error $ P_Expected (errpos {pp_line=ps_line,pp_token=ps_pos}) "eof" t, st) diff --git a/Sil/Util/Printer.icl b/Sil/Util/Printer.icl index 283709d..1052a3e 100644 --- a/Sil/Util/Printer.icl +++ b/Sil/Util/Printer.icl @@ -10,7 +10,6 @@ import StdString from Data.Func import $ import Data.List -import Data.Maybe import Text import Sil.Parse @@ -96,8 +95,8 @@ where print st init = st <+ init.init_type <+ " " <+ init.init_name <+ val <+ ";" where val = case init.init_value of - Nothing -> "" - Just v -> " := " <+ v + ?None -> "" + ?Just v -> " := " <+ v instance PrettyPrinter Statement where @@ -106,8 +105,8 @@ where st` = incIndent st oneblock (c,b) = "if (" <+ c <+ ") {\r\n" <+ print st` b <+ "\r\n" <+ st <+ "}" else` = case else of - Nothing -> "" - Just e -> " else {\r\n" <+ print st` e <+ "\r\n" <+ st <+ "}" + ?None -> "" + ?Just e -> " else {\r\n" <+ print st` e <+ "\r\n" <+ st <+ "}" print st (While _ c do) = st <+ "while (" <+ c <+ ") {\r\n" <+ print (incIndent st) do <+ "\r\n" <+ st <+ "}" print st stm = st <+ stm |