请帮忙。
我有一些文字 “99285/25 紧急情况 850.0 650.00 的 04/05/12 的
的INTERPRET 813.44 $ 36.00 的 04/05/12 CARLOS “的
我需要将 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请帮助。
谢谢。
答案 0 :(得分:0)
如果您想将650.00
标记为Money,则还会将813.44
(例如)标记为Money。
如果你真的想这样做,你只需要修改你的JAPE规则,以匹配由Token.kind == number
或.
与,
隔开的Token.kind == number
。
换句话说,您使用可选的currency_unit
做了同样的事情。
在JAPE中,?
运算符允许括号中的模式是可选的。
你可以试试这个:
Rule: MoneyCurrencyUnit
(
(AMOUNT_NUMBER)
({Number.majorType == currency_unit})?
)