gpt4 book ai didi

javascript - PEG.js-如果表达式不匹配则抛出错误

转载 作者:行者123 更新时间:2023-12-02 10:51:14 25 4
gpt4 key购买 nike

我目前正在编写PEG.js语法,并且希望它输出自定义错误。例如,我目前具有用于创建函数的这种结构。

//Function Declaration
FUNCTION_DECLARATION =
FUNCTION __ t:(TYPE/VOID) __ n:KEY a:ARGUMENT_DECLARATION
_ b:FUNCTION_BLOCK
(END)
{return {context : "FUNCTION_DECLARATION",location:location(), type:t,name:n,
args:a, block:b};
}

我希望能够检测特定的错误,例如在函数声明末尾缺少END标记。为此,我需要能够在表达式不匹配时运行{action]。

有谁知道如何做到这一点?我只知道当表达式实际匹配时如何运行{action],正如我在return语句中看到的那样。

此外,如果错误位置有可能指向表达式中在缺少的END之前已经解析的部分,那将是很好的。

最好的祝福,
里卡多

最佳答案

PEG.js已经包含一些自定义错误处理。运行parse()方法时,您可以捕获该错误并检查location属性以查明错误的来源。这是一个例子:

 try {
var entry = Parser.parse(text);
} catch (err) {
if (!err.hasOwnProperty('location')) throw(err);
// Slice `text` with a little context before and after the error offset
alert('Error: ' + text.slice(err.location.start.offset-10,
err.location.end.offset+10).replace(/\r/g, '\\r'));
}

编辑

尝试查找 hereerror方法可能对您有所帮助。 Here's一个从github问题中提取的示例。
start = sign:[+-]? digits:[0-9]+ {
var result = parseInt((sign || "") + digits.join(""), 10);

if (result % 2 == 0) {
error("The number must be an odd integer.");
}

return result;
}

关于javascript - PEG.js-如果表达式不匹配则抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51046836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com