我正在用C++创建一个PEG.js解析器,我需要能够使用cin。在匹配后的JS中,当我使用prompt()时,(备用) 在线版本抛出一个'Parse : 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;谢谢你找我。我试过用谷歌搜索这个,然后搜索这个,但是我没有找到任何结果。
另外,这里是主要代码段,对于任何人都需要的所有(当前)额外信息。我在这方面也有一些问题,但是在我发布另一个问题之前,我会尝试自己解决这些问题。
发布于 2014-05-13 00:17:11
如果您使用的是http://peg.arcanis.fr/,那么解析器代码将在网络工作者中执行--它无法访问任何UI,比如window或DOM。错误"undefined variable“的字面意思是没有声明window或prompt。
如果您将代码粘贴到http://pegjs.majda.cz/online中,它将在网页环境中执行,并且工作完美。
https://stackoverflow.com/questions/23617020
复制相似问题