This commit is contained in:
Oleg Sobolev 2025-12-30 06:53:05 +03:00
parent 6f4a835e54
commit ef7dc3603d
5 changed files with 50 additions and 2 deletions

View file

@ -1,6 +1,7 @@
module Lox.Parser (
SyntaxError (..),
parse
parse,
parseExpression
) where
import Control.Monad
@ -55,6 +56,9 @@ data SyntaxError = SyntaxError String deriving Show
parse :: [Token] -> Either SyntaxError [Stmt]
parse tokens = evalState program (ParserState {tokens=tokens})
parseExpression :: [Token] -> Either SyntaxError Expr
parseExpression tokens = evalState expression (ParserState {tokens=tokens})
program :: State ParserState (Either SyntaxError [Stmt])
program = do
atEnd <- isAtEnd