Phone_Number.gram

Example

#ABNF 1.0;
mode voice;
language en-US;

tag-format <semantics/1.0>;

root $PhoneNumber;

$Digit = (ONE {out = "1"} |
TWO {out = "2"} |
THREE {out = "3"} |
FOUR {out = "4"} |
FIVE {out = "5"} |
SIX {out = "6"} |
SEVEN {out = "7"} |
EIGHT {out = "8"} |
NINE {out = "9"} |
(ZERO | O) {out = "0"} );|

/*
* $AreaCode resolves to a three digit string
* after semantic interpretation.
*/


$AreaCode = { out = "" } ( $Digit { out += rules.Digit } ) <3>;

/*
* $Number resolves to a seven digit string
* after semantic interpretation.
*/


$Number = { out = "" } ( $Digit { out += rules.latest() } ) <7>;

/*
* After semantic interpretation,
* $PhoneNumber resolves to a structure with two member variable strings,
* areacode (which defaults to "858"), and number.
*/


$PhoneNumber =
(
[AREA CODE | ONE]
$AreaCode { out.areacode = rules.latest() }
$Number { out.number = rules.latest() }
) |
( $Number ) { out.areacode = "858"; out.number = rules.latest() };
© 2012 LumenVox LLC. All rights reserved.