diff options
| author | Undecidable Robot <undecidabot@gmail.com> | 2016-05-07 22:00:25 +0800 |
|---|---|---|
| committer | Undecidable Robot <undecidabot@gmail.com> | 2016-05-07 22:04:37 +0800 |
| commit | 76170bacefad40b79a1f8a93294d2c96711a3b1e (patch) | |
| tree | 6244fb3a0f3ec1a68c8a0bab567e620a5aa99407 | |
| parent | a3e8fbe233e7b3ca7a4e72ec03a495da79450b17 (diff) | |
| download | lpeglabel-76170bacefad40b79a1f8a93294d2c96711a3b1e.tar.gz lpeglabel-76170bacefad40b79a1f8a93294d2c96711a3b1e.tar.bz2 lpeglabel-76170bacefad40b79a1f8a93294d2c96711a3b1e.zip | |
Adding proper error messages
| -rw-r--r-- | relabel.lua | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/relabel.lua b/relabel.lua index 3748da6..16c5473 100644 --- a/relabel.lua +++ b/relabel.lua | |||
| @@ -230,12 +230,48 @@ local function lineno (s, i) | |||
| 230 | return 1 + num, r ~= 0 and r or 1 | 230 | return 1 + num, r ~= 0 and r or 1 |
| 231 | end | 231 | end |
| 232 | 232 | ||
| 233 | local errorMessages = { | ||
| 234 | "No pattern found", | ||
| 235 | "Unexpected characters after the pattern", | ||
| 236 | "Expected a pattern after labels", | ||
| 237 | "Expected a pattern after `/`", | ||
| 238 | "Expected a pattern after `&`", | ||
| 239 | "Expected a pattern after `!`", | ||
| 240 | "Expected a valid number after `^`", | ||
| 241 | "Expected `}` right after `{`", | ||
| 242 | "Expected a string, number, `{}` or name after `->`", | ||
| 243 | "Expected a name after `=>`", | ||
| 244 | "Expected a pattern after `(`", | ||
| 245 | "Missing the closing `)` after pattern", | ||
| 246 | "Expected a name or labels right after `%` (without any space)", | ||
| 247 | "Expected a pattern after `{:` or `:`", | ||
| 248 | "Missing the closing `:}` after pattern", | ||
| 249 | "Expected a name after `=` (without any space)", | ||
| 250 | "Expected a pattern after `{~`", | ||
| 251 | "Missing the closing `~}` after pattern", | ||
| 252 | "Expected a pattern or closing `}` after `{`", | ||
| 253 | "Missing the closing `}` after pattern", | ||
| 254 | "Expected a name right after `<`", | ||
| 255 | "Missing the closing `>` after the name", | ||
| 256 | "Expected a pattern after `<-`", | ||
| 257 | "Expected at least one item after `[` or `^`", | ||
| 258 | "Missing the closing `]` after the items", | ||
| 259 | "Expected an item after the `-` (except `]`)", | ||
| 260 | "Expected at least one label after the `{`", | ||
| 261 | "Expected a label after the comma", | ||
| 262 | "Missing closing `}` after the labels", | ||
| 263 | "Missing closing double quote in string", | ||
| 264 | "Missing closing single quote in string", | ||
| 265 | "Expected a pattern after `{|`", | ||
| 266 | "Missing the closing `|}` after pattern", | ||
| 267 | } | ||
| 268 | |||
| 233 | local function compile (p, defs) | 269 | local function compile (p, defs) |
| 234 | if mm.type(p) == "pattern" then return p end -- already compiled | 270 | if mm.type(p) == "pattern" then return p end -- already compiled |
| 235 | local cp, label, suffix = pattern:match(p, 1, defs) | 271 | local cp, label, suffix = pattern:match(p, 1, defs) |
| 236 | if not cp then | 272 | if not cp then |
| 237 | local line, col = lineno(p, p:len() - suffix:len()) | 273 | local line, col = lineno(p, p:len() - suffix:len()) |
| 238 | error("incorrect pattern on line " .. line .. " col " .. col .. ": " .. label, 3) | 274 | error("Line" .. line .. ", Col " .. col .. ": " .. errorMessages[label], 3) |
| 239 | end | 275 | end |
| 240 | return cp | 276 | return cp |
| 241 | end | 277 | end |
