2017-01-19 14 views
1

Q:私は私のレクサー・ロジックのため正規表現構文

を使用して必要なのですか?正規表現または多分特別な関数のレクサー?

qマルチコメントの構文で間違いはありますか?

詳細:

私はK/Q/KDB +を(wikiq/kdb+)用のIntelliJアイデアのプラグインを作成しようとしている、と私のプラグインは、別のk language idea pluginに基づきます。

はじめに私はJLexerを使ってレクサーを書こうとしています(これはアイデア・プラグインの標準的な方法です)。私はサポートのq langのコメントが必要です。そして、私は複数行コメントに問題があります。

マイフレックスファイル(この構文は不安定な動作します):

LINE_WS=[\ \t\f] 
WHITE_SPACE={LINE_WS}+ 
NEWLINE=\r|\n|\r\n 
MULTY_COMMENT={NEWLINE} \/ {WHITE_SPACE}* {NEWLINE} (([^\r\n\\][^\r\n]* {NEWLINE})|{NEWLINE})* \\ 
// ... 
<YYINITIAL> { 
    {WHITE_SPACE}    { return com.intellij.psi.TokenType.WHITE_SPACE; } 
    {MULTY_COMMENT}    { return COMMENT; } 
    // ... 

Q言語の構文はコメントsee more):

有効コメント:

  • / this is comment

  • x: 1;/after '/' we see comment, spaces are important

  • / this is a comment \

  • / after single "/" - all lines are comment if we don't find: NEW_LINE + "\"

無効のコメント:

  • / this is't a comment, break line is important \

  • x: 1;/ this is't a comment, spaces are important

  • \ this is't a comment /

リンク:

答えて

1

をこのコードはJFlexのためのQ-のような複数行のコメントを説明します。

LINE_WS=[\ \t\f] 
WHITE_SPACE={LINE_WS}+ 
NEWLINE=\r|\n|\r\n 
MULTY_COMMENT=\/ {WHITE_SPACE}* {NEWLINE} (([^\r\n\\][^\r\n]* {NEWLINE})|{NEWLINE})* \\ 
// ... 
<YYINITIAL> { 
    {WHITE_SPACE}    { return com.intellij.psi.TokenType.WHITE_SPACE; } 
    ^{MULTY_COMMENT}    { return COMMENT; } 
    // ... 
0

ダウンロードして、ここでxmlファイルを試してみてください。 http://www.timestored.com/b/kdb-code-highlighting-in-intellij/

+0

はライアンハミルトンありがとうございました。しかし、それは私が必要なものではありません。強調表示のためのこのXMLは、複数行コメントをサポートしていません。 –

+0

正直言って、私は複数行のコメントを避けるのは間違っていて、実行していないコードの部分が出る可能性があるからです。しかし、もしあなたがコメントを得ることができたら私に知らせてください、そして、私はその記事へのリンクを追加します。 –