0

PEG.js を使用して C++ パーサーを作成していますが、cin. After-match 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;

ご覧いただきありがとうございます。これをグーグルで検索し、これを検索してみましたが、結果が見つかりませんでした。

また、ここにコードの主要部分があり、誰もが必要とするすべての (現在の) 追加情報が含まれています。これにもいくつか問題がありますが、別の質問を投稿する前に、自分で解決しようとします。

4

1 に答える 1

0

http://peg.arcanis.fr/を使用している場合、パーサー コードはWeb Workerwindow内で実行されます。Web Worker はや DOMなどの UI にアクセスできません。エラー " undefined variable" は文字通り、windowまたはprompt宣言されていないことを意味します。

コードをhttp://pegjs.majda.cz/onlineに貼り付けると、Web ページ環境で実行され、問題なく動作します。

于 2014-05-13T00:17:11.130 に答える