diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-10-13 12:59:47 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-10-13 12:59:47 +0200 |
| commit | 582040e5d3f6a5fb5b9046964b6823891d2802dd (patch) | |
| tree | 522ecf75521f03c5dbd33921cc716fd5130da0b3 /lib/Language/Elna/Frontend | |
| parent | 0850f0a8d66af028e32a79063cdad328b70db909 (diff) | |
| download | elna-582040e5d3f6a5fb5b9046964b6823891d2802dd.tar.gz | |
Implement comparison operators
Diffstat (limited to 'lib/Language/Elna/Frontend')
| -rw-r--r-- | lib/Language/Elna/Frontend/AST.hs | 20 | ||||
| -rw-r--r-- | lib/Language/Elna/Frontend/NameAnalysis.hs | 30 | ||||
| -rw-r--r-- | lib/Language/Elna/Frontend/Parser.hs | 16 |
3 files changed, 33 insertions, 33 deletions
diff --git a/lib/Language/Elna/Frontend/AST.hs b/lib/Language/Elna/Frontend/AST.hs index 68ac581..5918e8e 100644 --- a/lib/Language/Elna/Frontend/AST.hs +++ b/lib/Language/Elna/Frontend/AST.hs @@ -146,18 +146,18 @@ instance Show VariableAccess -} data Condition = EqualCondition Expression Expression - -- | NonEqualCondition Expression Expression - -- | LessCondition Expression Expression - -- | GreaterCondition Expression Expression - -- | LessOrEqualCondition Expression Expression - -- | GreaterOrEqualCondition Expression Expression + | NonEqualCondition Expression Expression + | LessCondition Expression Expression + | GreaterCondition Expression Expression + | LessOrEqualCondition Expression Expression + | GreaterOrEqualCondition Expression Expression deriving Eq instance Show Condition where show (EqualCondition lhs rhs) = concat [show lhs, " = ", show rhs] - -- show (NonEqualCondition lhs rhs) = concat [show lhs, " # ", show rhs] - -- show (LessCondition lhs rhs) = concat [show lhs, " < ", show rhs] - -- show (GreaterCondition lhs rhs) = concat [show lhs, " > ", show rhs] - -- show (LessOrEqualCondition lhs rhs) = concat [show lhs, " <= ", show rhs] - -- show (GreaterOrEqualCondition lhs rhs) = concat [show lhs, " >= ", show rhs] + show (NonEqualCondition lhs rhs) = concat [show lhs, " # ", show rhs] + show (LessCondition lhs rhs) = concat [show lhs, " < ", show rhs] + show (GreaterCondition lhs rhs) = concat [show lhs, " > ", show rhs] + show (LessOrEqualCondition lhs rhs) = concat [show lhs, " <= ", show rhs] + show (GreaterOrEqualCondition lhs rhs) = concat [show lhs, " >= ", show rhs] diff --git a/lib/Language/Elna/Frontend/NameAnalysis.hs b/lib/Language/Elna/Frontend/NameAnalysis.hs index 12e51f8..393ab0d 100644 --- a/lib/Language/Elna/Frontend/NameAnalysis.hs +++ b/lib/Language/Elna/Frontend/NameAnalysis.hs @@ -175,21 +175,21 @@ condition :: SymbolTable -> AST.Condition -> NameAnalysis () condition globalTable (AST.EqualCondition lhs rhs) = expression globalTable lhs >> expression globalTable rhs ---condition globalTable (AST.NonEqualCondition lhs rhs) --- = expression globalTable lhs --- >> expression globalTable rhs ---condition globalTable (AST.LessCondition lhs rhs) --- = expression globalTable lhs --- >> expression globalTable rhs ---condition globalTable (AST.GreaterCondition lhs rhs) --- = expression globalTable lhs --- >> expression globalTable rhs ---condition globalTable (AST.LessOrEqualCondition lhs rhs) --- = expression globalTable lhs --- >> expression globalTable rhs ---condition globalTable (AST.GreaterOrEqualCondition lhs rhs) --- = expression globalTable lhs --- >> expression globalTable rhs +condition globalTable (AST.NonEqualCondition lhs rhs) + = expression globalTable lhs + >> expression globalTable rhs +condition globalTable (AST.LessCondition lhs rhs) + = expression globalTable lhs + >> expression globalTable rhs +condition globalTable (AST.GreaterCondition lhs rhs) + = expression globalTable lhs + >> expression globalTable rhs +condition globalTable (AST.LessOrEqualCondition lhs rhs) + = expression globalTable lhs + >> expression globalTable rhs +condition globalTable (AST.GreaterOrEqualCondition lhs rhs) + = expression globalTable lhs + >> expression globalTable rhs {- variableAccess :: SymbolTable -> AST.VariableAccess -> NameAnalysis () variableAccess globalTable (AST.ArrayAccess arrayExpression indexExpression) diff --git a/lib/Language/Elna/Frontend/Parser.hs b/lib/Language/Elna/Frontend/Parser.hs index 9dd3206..e85f3b1 100644 --- a/lib/Language/Elna/Frontend/Parser.hs +++ b/lib/Language/Elna/Frontend/Parser.hs @@ -105,12 +105,12 @@ conditionP = do conditionCons lhs <$> expressionP where comparisonOperator = - --, symbol "<" >> pure LessCondition - --, symbol "<=" >> pure LessOrEqualCondition - --, symbol ">" >> pure GreaterCondition - --, symbol ">=" >> pure GreaterOrEqualCondition - [ symbol "=" >> pure EqualCondition - --, symbol "#" >> pure NonEqualCondition + [ symbol "<=" >> pure LessOrEqualCondition + , symbol "<" >> pure LessCondition + , symbol ">=" >> pure GreaterOrEqualCondition + , symbol ">" >> pure GreaterCondition + , symbol "=" >> pure EqualCondition + , symbol "#" >> pure NonEqualCondition ] symbol :: Text -> Parser Text @@ -183,8 +183,8 @@ statementP :: Parser Statement statementP = EmptyStatement <$ semicolonP <|> ifElseP - {-<|> CompoundStatement <$> blockP (many statementP) - <|> try assignmentP + <|> CompoundStatement <$> blockP (many statementP) + {-<|> try assignmentP <|> try whileP -} <|> callP <?> "statement" |
