mirror of
https://github.com/janet-lang/janet
synced 2024-12-26 00:10:27 +00:00
Make parser errors a bit better for files with no closing
delimiters.
This commit is contained in:
parent
c4114fbcdb
commit
b4934ceddc
1
Makefile
1
Makefile
@ -192,6 +192,7 @@ install: $(JANET_TARGET)
|
||||
cp $(JANET_LIBRARY) $(LIBDIR)/libjanet.so
|
||||
mkdir -p $(JANET_PATH)
|
||||
cp tools/cook.janet $(JANET_PATH)
|
||||
cp tools/highlight.janet $(JANET_PATH)
|
||||
cp janet.1 /usr/local/share/man/man1/
|
||||
mandb
|
||||
$(LDCONFIG)
|
||||
|
@ -1454,6 +1454,12 @@ value, one key will be ignored."
|
||||
nil
|
||||
where))))
|
||||
|
||||
(if (= (parser/status p) :pending)
|
||||
(onstatus :parse
|
||||
(string "unmatched delimiters " (parser/state p))
|
||||
nil
|
||||
where))
|
||||
|
||||
(set *env* oldenv)
|
||||
|
||||
env)
|
||||
|
@ -476,7 +476,7 @@ static int root(JanetParser *p, JanetParseState *state, uint8_t c) {
|
||||
{
|
||||
Janet ds;
|
||||
if (p->statecount == 1) {
|
||||
p->error = "mismatched delimiter";
|
||||
p->error = "unexpected delimiter";
|
||||
return 1;
|
||||
}
|
||||
if ((c == ')' && (state->flags & PFLAG_PARENS)) ||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
#include "vector.h"
|
||||
#include "util.h"
|
||||
|
||||
/*
|
||||
* Runtime
|
||||
@ -1085,15 +1086,15 @@ static Janet cfun_match(int32_t argc, Janet *argv) {
|
||||
|
||||
static const JanetReg cfuns[] = {
|
||||
{"peg/compile", cfun_compile,
|
||||
"(peg/compile peg)\n\n"
|
||||
JDOC("(peg/compile peg)\n\n"
|
||||
"Compiles a peg source data structure into a <core/peg>. This will speed up matching "
|
||||
"if the same peg will be used multiple times."
|
||||
"if the same peg will be used multiple times.")
|
||||
},
|
||||
{"peg/match", cfun_match,
|
||||
"(peg/match peg text [,start=0])\n\n"
|
||||
JDOC("(peg/match peg text [,start=0])\n\n"
|
||||
"Match a Parsing Expression Grammar to a byte string and return an array of captured values. "
|
||||
"Returns nil if text does not match the language defined by peg. The syntax of PEGs are very "
|
||||
"similar to those defined by LPeg, and have similar capabilities."
|
||||
"similar to those defined by LPeg, and have similar capabilities.")
|
||||
},
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2019 Calvin Rose
|
||||
#' Copyright (c) 2019 Calvin Rose
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
|
@ -330,4 +330,9 @@
|
||||
(check-match '(* (? "hi") -1) "hi" true)
|
||||
(check-match '(* (? "hi") -1) "no" false)
|
||||
|
||||
# Drop
|
||||
|
||||
(check-deep '(drop '"hello") "hello" @[])
|
||||
(check-deep '(drop "hello") "hello" @[])
|
||||
|
||||
(end-suite)
|
||||
|
@ -21,8 +21,8 @@
|
||||
(defn check-number [text] (and (scan-number text) text))
|
||||
|
||||
(defn- make-grammar
|
||||
"Creates the grammar based on the paint function and some
|
||||
wraping constants."
|
||||
"Creates the grammar based on the paint function, which
|
||||
colorizes fragments of text."
|
||||
[paint]
|
||||
|
||||
(defn <-c
|
||||
@ -128,19 +128,6 @@
|
||||
</style>
|
||||
```)
|
||||
|
||||
(def- html-boiler-prefix
|
||||
```<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
```)
|
||||
|
||||
(defn- html-escape
|
||||
"Escape special characters for HTML encoding."
|
||||
[str]
|
||||
|
Loading…
Reference in New Issue
Block a user