2014-02-10 72 views
1

請幫助。GATE標記註解數字,貨幣,貨幣

我有一些文字 「25分之99285 緊急SE 850.0 650.00 04/05/12

INTERPRET 813.44 $ 36.00 04/05/12 CARLOS 」我需要標記65 0.00也爲金錢,門會自動選擇$ 36.00金錢的標籤。我如何指定它?

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"); 
    } 
} 

我是新來的使用日語語法請幫助。

謝謝。

回答

0

如果您想將650.00標記爲Money,那麼您還將標記爲813.44(例如)作爲Money。

如果你真的想這樣做,你只需要修改你的戲言,匹配由.或剛過Token.kind == number一個,分離Token.kind == number

換句話說,你做了同樣的事情,但有一個可選的currency_unit

在JAPE中,?運算符允許括號中的模式是可選的。 你可以試試這個:

Rule: MoneyCurrencyUnit 
    ( 
     (AMOUNT_NUMBER) 
    ({Number.majorType == currency_unit})? 
)