diff --git a/src/Juvix/Compiler/Core/Pretty/Base.hs b/src/Juvix/Compiler/Core/Pretty/Base.hs index 0416297d36..8d4d20262c 100644 --- a/src/Juvix/Compiler/Core/Pretty/Base.hs +++ b/src/Juvix/Compiler/Core/Pretty/Base.hs @@ -5,7 +5,6 @@ module Juvix.Compiler.Core.Pretty.Base ) where -import Data.Functor import Data.HashMap.Strict qualified as HashMap import Juvix.Compiler.Core.Data.InfoTable import Juvix.Compiler.Core.Data.Stripped.InfoTable qualified as Stripped diff --git a/src/Juvix/Compiler/Core/Translation/FromSource/Lexer.hs b/src/Juvix/Compiler/Core/Translation/FromSource/Lexer.hs index 868d603219..881c6d52a9 100644 --- a/src/Juvix/Compiler/Core/Translation/FromSource/Lexer.hs +++ b/src/Juvix/Compiler/Core/Translation/FromSource/Lexer.hs @@ -37,6 +37,9 @@ string = lexemeInterval string' keyword :: Text -> ParsecS r () keyword = keyword' space +keywordSymbol :: Text -> ParsecS r () +keywordSymbol = keywordSymbol' space + identifier :: ParsecS r Text identifier = lexeme bareIdentifier @@ -156,7 +159,7 @@ kwSemicolon :: ParsecS r () kwSemicolon = keyword Str.semicolon kwComma :: ParsecS r () -kwComma = keyword Str.comma +kwComma = keywordSymbol Str.comma kwWildcard :: ParsecS r () kwWildcard = keyword Str.underscore diff --git a/src/Juvix/Parser/Lexer.hs b/src/Juvix/Parser/Lexer.hs index abf4fd0ac7..6771f936ce 100644 --- a/src/Juvix/Parser/Lexer.hs +++ b/src/Juvix/Parser/Lexer.hs @@ -79,6 +79,12 @@ keywordL' spc kw = do spc return i +keywordSymbol' :: ParsecS r () -> Text -> ParsecS r () +keywordSymbol' spc kw = do + P.try $ do + void $ P.chunk kw + spc + rawIdentifier :: [ParsecS r ()] -> ParsecS r Text rawIdentifier allKeywords = do notFollowedBy (choice allKeywords)