module Erb.Ruby where
import qualified Data.Text as T
data Value
= Literal !T.Text
| Array ![Expression]
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 !T.Text
| Value !Value
| BTrue
| BFalse
| Error !String
deriving (Show, Ord, Eq)
data RubyStatement
= Puts !Expression
deriving(Show)