From 1f89316fdf7f9343232ff8644936c5db8461a705 Mon Sep 17 00:00:00 2001 From: Pagwin Date: Thu, 1 Jan 2026 17:03:46 -0500 Subject: [PATCH] trying to do more for js parser --- src/Utilities/Javascript.hs | 6 +++--- src/Utilities/Parsing.hs | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Utilities/Javascript.hs b/src/Utilities/Javascript.hs index 0097d63..3cd58c9 100644 --- a/src/Utilities/Javascript.hs +++ b/src/Utilities/Javascript.hs @@ -12,7 +12,7 @@ import Control.Applicative (Alternative (many), optional, (<|>)) import Control.Monad.Trans.Class (MonadTrans (lift)) import Control.Monad.Trans.State (StateT, evalStateT, put) import Data.Data (Proxy (Proxy)) -import Data.Functor ((<&>)) +import Data.Functor (void, (<&>)) import Data.Maybe (maybeToList) import Data.String (IsString (fromString)) import Data.Void (Void) @@ -20,7 +20,7 @@ import Logger import Text.Megaparsec (MonadParsec (notFollowedBy, try), ParseErrorBundle, ParsecT, Stream (tokensToChunk), anySingle, choice, parse, runParserT) import qualified Text.Megaparsec as MP import Text.Megaparsec.Char (char, digitChar, eol, hspace, letterChar, newline, string) -import Utilities.Parsing (Characters, ToText (fromText, toString, toText)) +import Utilities.Parsing (Characters, ToChar (fromChar), ToText (fromText, toString, toText)) data Possibility = ExprAllowed | ExprNotAllowed deriving (Eq) @@ -375,7 +375,7 @@ literal = char '`' pure $ TemplateTail $ fromText $ mconcat $ map toText $ contents template_char :: Parser s m s - template_char = fromText . toText <$> choice [try (string "$" <* (notFollowedBy $ char '{')), try (char '\\' *> ((try template_escape_seq) <|> not_escape_seq)), try ((optional $ char '\\') *> (eol)), source_char] + template_char = fromText . toText <$> choice [try (string "$" <* (notFollowedBy $ char '{')), try (char '\\' *> ((try template_escape_seq) <|> not_escape_seq)), try ((optional $ char '\\') *> (eol)), (notFollowedBy (choice $ linebreak : (map (fromChar <$> char) "`\\$"))) *> source_char] source_char = error "TODO" template_escape_seq = error "TODO: TemplateEscapeSequence, prepend backslash" not_escape_seq = error "TODO: NotEscapeSequence, prepend backslash" diff --git a/src/Utilities/Parsing.hs b/src/Utilities/Parsing.hs index befb4ab..d8f9127 100644 --- a/src/Utilities/Parsing.hs +++ b/src/Utilities/Parsing.hs @@ -19,9 +19,11 @@ class ToText t where class ToChar c where toChar :: c -> Char + fromChar :: Char -> c instance ToChar Char where toChar = id + fromChar = id instance Characters Text