码迷,mamicode.com
首页 > 其他好文 > 详细

语言定义的其他示例

时间:2014-06-19 12:29:51      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   ext   color   com   使用   strong   

语言定义的其他示例

 

在本章的以后部分,我们会看到有关如何解析简单的算术语言的两个扩展示例。第一个用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)

语言定义的其他示例,布布扣,bubuko.com

语言定义的其他示例

标签:style   ext   color   com   使用   strong   

原文地址:http://blog.csdn.net/hadstj/article/details/30053617

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!