definition module Sil.Parse from StdOverloaded import class ==, class toString from Data.Error import :: MaybeError from Sil.Syntax import :: Program, :: Literal from Sil.Util.Parser import class name :: Token = TParenOpen //* ( | TParenClose //* ) | TBraceOpen //* { | TBraceClose //* } | TComma //* , | TSemicolon //* ; | TAssign //* := | TTilde //* ~ | TExclamation //* ! | TPlus //* + | TMinus //* - | TStar //* * | TSlash //* / | TPercent //* % | TDoubleEquals //* == | TDoubleBar //* || | TDoubleAmpersand //* && | TLit Literal //* True; False; integers | TIf //* if | TElse //* else | TWhile //* while | TReturn //* return | TMachineCode String //* |~ machine code | TName String //* a string instance == Token instance toString Token instance name Token :: ParseError = E.a: Invalid String a & toString a | Expected String | UnknownError instance toString ParseError tokenise :: [Char] -> MaybeError ParseError [Token] parse :: ([Token] -> MaybeError ParseError Program)