В настоящее время я пишу грамматику 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 в конце объявления функции. Для этого мне нужно иметь возможность выполнить {действие], когда выражение НЕ СООТВЕТСТВУЕТ.
Кто-нибудь знает, как это сделать? Я знаю, как запустить {действие], когда выражение действительно совпадает, как вы можете видеть из моего оператора return.
Кроме того, было бы здорово, если бы местоположение ошибки могло указывать на часть выражения, которая уже была проанализирована перед отсутствующим END.
С наилучшими пожеланиями,
Рикардо