1 interface Lexer_State where
2 import Lexer_Buffer(Lexer_Buffer)
3 import Source_Position(Source_Position)
4 i_buffer :: Lexer_Buffer -> Lexer_State -> ((), Lexer_State)
5 {-# ARITY i_buffer = 2 #-}
6 i_input :: [Char] -> Lexer_State -> ((), Lexer_State)
7 {-# ARITY i_input = 2 #-}
8 i_source_pos :: Source_Position -> Lexer_State -> ((), Lexer_State)
9 {-# ARITY i_source_pos = 2 #-}
10 initial_state :: [Char] -> Lexer_State
11 {-# ARITY initial_state = 1 #-}
12 make :: [Char] -> Source_Position -> Lexer_Buffer -> Lexer_State
13 {-# ARITY make = 3 #-}
14 p_buffer :: Lexer_State -> (Lexer_Buffer, Lexer_State)
15 {-# ARITY p_buffer = 1 #-}
16 p_input :: Lexer_State -> ([Char], Lexer_State)
17 {-# ARITY p_input = 1 #-}
18 p_source_pos :: Lexer_State -> (Source_Position, Lexer_State)
19 {-# ARITY p_source_pos = 1 #-}
20 type Lexer_Action a = Lexer_State -> (a, Lexer_State)
21 data Lexer_State = Lexer_State [Char] Source_Position Lexer_Buffer