我正在使用PEG.js创建C ++解析器,我需要能够使用cin
。使用匹配后的JS,当我使用prompt()
时,(备用)online version会抛出错误“解析错误:未定义提示”#39;。我正在尝试使用初始化程序来创建一个复制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;
谢谢你的期待。我试过谷歌搜索和搜索这个,但我还没有找到任何结果。
此外,这里是main piece of code,适用于任何人需要的所有(当前)额外信息。我也遇到了一些问题,但在发布另一个问题之前,我会尝试自己解决这些问题。
答案 0 :(得分:0)
如果您使用http://peg.arcanis.fr/,那么解析器代码将在Web Worker内执行 - 它无法访问window
或DOM等任何UI。错误“undefined variable
”的字面意思是宣布没有window
或prompt
。
如果您将代码粘贴到http://pegjs.majda.cz/online,则会在网页环境中执行,并且可以正常运行。