parsley-1.0.0.1: benchmarks/BrainfuckBench/Happy/Parser.y
{
module BrainfuckBench.Happy.Parser where
import BrainfuckBench.Shared (BrainFuckOp(..))
}
%name brainfuck Bf
%tokentype { Char }
%error { const Nothing }
%monad { Maybe }
%token
inc { '+' }
dec { '-' }
out { '.' }
in { ',' }
lft { '<' }
rht { '>' }
lb { '[' }
rb { ']' }
ws { $$ }
%%
Bf :: { [BrainFuckOp] }
Bf : inc Bf { Increment : $2 }
| dec Bf { Decrement : $2 }
| out Bf { Output : $2 }
| in Bf { Input : $2 }
| lft Bf { LeftPointer : $2 }
| rht Bf { RightPointer : $2 }
| lb Bf rb Bf { Loop $2 : $4 }
| ws Bf { $2 }
| { [] }