問題タブ [nearley]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
133 参照

javascript - Nearley でネストされたマクロを使用すると、データの結果がネストされます

問題

一見したところ、深刻なバグがなければマクロを適切にネストすることはできません。

主な問題は、データ オブジェクトからマクロの値を取得すると、この値がリストにネストされることです。

期待される結果は です[ 'test' ]

簡単な修正は data[0][0] を返すことですが、結果がマクロのレイヤーごとにネストされるため、それだけでは不十分です。

バグを修正するdata => data[0][0]ために、各マクロに使用できます。しかし、これは絶対に醜いです。

本当の解決策は、動的スコープを使用することです。(私の知る限り) パラメーターなしでマクロを作成することはできないため、役に立たないパラメーターを使用しましょう。

これにより、以前に発生したネスティング地獄が停止します。500 のサブマクロを通過しても、同じ結果が得られます。しかし、最後の sub-macro に data[0][0] を配置する必要があります。bこれにより、bマクロを単独で使用aすることができなくなります。これを機能させるには、使用する必要があります。

- 最後のマクロを単独で使用できるようにする - data => data[0][0] の使用を避ける