問題タブ [grammar-kit]

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 投票する
1 に答える
98 参照

jetbrains-ide - Grammar-Kit で構造化データ型を定義するには?

このように構造化/カスケードされたドメイン固有言語 (DSL) を定義したい

私の理解では、次のルールが必要です。

  • ROOT および TODO オブジェクトは、キーワードで始まり、END で終わる必要があります。
  • ROOT には NAME 属性が必要です。
  • TODO には DESC 属性が必要です
  • TODO は ROOT で 0..n 回

このようなルールセットを BNF で表現するにはどうすればよいですか?

0 投票する
1 に答える
770 参照

vhdl - VHDL ' (tick) トークンの字句解析

VHDL では、' 文字を使用して文字トークンをカプセル化するie '.'か、属性セパレータとして使用できます (CPP の :: トークンと同様) ie string'("hello")

この問題は、文字を含む属性名を解析するときに発生しますie string'('a','b','c')。この場合、単純なレクサーは最初'('の文字を誤って文字としてトークン化し、その後の実際の文字はすべて台無しになります。

2007 年から comp.lang.vhdl Google グループにスレッドがあり、 「Lexing the ' char」というタイトルの同様の質問 があり、ユーザー diogratia による回答があります。

問題レポート IR1045 を参照してください: http://www.eda-twiki.org/isac/IRs-VHDL-93/IR1045.txt

上記のコード フラグメントからわかるように、最後のトークンをキャプチャして、次のように特定するために使用できます。

先を見越したり、後戻りしたりせずに。

ただし、私の知る限り、flex は解析された最後のトークンを追跡しません。

最後に解析されたトークンを手動で追跡する必要なく、この字句解析タスクを達成するためのより良い方法はありますか?

それが役立つ場合は、IntelliJ GrammarKit を使用しています。