Skip to content

Commit bb36765

Browse files
authored
Allow missing closing delimiter in block comments. (#23)
1 parent 2816d10 commit bb36765

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

bench/ParseFile.purs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module ParseFile where
2+
3+
import Prelude
4+
5+
import Data.Array as Array
6+
import Data.Foldable (for_)
7+
import Data.Maybe (Maybe(..))
8+
import Effect (Effect)
9+
import Effect.Aff (launchAff_)
10+
import Effect.Class (liftEffect)
11+
import Effect.Class.Console as Console
12+
import Node.Buffer as Buffer
13+
import Node.Encoding (Encoding(..))
14+
import Node.FS.Aff (readFile)
15+
import Node.Process as Process
16+
import PureScript.CST (RecoveredParserResult(..), parseModule)
17+
import PureScript.CST.Errors (printParseError)
18+
import PureScript.CST.Parser.Monad (PositionedError)
19+
20+
main :: Effect Unit
21+
main = launchAff_ do
22+
args <- Array.drop 2 <$> liftEffect Process.argv
23+
case Array.head args of
24+
Just fileName -> do
25+
contents <- liftEffect <<< Buffer.toString UTF8 =<< readFile fileName
26+
case parseModule contents of
27+
ParseSucceeded _ -> do
28+
Console.log "Parse succeeded."
29+
ParseSucceededWithErrors _ errs ->
30+
for_ errs $ Console.error <<< printPositionedError
31+
ParseFailed err ->
32+
Console.error $ printPositionedError err
33+
Nothing ->
34+
Console.log "File path required"
35+
36+
printPositionedError :: PositionedError -> String
37+
printPositionedError { error, position } =
38+
"[" <> show (position.line + 1) <> ":" <> show (position.column + 1) <> "] " <> printParseError error

src/PureScript/CST/Lexer.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ trailingComments = many do
341341

342342
comment :: Lex LexError String
343343
comment =
344-
regex (LexExpected "block comment") """\{-(-(?!\})|[^-]+)*-\}"""
344+
regex (LexExpected "block comment") """\{-(-(?!\})|[^-]+)*(-\}|$)"""
345345
<|> regex (LexExpected "line comment") """--[^\r\n]*"""
346346

347347
spaceComment :: Lex LexError Int

0 commit comments

Comments
 (0)