(SCHEME)转换单词 - >数字

时间:2016-03-06 04:41:38

标签: parsing numbers scheme racket lexer

我已将此程序的大部分内容删除,但我正在尝试弄清楚如何为此程序完成语法。该程序使用词法分析器和解析器将单词转换为数字(IE。"百万" - > 100000) 我的一切工作都达到了数千人。

这是解析器的语法

  #lang scheme

(S [(zero) $1]
   [(L) $1])
(zero [(ZERO) 0])
**(L [(T) $1]
   [(T D) (expt (thousands-number $1) 10)]
   [(T D L) $1])**
(T [(H) $1]
   [(A HUNDRED H) (+ (* $1 100) $3)]
   [(A HUNDRED) (* $1 100)])
(H [(B) $1]
   [(C) $1]
   [(C B) (+ $1 $2)]) 
(A [(UNDERTEN) (undertwenty-number $1)])
(B [(UNDERTWENTY) (undertwenty-number $1)]
   [(A) $1])
(C [(TENS) (tens-number $1)])
(D [(THOUSANDS) (thousands-number $1)])
)
 )
)

我试图使用指数10来获得数字。 其他一切工作都低于1000."八千"只返回8.

1 个答案:

答案 0 :(得分:0)

以下是更新后的代码和已修复

setImmediate(true)

现在可以使用高达10亿的数字。