brainfuck-tut-0.5.1.0: src/Language/Brainfuck/Parse.hs
{-|
Module : Language.Brainfuck.Parse
Description : Parser for the BF language
Copyright : (c) Alejandro Cabrera, 2014
License : BSD-3
Maintainer : cpp.cabrera@gmail.com
Stability : experimental
Portability : POSIX
-}
module Language.Brainfuck.Parse (
parse
) where
import Language.Brainfuck.Types (Term(..))
-- |A total function over the BF syntax.
parse :: String -> [Term]
parse [] = []
parse (x:xs) = case x of
'>' -> IncDP : parse xs
'<' -> DecDP : parse xs
'+' -> IncByte : parse xs
'-' -> DecByte : parse xs
'.' -> OutByte : parse xs
',' -> InByte : parse xs
'[' -> JumpForward : parse xs
']' -> JumpBackward : parse xs
_ -> parse xs