問題タブ [jflex]
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.
syntax-highlighting - Intellij 言語プラグイン: JFlex lexer を使用した編集時の構文の強調表示
Intellij Vala プラグインを開発しています。ファイルの編集中にキーワードの強調表示を機能させることに固執しています。
ファイルを開くと、すべてのキーワード (これまでのところclass
とのみref
) が正しく強調表示されます。ただし、入力class
しているときは強調表示されません (ファイルを再度開いた後のみ)。興味深いのは、ref
すべてが機能することです。
各文字を入力すると、レクサーがわずか 4 文字の長さのテキスト セグメントで開始されることがわかりました。その結果、ref
それよりも短いものが強調表示されますが、そうではclass
ありません。文字列の場合も同様です。文字列が 4 文字より短い場合は強調表示されます (例: "a"
)。Intellij SDK のソース コードを調べたところ、ドキュメントが変更されるたびに分析されるテキストの長さは、何らかのセグメントを使用して計算されます。私は Intellij アーキテクチャの経験が十分ではありませんが、それを理解することはできません。誰か助けてくれませんか?
私のプラグインのソース (これまでのところ特別なものはありません) はこちらです。Intellij Community ビルド139.225.3を使用しています
java - JFlex 1.4.3 で小数を認識する
私の SL.lex ファイルには、小数の正規表現があります。
そして、
しかし、ドットで数字を認識しようとするたびに失敗し、エラーが発生します。
それ以外の '。' \\.
、\.
、も試し"."
ましたが、毎回失敗します。
flex-lexer - Flex function unput(int cahr), JFlex では同じ関数
C Flex には、文字 c を入力ストリームに戻すことができる関数 unput(int c) があることがわかっています。JFlex にも同様の関数があるのではないかと思います。どうも!
java - CUPとjflexの連携
http://www2.cs.tum.edu/projects/cup/examples.php
http://www.cs.princeton.edu/~appel/ のヘルプを使用して、parser.java と yylex.java をリンクしようとしています。現代/Java/CUP/manual.html
http://jflex.de/manual.html
しかし、これらのエラーが発生しています。
エラー: Yylex は抽象的ではなく、スキャナーの抽象メソッド next_token() をオーバーライドしません
エラー: Yylex の next_token() は Scanner の next_token() を実装できません
それらを解決するには?
私の mini.flex ファイルは次のとおりです。
私の mini.cup ファイルは次のとおりです。
私は以下を使用してコンパイルします:
スローされるエラーは次のとおりです。
Parser.java:19: 警告: [非推奨] lr_parser の lr_parser() は非推奨になりました public Parser() {super();}
^ Parser.java:22: 警告: [非推奨] lr_parser の lr_parser(Scanner) は非推奨になりましたpublic Parser(java_cup.runtime.Scanner s) {super(s);}
^ Parser.java:96: 警告: [非推奨] lr_parser の lr_parser(Scanner) は非推奨になりました public Parser (java.io.Reader input) { super (新しい Yylex(入力)); }
^ Parser.java:137: 警告: [キャスト] Object への冗長なキャスト Object start_val = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value ;
^ Yylex.java:12 :エラー: Yylex は抽象化されておらず、スキャナー
の public クラスの抽象メソッド next_token() をオーバーライドしていません Yylex はjava_cup.runtime.Scanner を実装しています() in Scanner public int next_token() throws java.io.IOException { ^ return type int is not compatible with Symbol Yylex.java:631: error: incompatible types { return new java_cup.runtime.Symbol(sym.EOF); } ^ 必須: int検出: シンボル3 エラー4 警告
java - JavascriptからJava正規表現への変換が機能しない
私の正規表現は次のとおりです。
その正規表現の目的は、「リスト」が存在するかどうかを調べることです。リストには以下を含めることができます: 空のリスト( []、数値、「引数を渡すことができるメソッド」、シンボル、単純な引用符で囲まれた文字列、変数など...ほとんど何でも)。
また、次のテスト ケースに一致する必要があります: (カンマは含まれません)
[]、[ほら、23、「アルファ」]、[A、b、c(x)、d]
私が理解しているようにjs正規表現を使用しているregexr.comで動作しましたが、正規表現をJavaに変換すると、同じテストケースを識別できません。なぜこれが起こっているのかについての手がかりはありますか?
java変換した正規表現↑(冒頭と末尾の引用は除く)
jflex をツールとして使用して字句解析器を構築しています
jflex - JFlex で Java コメントを無視する
こんにちは、JFlex を使用して Java コメントを無視しようとしていますが、うまく動作させることができず、実行中に常にエラーが発生します。私はこれらの2行を使用しました:
私もさまざまなことを試しcommentary = [/][/].*
ましたが、成功しませんでした。
regex - 文字列リテラルに改行と改行を一致させる正規表現
文字列リテラルを改行 (\n) とキャリッジ リターン (\r) の両方の文字と一致させるのに苦労しています。例えば:
私が試したのは
しかし、この正規表現は、\r
. 誰でもこれで私を助けることができますか?
ありがとうございました。