1

请帮忙。

我有一些文字 “ 99285/25 EMERGENCY SE 850.0 650.00 04/05/12

解释 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 语法的新手,请帮忙。

谢谢你。

4

1 回答 1

0

如果您想标记650.00为 Money,您还将标记813.44(例如)Money。

如果你真的想这样做,你只需要修改你的 JAPE 规则以匹配由 a或 aToken.kind == number分隔的a 。.,Token.kind == number

换句话说,你做了同样的事情,但有一个可选的currency_unit.

在 JAPE 中,?运算符允许括号中的模式是可选的。你可以试试这个:

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