1

まあ...私はtintin-scriptを含むファイルを持っています。今では、すべてのアクションと置換を取得して、Ruby を使用して Web サイトで適切に並べ替えられていることを示すことができました。これにより、概要を把握するのに役立ちます。

TINTINスクリプトの例

#substitution {You tell {([a-zA-Z,\-\ ]*)}, %*$}
              {<279>[<269> $sysdate[1]<279>, <269>$systime<279> |<219> Tell  <279>] <269>to   <219>%2<279> : <219>%3} 
              {4}
#substitution {{([a-zA-Z,\-\ ]*)} tells you, %*$}  
              {<279>[<269> $sysdate[1]<279>, <269>$systime<279> |<119> Tell  <279>] <269>from <119>%2<279> : <119>%3} 
              {2}

#action {Your muscles suddenly relax, and your nimbleness is gone.}
{
    #if {$sw_keepaon}
    {
        aon;
    };
} {5}

#action {xxxxx}
{
    #if {$sw_keepfamiliar}
    {
        familiar $familiar;
    };
} {5}

私のRubyアプリでそれらを取得するには、スクリプトファイルを変数の「入力」に読み込み、次のパターンを使用して「入力」をスキャンします

pattern = /(?<braces>{([^{}]|\g<braces>)*}){0}^#(?<type>action|substitution)\s*(?<b1>\g<braces>)\s*(?<b2>\g<braces>)\s*(?<b3>\g<braces>)/im

input = ""

File.open("/home/igambin/lmud/lmud.tt") { |file| input = file.read }

input.scan(pattern) { |prio, type, pattern, code|
  ## here i usually create objects, but for simplicity only output now
  puts "Type    : #{type}"
  puts "Pattern : #{pattern}"
  puts "Priority: #{prio}"
  puts "Code    :\n#{code}"
  puts
}

ここで、私の考えは、netbeans プラットフォームを使用してモジュールを作成し、概要を維持するだけでなく、tintin スクリプト ファイルの編集を支援することでした。そのため、エディタ ウィンドウでファイルを開くには、tintin ファイルを解析し、ファイルからすべての「アクション」と「置換」を取得して eTable に表示する必要があります。修正ウィンドウ。

私はモジュールをセットアップし、これまでのところすべての準備ができています. 名前付きグループのキャプチャのようで、特にこれらのグループの再帰的なアプリケーションは Java ではサポートされていません。それがなければ、実用的な解決策見つけることができないようです...

ルビーの模様がまた…

pattern = /(?<braces>{([^{}]|\g<braces>)*}){0}^#(?<type>action|substitution)\s*(?<b1>\g<braces>)\s*(?<b2>\g<braces>)\s*(?<b3>\g<braces>)/im

同じに一致するJavaパターンを作成するのを手伝ってくれる人はいますか?

ヒント/ヒント/アイデア、特に解決策または (解決策に近いコメント) について、事前に感謝します!

4

2 に答える 2

1

同じに一致するJavaパターンを作成するのを手伝ってくれる人はいますか?

いいえ、誰にもできません。Java の正規表現エンジンは再帰パターンをサポートしていません (Ruby 1.9 のように)。

于 2011-10-24T21:22:05.667 に答える