语言定义的其他示例

728 篇文章 1 订阅
86 篇文章 0 订阅

语言定义的其他示例

 

在本章的以后部分,我们会看到有关如何解析简单的算术语言的两个扩展示例。第一个用fslex.exe 和 fsyacc.exe 实现,第二个用开源的解析库 FParsec。这种语言与前一章的非常相似,语言规范完全相同,有四则运算,只是不再使用连接符(combinator),语言本身有文字格式 *、+、/、- 来表示运算。扩展的巴氏范式(Extended Backus–Naur Form,EBNF),用下面的代码定义这种语言:

 

digit     = "1"| "2"| "3"| "4"| "5"| "6"| "7"| "8"| "9"| "0";

numpart   = digit , {digit } ;

number    = [ "-" ] ,numpart , [ ".", numpart ] ;

operator  = "+"| "-"| "*"| "/";

character =  "A"| "B"| "C"| "D"| "E"| "F"| "G"

            | "H"| "I"| "J"| "K"| "L"| "M"| "N"

            | "O"| "P"| "Q"| "R"| "S"| "T"| "U"

            | "V"| "W"| "X"| "Y"| "Z"

            | "a"| "b"| "c"| "d"| "e"| "f"| "g"

            | "h"| "i"| "j"| "k"| "l"| "m"| "n"

            | "o"| "p"| "q"| "r"| "s"| "t"| "u"

            | "v"| "w"| "x"| "y"| "z"| "_";

ident        = character , {character } ;

ident or num =ident | number ;

expression   = ident or num ;

                | [ "(" ] ,ident or num , operator , ident or num , [ ")" ] ;

 

这种语言的表达式像这样:

 

1 + 2

5.87 + (8.465 / 3.243)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值