aboutsummaryrefslogtreecommitdiff
path: root/Sil/Util
diff options
context:
space:
mode:
authorCamil Staps2021-01-04 20:27:45 +0100
committerCamil Staps2021-01-04 20:27:45 +0100
commit88de5784428bec9a4b32bdf447c160da29b3745e (patch)
tree4b5a52c8fe2560e98aca0d74ec8dcd5cb09b2b70 /Sil/Util
parentFix error reporting for illegal command line arguments (diff)
Make up to date
Diffstat (limited to 'Sil/Util')
-rw-r--r--Sil/Util/Parser.dcl1
-rw-r--r--Sil/Util/Parser.icl19
-rw-r--r--Sil/Util/Printer.icl9
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