trying to do more for js parser

This commit is contained in:
Pagwin 2026-01-01 17:03:46 -05:00
parent 2d2d0c0969
commit 1f89316fdf
No known key found for this signature in database
GPG key ID: 81137023740CA260
2 changed files with 5 additions and 3 deletions

View file

@ -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"

View file

@ -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