summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Parser.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Language/Elna/Parser.hs')
-rw-r--r--lib/Language/Elna/Parser.hs32
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/Language/Elna/Parser.hs b/lib/Language/Elna/Parser.hs
index 5583601..3c98fff 100644
--- a/lib/Language/Elna/Parser.hs
+++ b/lib/Language/Elna/Parser.hs
@@ -4,7 +4,7 @@ module Language.Elna.Parser
) where
import Control.Monad (void)
-import Control.Monad.Combinators.Expr ({-Operator(..), -} makeExprParser)
+import Control.Monad.Combinators.Expr (Operator(..), makeExprParser)
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Void (Void)
@@ -69,38 +69,38 @@ termP = choice
, LiteralExpression <$> literalP
-- , VariableExpression <$> variableAccessP
]
-{-
-variableAccessP :: Parser VariableAccess
-variableAccessP = do
- identifier <- identifierP
- indices <- many $ bracketsP expressionP
- pure $ foldr (flip ArrayAccess) (VariableAccess identifier) indices
operatorTable :: [[Operator Parser Expression]]
operatorTable =
- [ unaryOperator
+ [{- unaryOperator
, factorOperator
- , termOperator
+ ,-} termOperator
]
where
- unaryOperator =
+ {- unaryOperator =
[ prefix "-" NegationExpression
, prefix "+" id
]
factorOperator =
[ binary "*" ProductExpression
, binary "/" DivisionExpression
- ]
+ ] -}
termOperator =
[ binary "+" SumExpression
, binary "-" SubtractionExpression
]
- prefix name f = Prefix (f <$ symbol name)
+ -- prefix name f = Prefix (f <$ symbol name)
binary name f = InfixL (f <$ symbol name)
--}
+
expressionP :: Parser Expression
-expressionP = makeExprParser termP [] -- operatorTable
+expressionP = makeExprParser termP operatorTable
{-
+variableAccessP :: Parser VariableAccess
+variableAccessP = do
+ identifier <- identifierP
+ indices <- many $ bracketsP expressionP
+ pure $ foldr (flip ArrayAccess) (VariableAccess identifier) indices
+
conditionP :: Parser Condition
conditionP = do
lhs <- expressionP
@@ -204,8 +204,8 @@ statementP
<$> variableAccessP
<* symbol ":="
<*> expressionP
- <* semicolonP
--}
+ <* semicolonP -}
+
variableDeclarationP :: Parser VariableDeclaration
variableDeclarationP = VariableDeclaration
<$> (symbol "var" *> identifierP)