Annotation of OpenXM/src/kan96xx/trans/yy_polymake.y, Revision 1.2
1.2 ! takayama 1: /* $OpenXM: OpenXM/src/kan96xx/trans/yy_polymake.y,v 1.1 2003/11/24 02:33:39 takayama Exp $ */
1.1 takayama 2: /* yacc -d -b yy_polymake -p PM yy_polymake.y */
3: /* yacc -d -b yy_polymake -p PM yy_polymake.y ; gcc yylex_polymake.c yy_polymake.tab.c*/
4: %{
5: #include <stdio.h>
6: #include "yylex_polymake.h"
7: %}
8:
9:
10: %token PM_emptyLine PM_keyword PM_LCurryBrace PM_RCurryBrace
11: %token PM_number PM_newline
12:
13: %%
14: program
15: :
16: programList {
17: pmPrintObject(stdout,$1);
1.2 ! takayama 18: fprintf(stdout,"\n");
! 19: }
! 20: | pmemptyLine programList {
! 21: pmPrintObject(stdout,$2);
1.1 takayama 22: fprintf(stdout,"\n");
23: }
24: ;
25:
26:
27: programList
28: :
29: pmdata {
30: pmObjectp ob;
31: ob = pmNewTreeObject("data");
32: ob = pmAddChild($1,ob);
33: $$ = ob;
34: }
35: | pmdata programList {
36: pmObjectp ob;
37: ob = $2;
38: ob = pmAddChild($1,ob);
39: $$ = ob;
40: }
41: ;
42:
43: pmnumberList
44: :
45: PM_number {
46: $$=pmNewListObject($1);
47: }
48: | PM_number pmnumberList {
49: pmObjectp t;
50: t = $2;
51: if (t->tag != PMobject_list) {
52: fprintf(stderr,"pmnumberList: list is broken.");
53: $$=$1;
54: }else{
55: $$=pmCons($1,(struct pmList *)(t->body));
56: }
57: }
58: ;
59:
60:
61: pmline
62: : pmnumberList PM_newline {
63: $$=$1;
64: }
65: | PM_LCurryBrace pmnumberList PM_RCurryBrace PM_newline {
66: $$=$2;
67: }
68: ;
69:
70: pmlineList
71: :
72: pmline {
73: $$=pmNewListObject($1);
74: }
75: | pmline pmlineList {
76: pmObjectp t;
77: t = $2;
78: if (t->tag != PMobject_list) {
79: fprintf(stderr,"pmlineList: list is broken.");
80: $$=$1;
81: }else{
82: $$=pmCons($1,(struct pmList *)(t->body));
83: }
84: }
85: ;
86:
87:
88: pmdata
89: :
90: PM_keyword PM_newline pmemptyLine {
91: $$=pmNewTreeObjecto($1);
92: }
93: | PM_keyword PM_newline pmlineList pmemptyLine {
94: pmObjectp ob;
95: ob = pmNewTreeObjecto($1);
96: ob = pmAddChild($3,ob);
97: $$=ob;
98: }
99: ;
100:
101:
102: pmemptyLine
103: :
104: PM_emptyLine
105: ;
106:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>