随笔-91  评论-137  文章-0  trackbacks-0

基本语法:

 1 %token    "%token" "%letter" "%start"            ;
 2 %token    ":" ";" "->" "|"                ;
 3 
 4 %letter string    :    "{string}"            ;
 5 %letter symbol    :    "{symbol}"            ;
 6 
 7 %start program                        ;
 8 
 9 string_list    ->    string_list string
10         |    string
11         ;
12 
13 symbol_list    ->    symbol_list symbol
14         |    symbol
15         ;
16 
17 program        ->    item_list
18         ;
19 
20 item_list    ->    item_list item
21         |    item
22         ;
23 
24 item        ->    token_def ";"
25         |    letter_def ";"
26         |    start_def ";"
27         |    rule_def ";"
28         |    ";"
29         ;
30 
31 token_def    ->    "%token" string_list
32         ;
33 
34 letter_def    ->    "%letter" symbol ":" string_list
35         ;
36 
37 start_def    ->    "%start" symbol
38         ;
39 
40 rule_def    ->    symbol "->" rhs_list
41         ;
42 
43 rhs_list    ->    rhs_list "|" rhs
44         |    rhs
45         ;
46 
47 rhs        ->    term_list
48         ;
49 
50 term_list    ->    term_list string
51         |    term_list symbol
52         |    string
53         |    symbol
54         ;


生成的分析表:
由于状态数量和非终结符数量过多,所以给出文件《分析表》

下面是四则混合运算的文法文件:
 1 %token "+" "-"                ;
 2 %token "*" "/"                ;
 3 %token "(" ")"                ;
 4 
 5 %letter AddOp    :    "+" "-"        ;
 6 %letter MulOp    :    "*" "/"        ;
 7 %letter ID    :    "{digit}"    ;
 8 %letter LQ    :    "("        ;
 9 %letter RQ    :    ")"        ;
10 
11 %start Program                ;
12 
13 Program        ->    Exp
14         ;
15 
16 Exp        ->    Exp AddOp Term
17         |    Term
18         ;
19 
20 Term        ->    Term MulOp Factor
21         |    Factor
22         ;
23 
24 Factor        ->    LQ Exp RQ
25         |    ID
26         ;
posted on 2010-08-03 20:21 lwch 阅读(282) 评论(0)  编辑 收藏 引用 所属分类: NScript

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理