問題タブ [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.
jetbrains-ide - Grammar-Kit で構造化データ型を定義するには?
このように構造化/カスケードされたドメイン固有言語 (DSL) を定義したい
私の理解では、次のルールが必要です。
- ROOT および TODO オブジェクトは、キーワードで始まり、END で終わる必要があります。
- ROOT には NAME 属性が必要です。
- TODO には DESC 属性が必要です
- TODO は ROOT で 0..n 回
このようなルールセットを BNF で表現するにはどうすればよいですか?
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 を使用しています。