Implement comparison operators
This commit is contained in:
@@ -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]
|
||||
|
@@ -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)
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user