module Erb.Ruby where

data Value
    = Literal String
    deriving (Show, Ord, Eq)

data Expression
    = LookupOperation Expression Expression
    | PlusOperation Expression Expression
    | MinusOperation Expression Expression
    | DivOperation Expression Expression
    | MultiplyOperation Expression Expression
    | ShiftLeftOperation Expression Expression
    | ShiftRightOperation Expression Expression
    | AndOperation Expression Expression
    | OrOperation Expression Expression
    | EqualOperation Expression Expression
    | DifferentOperation Expression Expression
    | AboveOperation Expression Expression
    | AboveEqualOperation Expression Expression
    | UnderEqualOperation Expression Expression
    | UnderOperation Expression Expression
    | RegexpOperation Expression Expression
    | NotRegexpOperation Expression Expression
    | NotOperation Expression
    | NegOperation Expression
    | ConditionalValue Expression Expression
    | Object Expression
    | MethodCall Expression Expression
    | BlockOperation String
    | Value Value
    | BTrue
    | BFalse
    | Error String
    deriving (Show, Ord, Eq)

data RubyStatement
    = Puts Expression
    deriving(Show)