1

助けてください。

「99285/25 EMERGENCY SE 850.0 650.00 04/05/12」という テキストあります

INTERPRET 813.44 $36.00 04/05/12 カルロス "

650.00も Money としてタグ付けする必要があります。Gate は$36.00を Money タグとして自動的に取得します。どうやって指定するの?

Imports: { import static gate.Utils.*; }
Phase: Number  
Input: Token Number  
Options: control = all  

Macro: AMOUNT_NUMBER
({Token.kind == number}
(({Token.string == ","}|  
{Token.string == "."}  
   )  
   {Token.kind == number}  
  )
Rule: MoneyCurrencyUnit  
  (  
      (AMOUNT_NUMBER)  
  ({Number.majorType == currency_unit})  
  )  
:number --> 
  :number {
  {
  {kind = "number", rule = "MoneyCurrencyUnit"}
}
 catch(InvalidOffsetException e) {
 // not possible
 throw new LuckyException("Invalid offset from annotation");
   }
 }

JAPE Grammar を使用するのは初めてです。助けてください。

ありがとうございました。

4

1 に答える 1

0

Money としてタグ付けする場合は、 (たとえば) Money として650.00もタグ付けします。813.44

本当にやりたい場合は、JAPE ルールを変更して、a でToken.kind == number区切られた a.または a の,直後Token.kind == numberに一致するようにする必要があります。

言い換えれば、あなたがしたことと同じですが、オプションのcurrency_unit.

JAPE では、?演算子は括弧内のパターンをオプションにすることができます。おそらくこれを試すことができます:

Rule: MoneyCurrencyUnit  
  (  
      (AMOUNT_NUMBER)  
  ({Number.majorType == currency_unit})?  
  )  
于 2015-05-10T13:28:43.460 に答える