PEG.js가있는 C++ 파서를 만들고 있는데 cin
을 사용할 수 있어야합니다. 경기 후 JS에서 prompt()
을 사용하면 online version은 'Parse Error : prompt is not defined'오류를 throw합니다. prompt
을 복제하는 함수를 만들기 위해 이니셜 라이저를 사용하려고합니다. (아마도 최적화되지 않았을뿐입니다. 그러나, 내가 이것을 할 때, 그것은 여전히 나에게 오류를 준다. 나는 window.prompt
을 사용하여 시도했지만 다시는 작동하지 않습니다. 여기에 내가 뭘하는지의 예PEG.js : 프롬프트를 사용하는 방법?
{
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;
보고 주셔서 감사합니다. 나는 이것을 검색하고 SO 검색을 시도했지만이 검색 결과를 찾지 못했습니다.
또한 여기에 main piece of code이 있으며, 현재 필요한 모든 추가 정보가 필요합니다. 나는 이것에 대해서도 몇 가지 문제를 겪고있다. 그러나 나는 또 다른 질문을 게시하기 전에 그것들을 스스로 알아 내려고 노력할 것이다. window
또는 DOM과 같은 어떤 UI에 액세스 할 수 없습니다 -
왜'cin' 문자열을 분석하기 위해 * prompt *을 사용해야합니까? 여기서 무엇을하고 있는지 잘 모릅니다. – Bergi
누군가 적절한 PEG.js 형식을 제거했습니다. 마지막 줄은'{}'안에 들어가서,'std :: cin >> [a-zA-Z_]'가 일치하면 JS를 실행하도록되어있다. 구문 분석을위한 것이 아니라 위에서 언급 한 문자열이 발견되면 실제로 조치를 취하는 것입니다. 또한, 혼란 스러울 때를 대비하여,'changeVar'는 변수의 값을 변경하지 않고 변수의 값을 변경하는 함수입니다. – Alonessix
PEG.js가 작동하는 방식을 오해했습니다. 분명히 파서뿐만 아니라 통역사이기도합니다. 구문에 대한 변경 사항을 롤백했습니다. – Bergi