diff options
Diffstat (limited to 'lib/Language/Elna/Parser.hs')
| -rw-r--r-- | lib/Language/Elna/Parser.hs | 32 |
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) |
