問題タブ [lexer]

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 に答える
1219 参照

antlr - ANTLR3レクサーの優先順位

'..'ANTLR3レクサーからトークンを作成します。これは、次のような式をつなぎ合わせるために使用されます。

だから、私は付け加えました、

問題は、私がすでにルールを持っているということです:

そして、上記の例[3]では1..2、として一致していますFLOAT(最初の後に続くのは、INTではなく.別のものであるため理由はわかりませんが、そうです)。.

DOTDOTSEPレクサールールの優先順位を変更して、最初に一致させてから、次に一致させる方法があるかどうか疑問に思いますFLOAT

ここを見ると、私は負けているように見えます"The rule having the greatest count is the winner.",が、それを回避する方法があるのだろうかと思います。

PSINTは次のように定義されます...

編集。 もう少しテストすると、FLOATルールに直接一致するほど単純ではないと思います。(質問を変更するつもりでしたが、今は答えがあるので、変更しません。)問題(私は信じています)はまだレクサールールの優先順位にあるので、質問は同じままです。

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

parsing - 入力シーケンスを字句解析するときにリテラルを指定する文字の名前は?

字句解析処理でリテラルの開始を指定する文字の「用語名」とは何かを知りたいです。

例えば:

  • 文字列は " 文字で始まり"文字で終わります。
  • 正規表現リテラル - /文字付き。
0 投票する
1 に答える
464 参照

ruby - MRI Ruby 1.9.2 での字句解析

現在、コンパイラの理論と実践を学んでいます。Ruby は私が日常的に選んでいる言語なので、そのレクサーと構文解析を調べてみました。ルビーには別のレクサーがありますか? もしそうなら、それはどのファイルに記述されていますか?

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

parsing - ANTLR Lua の長い文字列の文法規則

Lua 用の ANTLR パーサーを作成しようとしています。そこで、Nicolai Mainero が作成した文法 (ANTLR のサイト、Lua 5.1 grammar で入手可能) を取り、作業を開始しました。

文法は得意です。機能しないことが 1 つあります: 長い文字列。

Lua 仕様規則: リテラル

文字列は、長い括弧で囲まれた長い形式を使用して定義することもできます。レベル n の左長い括弧は、左角括弧の後に n 個の等号が続き、その後に別の左角括弧が続くものとして定義します。したがって、レベル 0 の左大括弧は [[ と記述され、レベル 1 の左大括弧は [=[ と記述されます。以下同様です。閉じ長括弧も同様に定義されます。たとえば、レベル 4 の閉じ長括弧は ]====] のように記述されます。長い文字列は、任意のレベルの開き長い括弧で始まり、同じレベルの最初の閉じ長い括弧で終わります。このブラケット形式のリテラルは、複数行にわたって実行でき、エスケープ シーケンスを解釈せず、他のレベルの長いブラケットを無視します。それらには、適切なレベルの閉じ括弧以外のものを含めることができます.適切なレベル.

私の質問はこれに近い意味ですが、ツールは異なります。

LONGSTRING のちょっとした例:

「=」記号を使用しない LONGSTRING のルールは次のとおりです。

誰か助けてくれませんか?ありがとう!

0 投票する
0 に答える
1210 参照

c++ - QScintilla: 新しいレクサーを作成する方法、または既存のものを変更する方法は?

C++ ハイライトのデフォルトの字句解析器はあまり具体的ではありません。

少なくとも別の色を指定できるようにしたい:

型キーワード (void、int、float など) 命令キーワード (if while do return for など) クラス関連キーワード (テンプレート クラスの仮想フレンド) 型修飾子キーワード (static const extern unsigned など)

LexerCPPソースでこれを見つけました:

私はこれを試しました-qscilexercpp.cppをコピーして新しいファイル名qscilexercxx.cppに貼り付けます-上記のコードをスイッチで適切なスイッチに置き換えます:

適切な列挙型を作成した後:

既存のものの終わりに。

現在、私のテキストのほとんどは黒です。返されたキーワードの enum と char 配列の間のリンクについて何かを見逃していたと確信しています...

誰かが私を何かに案内したり、助けたりできますか?

0 投票する
5 に答える
5069 参照

c# - C# Lua パーサー/アナライザー

まず最初に。

私は C# で少し LUA-Ide を書いています。コードの実行は、LuaInterface というアセンブリによって行われます。コード編集は Scintilla-Port によって行われ、RAD / UI インターフェイスは拡張可能な IDesignSurfaceExt Visual Studio (一方向のコード生成) を介して行われます。ファイル処理は、プロジェクト パッケージ ファイルとして使用される小さな sql-lite-db によって提供されます。

というわけで、必要なものはすべてそろっています...

未解決の唯一の問題は、lua のパーサー/レクサーです。コードを読み込んで実行したくない! Lua コードを含む文字列を解析し、関数やグローバル変数などの情報を取得したいだけです。私はパーサーを完全に自分で書きたくありません... (私は正規表現が嫌いです - 私はいつも間違っています ^^)

.net lua パーサーへのリンクを見つけた人はいますか?

明確にするために-この時点でコードを分析したいだけです-実行したくありません!

前もって感謝します!

コーレルゴット

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

c# - カスタム lexer の Scintilla フォールディング

私は Scintilla コントロールに ScintillaNET ラッパーを使用しており、ASM の折りたたみを実装したいので、http://sphere.sourceforge.net/flik/docs/scintilla-folding.htmlを参照してその方法を調べました。私はこれまで C++ を扱ったことがなかったので、理解しようとして多くの問題を抱えています。マージンクリックイベントを登録すると書かれていますが、どこでどのように登録すればよいですか? また、一部のプロパティをレクサーに設定すると表示されますが、正確にはどこにどのように設定すればよいですか?

私は scintilla 利益団体に尋ねてみましたが、そこから何の助けも得られませんでした. 誰かが scintilla で独自のレクサーの折りたたみを設定している場合は、それを実装する方法について助けていただければ幸いです。ありがとう。

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

c - (f)lex 用の独自のパーサーを作成するには?

レクサーを flex で生成しました。

C で独自のパーサーを作成したいのですが、レクサーからトークンを取得する方法がわかりません。yylex() 呼び出しに「lexer.c」を含める必要がありますか? 次に、printf() を呼び出す代わりに列挙型を返す必要があります。bison/yacc を使わずにこれを行う最善の方法は何ですか?

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

c# - 手動レクサーを備えたANTLRパーサー

C#ベースのプログラミング言語コンパイラを手動のレクサー/パーサーからAntlrに移行しています。

Antlrは、通常はほとんど機能するため、深刻な頭痛の種になっていますが、機能しない小さな部分があり、解決するのが非常に困難です。

私の頭痛のほとんどは、パーサーではなく、Antlrのレクサー部分が原因であることがわかりました。次にparser grammar X;、手動で記述したレクサーと、Antlrで生成されたパーサーを使用できる可能性があることに気づきました。

だから私はこのトピックに関するより多くのドキュメントを探しています。カスタムITokenStreamが機能する可能性があると思いますが、このトピックに関するオンラインドキュメントは事実上ないようです...

0 投票する
0 に答える
1546 参照

regex - 正規表現から DFA へのアルゴリズム

Dragon Book で説明されている正規表現から DFA への直接変換アルゴリズムに基づいて、正規表現ベースの字句解析ジェネレーターを作成しています。

nullablefirstposlastpos、およびfollowpos連結ノード、交互ノード、およびクリーネスター ノードの関数を計算します。+(1 回以上) および?(0 回または 1回)の数量詞を追加したい。

nullablefirstposlastposは簡単に計算できますが、 についてはよくわかりませんfollowpos。これらの量指定子を構文解析段階の一部として実装せず、代わりに字句解析段階で書き直す方がよいでしょうか (これは kleene-star とオルタネーションに対する「構文糖衣」にすぎないと思います)。