resources.grammar.number.jape Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lang-german Show documentation
Show all versions of lang-german Show documentation
Support for processing German documents
The newest version!
/*
* number.jape
*
* Copyright (c) 1998-2004, The University of Sheffield.
*
* This file is part of GATE (see http://gate.ac.uk/), and is free
* software, licenced under the GNU Library General Public License,
* Version 2, June 1991 (in the distribution as file licence.html,
* and also available at http://gate.ac.uk/gate/licence.html).
*
* Diana Maynard, 02 Aug 2001
*
* $Id: number.jape 19646 2016-10-06 12:35:17Z dgmaynard $
*/
Phase: Number
Input: Token Lookup
Options: control = appelt
///////////////////////////////////////////////////////////////
//Money Rules
Macro: MILLION_BILLION
//note: now includes T for trillion
({Token.string == "m"}|
{Token.string == "million"}|
{Token.string == "Million"}|
{Token.string == "b"}|
{Token.string == "billion"}|
{Token.string == "Billion"}|
{Token.string == "bn"}|
{Token.string == "k"}|
{Token.string == "K"}|
{Token.string == "T"}
)
Macro: NUMBER_WORDS
// two hundred and thirty five
// twenty five
(
(({Lookup.majorType == number}
({Token.string == "-"})?
)*
{Lookup.majorType == number}
{Token.string == "and"}
)*
({Lookup.majorType == number}
({Token.string == "-"})?
)*
{Lookup.majorType == number}
)
Macro: AMOUNT_NUMBER
// enables commas, decimal points and million/billion
// to be included in a number
(({Token.kind == number}
(({Token.string == ","}|
{Token.string == "."}
)
{Token.kind == number}
)*
|
(NUMBER_WORDS)
)
(MILLION_BILLION)?
)
Rule: MoneyCurrencyUnit
// 30 pounds
(
(AMOUNT_NUMBER)
({Lookup.majorType == currency_unit,Lookup.minorType == post_amount})
)
:number -->
:number.Money = {kind = "number", rule = "MoneyCurrencyUnit"}
Rule: MoneySymbolUnit
// $30
// $30 US
// not $1$21
// $20US
(
({Token.symbolkind == currency}|
{Lookup.majorType == currency_unit})
(AMOUNT_NUMBER)
(
{Lookup.majorType == currency_unit, Lookup.minorType == post_amount}
)?
)
:number
-->
:number.Money = {kind = "number", rule = "MoneySymbolUnit"}
Rule: MoneyUnitSymbol
// US $30
(
{Lookup.majorType == currency_unit, Lookup.minorType == pre_amount}
({Token.symbolkind == currency}|
{Lookup.majorType == currency_unit, Lookup.minorType == post_amount})
(AMOUNT_NUMBER)
)
:number
-->
:number.Money = {kind = "number", rule = "MoneyUnitSymbol"}
//////////////////////////////////////////////////////////////
// Percentage Rules
Macro: PERCENT
({Token.string == "%"} |
{Token.string == "percent"}|
({Token.string == "per"}
{Token.string == "cent"})
)
Rule: PercentBasic
// +20%
// minus 10 percent
// two point four percent
(
({Token.string == "+"}|
{Token.string == "-"}|
{Token.string == "minus"}
)?
((AMOUNT_NUMBER|NUMBER_WORDS)
{Token.string == "point"}
)?
(AMOUNT_NUMBER|NUMBER_WORDS)
(PERCENT)
)
:number -->
:number.Percent = {rule = "PercentBasic"}
Rule: PercentSpan
// 20-30%
// two to four percent
(
(AMOUNT_NUMBER|NUMBER_WORDS)
({Token.string == "-"} |
{Token.string == "to"})
(AMOUNT_NUMBER|NUMBER_WORDS)
(PERCENT)
)
:number -->
:number.Percent = {rule = "PercentSpan"}