帖子

【官网】数字问题abnf、bnf应用举例

 关闭 [复制链接]

该用户从未签到

19321  楼主| hygui 发表于 2015-5-25 17:10:30 1#
本帖最后由 xugao2@iflytek. 于 2015-6-1 12:39 编辑

bnf用法举例:
旋转任意角度:
#BNF+IAT 1.0 UTF-8;
!grammar talktemp;
!slot <Numother>;
!slot <NumGe>;
!slot <action>;
!slot <liangci>;
!start <testing>;

<testing>: <action> [<NumGe>] [<NumGe>] [<Numother>] [<NumGe>] [<NumGe>] [<Numother>] [<NumGe>] [<NumGe>] [<Numother>] [<NumGe>] <liangci>;

<action>: 旋转|调整;
<NumGe>: 零|一|二|三|四|五|六|七|八|九|两;
<Numother>:
百|
千|
十|
万;
<liangci>: 度;

abnf用法举例:
#ABNF 1.0;
language zh-CN;
mode voice;
root $_number;
public $_number =   $real ;
$real =$integer { V=rules.integer.V } ;
//$real =$integer { V=rules.integer.V }((点 {V=V+'.'} ) ($digit_all{V=V+rules.digit_all.V} )<1->)<0-1>; //带小数
$integer=($natural{V=rules.natural.V }|零 {V='000000000000'} ) ;
$natural =  { g2=g1=g0='0000' }   
( ( $group { g0=rules.group.V} ) |
  (   $group   (万)  { g1=rules.group.V } ) |
  (   $group   (万)  { g1=rules.group.V } (零)  <0-1>     
      $group {g0=rules.group.V} ) )  {V=g2+g1+g0} ;
$group =
{d3=d2=d1=d0='0'}   
( (  $digit {d0=rules.digit.V} )|
( {d1='1'}    ($digit {d1=rules.digit.V} ) <0-1>(十) ) |
( {d1='1'}    ($digit {d1=rules.digit.V} ) <0-1> (十)    $digit {d0=rules.digit.V} ) |
(   $digit   (百)  {d2=rules.digit.V} ) |
(   $digit   (百)  {d2=rules.digit.V}  (零)   $digit {d0=rules.digit.V} )       |
(   $digit   (百)  {d2=rules.digit.V}  {d1='1'}     
(   $digit {d1=rules.digit.V} )  <0-1>   (十) )       |
(   $digit   (百)  {d2=rules.digit.V}  {d1='1'}   
(   $digit {d1=rules.digit.V} )  <0-1>   (十)    $digit {d0=rules.digit.V} )       |
(   $digit   (千)  {d3=rules.digit.V} )       |
(   $digit   (千)  {d3=rules.digit.V}    (零)    $digit {d0=rules.digit.V} )       |
(   $digit   (千)  {d3=rules.digit.V}    (零)  {d1='1'}   
(   $digit {d1=rules.digit.V} )  <0-1>   (十) )      |
(   $digit   (千)  {d3=rules.digit.V}    (零)  {d1='1'}
(   $digit {d1=rules.digit.V} )  <0-1>   (十)    $digit {d0=rules.digit.V} )    |
(   $digit   (千)  {d3=rules.digit.V}    $digit   (百)  {d2=rules.digit.V} )       |
(   $digit   (千)  {d3=rules.digit.V}    $digit   (百)  {d2=rules.digit.V}    (零)    $digit {d0=rules.digit.V} )      |
(   $digit   (千)  {d3=rules.digit.V}   
     $digit   (百)  {d2=rules.digit.V}  
{d1='1'} (   $digit {d1=rules.digit.V} )  <0-1>   (十) )  |
(   $digit (千)  
     $digit   (百)  {d2=rules.digit.V}  
{d1='1'}    (   $digit {d1=rules.digit.V} )  <0-1>   (十)   
     $digit {d0=rules.digit.V} ) )  {V=d3+d2+d1+d0} ;
$digit =
(
(一 {V='1'} )       |
(二 {V='2'} )       |
(两 {V='2'} )       |
(三 {V='3'} )       |
(四 {V='4'} )       |
(五 {V='5'} )       |
(六 {V='6'} )       |
(七 {V='7'} )       |
(八 {V='8'} )       |
(九 {V='9'} ) ) ;
$digit_all =
(
(零 {V='0'} )       |
(一 {V='1'} )       |
(幺 {V='1'} )       |
(二 {V='2'} )       |
(两 {V='2'} )       |
(三 {V='3'} )       |
(四 {V='4'} )       |
(五 {V='5'} )       |
(六 {V='6'} )       |
(七 {V='7'} )       |
(八 {V='8'} )       |
(九 {V='9'} ) ) ;


xugao2@iflytek. 发表于 2015-5-26 08:29:42
2#
{:soso_e142:}
使用道具 举报 回复