diff options
Diffstat (limited to 'Sil/Util')
-rw-r--r-- | Sil/Util/Parser.dcl | 13 | ||||
-rw-r--r-- | Sil/Util/Parser.icl | 7 | ||||
-rw-r--r-- | Sil/Util/Printer.dcl | 3 | ||||
-rw-r--r-- | Sil/Util/Printer.icl | 3 |
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 [] = "" |