Я создаю анализатор C++ с помощью PEG.js, и мне нужно иметь возможность использовать cin
. С JS после матча, когда я использую prompt()
, (альтернативная) онлайн-версия выдает ошибку "Ошибка анализа : подсказка не определена'. Я пытаюсь использовать инициализатор для создания функции для репликации prompt
(вероятно, не оптимизированной, я просто пробовал ее как решение). Однако, когда я это делаю, это все равно дает мне ошибку. Я также пытался использовать window.prompt
, но опять же, это не работает. Вот пример того, что я делаю:
{
function cin() {
window.prompt("");
}
function changeVar(variable, newValue) {
if(typeof variable === typeof newValue) {
variable = newValue;
} else if(typeof variable === 'undefined') {
alert("You can't assign a value to a variable if the variable isn't declared yet!");
} else {
alert("Bad assignment. In C++, a variable *must* have the same type *all the time*.");
}
}
}
stdin =
whitespace* "std::cin" whitespace* ">>" whitespace* varToBeChanged:[a-zA-Z_]+ ";" whitespace*
{ changeVar(varToBeChanged, cin('')); return varToBeChanged; }
whitespace =
space:[ \t]
{ return space; }
а затем в поле тестирования парсера:
std::cin >> variable;
Спасибо, что посмотрели. Я пробовал это искать в Google и SO-искать, но не нашел никаких результатов.
Кроме того, вот основной фрагмент кода со всей (текущей) дополнительной информацией, которая может понадобиться . У меня тоже есть некоторые проблемы с этим, но я попытаюсь разобраться в них самостоятельно, прежде чем задавать еще один вопрос.
prompt
для анализа строкиcin
? Не знаю, что ты здесь делаешь. - person Bergi   schedule 13.05.2014{}
, что позволяет выполнять JS внутри, еслиstd::cin >> [a-zA-Z_]
совпадает. Это не для синтаксического анализа, а для фактического принятия мер, когда найдена строка, упомянутая выше. Кроме того, на случай, если вы запутались,changeVar
— это просто функция для изменения значения переменной без изменения ее типа. - person Alonessix   schedule 13.05.2014whitespace
иchangeVar
определения)? Кстати, как только я добавил их в онлайн-версию, синтаксический анализатор работает хорошо. - person Bergi   schedule 13.05.2014