Porcelain/app/Parser.hs
alterdekim cda162f77d modified: app/Parser.hs
deleted:    docs/grammar.md
	deleted:    pascal/arr.pas
	deleted:    pascal/modifiers.pas
	deleted:    pascal/reserved_words.pas
	deleted:    pascal/test.pas
	deleted:    pascal/test1.pas
2024-11-07 02:10:19 +03:00

19 lines
658 B
Haskell

module Parser where
import Control.Exception
import Lexer (Token (..), TokenType (..) )
data StmtType = Void | VariableDeclaration | AssignmentExpression | BinaryExpression deriving (Show, Eq)
data TreeNode = TreeNode { stype :: StmtType, children :: [TreeNode], val :: [Char] } deriving (Show, Eq)
parseTokens :: [Token] -> [TreeNode]
parseTokens tt
| k == VariableDeclaration = parseVariableDeclaration tt
| otherwise = TreeNode Void [] ""
where t = head tt
k = token_type t
-- Keyword(var) Literal Colon Literal Assignment (Expression) EndStatement
parseVariableDeclaration :: [Token] -> TreeNode
parseVariableDeclaration tt =