Add coding exercises for Facebook interviews
Add attempts at solving coding problems to Briefcase.
This commit is contained in:
parent
d2d772e43e
commit
aa66d9b83d
66 changed files with 2994 additions and 0 deletions
39
scratch/facebook/evaluator.hs
Normal file
39
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