Start of Parser

modified:   app/Main.hs
	deleted:    app/NewParser.hs
	modified:   app/Parser.hs
	modified:   as/test.as
This commit is contained in:
Michael Wain 2024-11-05 02:40:18 +03:00
parent 819885b6c1
commit 36730daf71
4 changed files with 20 additions and 23 deletions

View File

@ -2,7 +2,7 @@ module Main where
import System.IO
import Lexer
--import Parser
import Parser
{-
main = do

View File

@ -1,11 +0,0 @@
module Parser (parseIntoTree, TreeNode) where
import Lexer (Token (..), TokenType (..) )
data NodeName = BinOperator | HaltNode | StringConstant | Constant | Void deriving (Show, Eq)
data TreeNode = TreeNode {name :: NodeName, children :: [TreeNode], node_val :: [Char]} deriving (Show)
parseIntoTree :: [Token] -> [TreeNode]
parseIntoTree tokens
| length tokens > 0 = _parseIntoTree tokens
| otherwise = []

View File

@ -2,3 +2,21 @@ module Parser where
import Lexer (Token (..), TokenType (..) )
data StmtType = Primary | Numeric deriving (Show, Eq)
class (Show a) => TreeNode a where
stype :: a -> StmtType
children :: a -> [a]
instance TreeNode StmtType where
stype Primary = Primary
children Primary = []
--data PrimaryNode = PrimaryNode { val :: [Char] } deriving (TreeNode)
parseTokens :: [Token] -> TreeNode
parseTokens tt
| k == Literal = PrimaryNode Primary [] (value t)
| otherwise = TreeNode Parser.Numeric []
where t = head tt
k = token_type t

View File

@ -1,11 +1 @@
package {
import flash.text.TextField;
import flash.display.Sprite;
public class TextHello extends Sprite {
var l: int = 10.5;
if( l >= 4.0 ) {
l += 3;
}
}
}
var i: int = 0;