From cda162f77d723179b9e36951ea58980bc8099225 Mon Sep 17 00:00:00 2001 From: alterdekim Date: Thu, 7 Nov 2024 02:10:19 +0300 Subject: [PATCH] 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 --- app/Parser.hs | 27 ++++++++--------- docs/grammar.md | 5 ---- pascal/arr.pas | 20 ------------- pascal/modifiers.pas | 61 --------------------------------------- pascal/reserved_words.pas | 53 ---------------------------------- pascal/test.pas | 1 - pascal/test1.pas | 41 -------------------------- 7 files changed, 12 insertions(+), 196 deletions(-) delete mode 100644 docs/grammar.md delete mode 100644 pascal/arr.pas delete mode 100644 pascal/modifiers.pas delete mode 100644 pascal/reserved_words.pas delete mode 100644 pascal/test.pas delete mode 100644 pascal/test1.pas diff --git a/app/Parser.hs b/app/Parser.hs index ce7c62c..eaebc75 100644 --- a/app/Parser.hs +++ b/app/Parser.hs @@ -1,22 +1,19 @@ module Parser where +import Control.Exception import Lexer (Token (..), TokenType (..) ) -data StmtType = Primary | Numeric deriving (Show, Eq) +data StmtType = Void | VariableDeclaration | AssignmentExpression | BinaryExpression deriving (Show, Eq) -class (Show a) => TreeNode a where - stype :: a -> StmtType - children :: a -> [a] +data TreeNode = TreeNode { stype :: StmtType, children :: [TreeNode], val :: [Char] } deriving (Show, Eq) -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 [] +parseTokens :: [Token] -> [TreeNode] +parseTokens tt + | k == VariableDeclaration = parseVariableDeclaration tt + | otherwise = TreeNode Void [] "" where t = head tt - k = token_type t \ No newline at end of file + k = token_type t + +-- Keyword(var) Literal Colon Literal Assignment (Expression) EndStatement +parseVariableDeclaration :: [Token] -> TreeNode +parseVariableDeclaration tt = \ No newline at end of file diff --git a/docs/grammar.md b/docs/grammar.md deleted file mode 100644 index 655587e..0000000 --- a/docs/grammar.md +++ /dev/null @@ -1,5 +0,0 @@ -$$ -[\text{halt}] \to halt([\text{expression}]); -\\ -[\text{expression}] \to \text{Number} -$$ \ No newline at end of file diff --git a/pascal/arr.pas b/pascal/arr.pas deleted file mode 100644 index dc53035..0000000 --- a/pascal/arr.pas +++ /dev/null @@ -1,20 +0,0 @@ -[ - Token {value = "halt", token_type = Literal}, - Token {value = "(", token_type = OpenParen}, - Token {value = "2", token_type = Number}, - Token {value = "+", token_type = BinaryOperator}, - Token {value = "3", token_type = Number}, - Token {value = ")", token_type = CloseParen}, - Token {value = ";", token_type = EndStatement} -] - - -[ - TreeNode {name = HaltNode, children = [ - TreeNode {name = Constant, children = [], node_val = "2"} - ], node_val = ""}, - TreeNode {name = Void, children = [ - Token {value = ")", token_type = CloseParen}, - Token {value = ";", token_type = EndStatement} - ] -[], node_val = ""}] \ No newline at end of file diff --git a/pascal/modifiers.pas b/pascal/modifiers.pas deleted file mode 100644 index 0be8101..0000000 --- a/pascal/modifiers.pas +++ /dev/null @@ -1,61 +0,0 @@ -absolute -abstract -alias -assembler -bitpacked -break -cdecl -continue -cppdecl -cvar -default -deprecated -dynamic -enumerator -experimental -export -external -far -far16 -forward -generic -helper -implements -index -interrupt -iocheck -local -message -name -near -nodefault -noreturn -nostackframe -oldfpccall -otherwise -overload -override -pascal -platform -private -protected -public -published -read -register -reintroduce -result -safecall -saveregisters -softfloat -specialize -static -stdcall -stored -strict -unaligned -unimplemented -varargs -virtual -winapi -write \ No newline at end of file diff --git a/pascal/reserved_words.pas b/pascal/reserved_words.pas deleted file mode 100644 index 604c7fc..0000000 --- a/pascal/reserved_words.pas +++ /dev/null @@ -1,53 +0,0 @@ -absolute -and -array -asm -begin -case -const -constructor -destructor -div -do -downto -else -end -file -for -function -goto -if -implementation -in -inherited -inline -interface -label -mod -nil -not -object -of -operator -or -packed -procedure -program -record -reintroduce -repeat -self -set -shl -shr -string -then -to -type -unit -until -uses -var -while -with -xor \ No newline at end of file diff --git a/pascal/test.pas b/pascal/test.pas deleted file mode 100644 index 40c2b3b..0000000 --- a/pascal/test.pas +++ /dev/null @@ -1 +0,0 @@ -halt(2 + 3); \ No newline at end of file diff --git a/pascal/test1.pas b/pascal/test1.pas deleted file mode 100644 index 3e6223d..0000000 --- a/pascal/test1.pas +++ /dev/null @@ -1,41 +0,0 @@ -program InsertionSort; - -Var x: Integer; -Var numbers : array[1..5] of Integer; - -procedure InsertionSort(size : Integer ); -Var i, j, index : Integer; -Begin - For i := 2 to size do - Begin - index := numbers[i]; - j := i; - While ((j > 1) AND (numbers[j-1] > index)) do - Begin - numbers[j] := numbers[j-1]; - j := j - 1; - End; - numbers[j] := index; - End; -End; - -Begin - writeln('Insertion Example: '); - - numbers[1] := 9001; - numbers[2] := 42; - numbers[3] := 32; - numbers[4] := 64; - numbers[5] := 2; - - for x:= 0 to 5 do - writeln('unsorted[', x, '] = ', numbers[x] ); - - InsertionSort(5); - - writeln('=== sorted ==='); - - for x:= 0 to 5 do - writeln('sorted[', x, '] = ', numbers[x] ); - -End. \ No newline at end of file