subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
39
users/wpcarro/scratch/facebook/evaluator.hs
Normal file
39
users/wpcarro/scratch/facebook/evaluator.hs
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
module Evaluator where
|
||||
|
||||
data Token
|
||||
= TokenInt Integer
|
||||
| TokenAdd
|
||||
| TokenMultiply
|
||||
deriving (Eq, Show)
|
||||
|
||||
newtype AST = AST [Token]
|
||||
deriving (Eq, Show)
|
||||
|
||||
tokens :: [Token]
|
||||
tokens =
|
||||
[ TokenInt 13
|
||||
, TokenAdd
|
||||
, TokenInt 2
|
||||
, TokenMultiply
|
||||
, TokenInt 4
|
||||
, TokenAdd
|
||||
, TokenInt 7
|
||||
, TokenAdd
|
||||
, TokenInt 3
|
||||
, TokenMultiply
|
||||
, TokenInt 8
|
||||
]
|
||||
|
||||
-- expression -> addition ;
|
||||
-- addition -> multiplication ( "+" multiplication )* ;
|
||||
-- multiplication -> terminal ( "*" terminal )* ;
|
||||
-- terminal -> NUMBER ;
|
||||
|
||||
parseExpression :: [Token] -> ([Token], AST)
|
||||
parseExpression tokens = do
|
||||
lhs, rest = parseMultiplication tokens
|
||||
|
||||
parseMulitplication :: [Token] -> ([Token], AST)
|
||||
|
||||
main :: IO ()
|
||||
main = print $ parse tokens
|
||||
Loading…
Add table
Add a link
Reference in a new issue