- 论坛徽章:
- 0
|
1 %{
2 %}
3 %token ANB ORB LD ID LDI OR ORI AND ANI OUT SPC MPS MRD MPP STL
4 %%
5 program : stc { stc }
6 stc : stc1
7 | stc2
8 | output
9 stc1 : i o
10 stc2 : st stc1 { stc1 }
11 st : STL i
12 i : i i ANB
13 i : i i ORB
14 i : i vi
15 i : LD ID
16 | LDI ID
17 vi : OR ID
18 | ORI ID
19 |vo
20 vo : AND ID
21 | ANI ID
22 o : o1
23 | o2
24 o1 : output { output }
25 o1 : output { output } ok output
26 ok : ok i ANB
27 ok : ok vo
28 ok : i ANB
29 | vo
30 output : OUT ID
31 | SPC
32 o2 : omps { omrd } ompp
33 omps : MPS oin
34 omps : output MPS oin
35 omrd : MRD oin
36 ompp : MPP oin
37 oin : o
38 | ok o1
39
40 %%
41
42 int main()
43 {
44 return yyparse();
45 }
其中第5,10,24,25,32句的yacc的*.y文件中应如何写规则?因为EBNF中的{}在yacc中变成了动作语句了,谢谢
[ 本帖最后由 liuzq71 于 2009-2-10 08:36 编辑 ] |
|