--- /dev/null
+interface Lexer_State where
+import Lexer_Buffer(Lexer_Buffer)
+import Source_Position(Source_Position)
+i_buffer :: Lexer_Buffer -> Lexer_State -> ((), Lexer_State)
+ {-# ARITY i_buffer = 2 #-}
+i_input :: [Char] -> Lexer_State -> ((), Lexer_State)
+ {-# ARITY i_input = 2 #-}
+i_source_pos :: Source_Position -> Lexer_State -> ((), Lexer_State)
+ {-# ARITY i_source_pos = 2 #-}
+initial_state :: [Char] -> Lexer_State
+ {-# ARITY initial_state = 1 #-}
+make :: [Char] -> Source_Position -> Lexer_Buffer -> Lexer_State
+ {-# ARITY make = 3 #-}
+p_buffer :: Lexer_State -> (Lexer_Buffer, Lexer_State)
+ {-# ARITY p_buffer = 1 #-}
+p_input :: Lexer_State -> ([Char], Lexer_State)
+ {-# ARITY p_input = 1 #-}
+p_source_pos :: Lexer_State -> (Source_Position, Lexer_State)
+ {-# ARITY p_source_pos = 1 #-}
+type Lexer_Action a = Lexer_State -> (a, Lexer_State)
+data Lexer_State = Lexer_State [Char] Source_Position Lexer_Buffer
+