aboutsummaryrefslogtreecommitdiff
path: root/Sil/Util
diff options
context:
space:
mode:
Diffstat (limited to 'Sil/Util')
-rw-r--r--Sil/Util/Parser.dcl13
-rw-r--r--Sil/Util/Parser.icl7
-rw-r--r--Sil/Util/Printer.dcl3
-rw-r--r--Sil/Util/Printer.icl3
4 files changed, 9 insertions, 17 deletions
diff --git a/Sil/Util/Parser.dcl b/Sil/Util/Parser.dcl
index 6f5929c..e5d1cce 100644
--- a/Sil/Util/Parser.dcl
+++ b/Sil/Util/Parser.dcl
@@ -10,14 +10,13 @@ from Data.Maybe import :: Maybe
from Sil.Error import :: Error
-:: Positioned a =
- { pos_line :: Int
- , pos_val :: a
- }
+:: *ParseState a
-fromPositioned :: (Positioned a) -> a
+:: ParsePosition =
+ { pp_line :: Int
+ }
-:: *ParseState a
+class getPos a :: a -> ParsePosition
:: ParseInput a
= PI_NewLine
@@ -36,7 +35,7 @@ class name a :: a -> String
instance name String
runParser :: (Parser a b) *(ParseState a) -> *(MaybeError Error b, *ParseState a)
-getPositioner :: Parser a (b -> Positioned b)
+getPosition :: Parser a ParsePosition
(<?>) :: (Parser a b) Error -> Parser a b
fail :: Parser a b
top :: Parser a a
diff --git a/Sil/Util/Parser.icl b/Sil/Util/Parser.icl
index 83da78c..92bc08f 100644
--- a/Sil/Util/Parser.icl
+++ b/Sil/Util/Parser.icl
@@ -14,9 +14,6 @@ import Data.Maybe
import Sil.Error
-fromPositioned :: (Positioned a) -> a
-fromPositioned p = p.pos_val
-
:: *ParseState a =
{ ps_line :: Int
, ps_input :: [ParseInput a]
@@ -89,8 +86,8 @@ doPS f = Parser \st -> (Ok (), f st)
runParser :: (Parser a b) *(ParseState a) -> *(MaybeError Error b, *ParseState a)
runParser (Parser f) i = f i
-getPositioner :: Parser a (b -> Positioned b)
-getPositioner = Parser \st=:{ps_line} -> (Ok \x -> {pos_line=ps_line, pos_val=x}, st)
+getPosition :: Parser a ParsePosition
+getPosition = Parser \st=:{ps_line} -> (Ok {pp_line=ps_line}, st)
(<?>) :: (Parser a b) Error -> Parser a b
(<?>) p e = Parser \i -> case runParser p i of
diff --git a/Sil/Util/Printer.dcl b/Sil/Util/Printer.dcl
index 56ad103..d0685cb 100644
--- a/Sil/Util/Printer.dcl
+++ b/Sil/Util/Printer.dcl
@@ -3,7 +3,7 @@ definition module Sil.Util.Printer
from StdOverloaded import class toString, class zero
from Sil.Parse import :: Token
-from Sil.Syntax import :: Positioned, :: Program, :: Function, :: CodeBlock,
+from Sil.Syntax import :: Program, :: Function, :: CodeBlock,
:: Initialisation, :: Statement
:: PrintState
@@ -14,7 +14,6 @@ class PrettyPrinter t where
print :: PrintState t -> String
instance PrettyPrinter String
-instance PrettyPrinter (Positioned a) | PrettyPrinter a
instance PrettyPrinter [Token]
instance PrettyPrinter Program
instance PrettyPrinter Function
diff --git a/Sil/Util/Printer.icl b/Sil/Util/Printer.icl
index 2a028b6..bcb3c84 100644
--- a/Sil/Util/Printer.icl
+++ b/Sil/Util/Printer.icl
@@ -34,9 +34,6 @@ instance toString PrintState where toString st = {'\t' \\ _ <- [1..st.indent]}
instance PrettyPrinter String where print _ s = s
-instance PrettyPrinter (Positioned a) | PrettyPrinter a
-where print st p = print st $ fromPositioned p
-
instance PrettyPrinter [Token]
where
print st [] = ""