Я пишу скрипт в JS, который использует Jison (https://zaa.ch/jison/) в качестве генератора синтаксического анализатора; Я не смог найти в его документах ничего похожего на следующее:
// index.js - the script using the jison parser
let myParser = require('/path/to/parser').parser;
// some logic here to determine what the state should be
myParser.setState('someState');
myParser.parser('someInput');
myParser.popState();
// etc.
У меня есть логи c, которые очищают ответы от сервера и определяют некоторую информацию об этом выводе перед отправкой мой парсер Можно ли установить состояние моего анализатора вне самого файла .jison
?
Спасибо!
Редактировать: добавив дополнительную информацию ниже:
Я заметил в коде, сгенерированном Jison, функцию / объект парсера экспортируемый имеет поле lexer
. У лексера есть методы pushState()
и popState()
. Я пытался вызвать это, но я получаю следующую ошибку:
Пример:
let myParser = require('/path/to/parser').parser;
myParser.lexer.pushState('someState');
myParser.parse('someInput');
myParser.lexer.popState();
Выход:
node index.js
C:\path\to\my\script\TheParser.js:608
this.conditionStack.push(condition);
^
TypeError: Cannot read property 'push' of undefined