Annotation of OpenXM/src/kan96xx/trans/yy_polymake.y, Revision 1.4
1.4 ! takayama 1: /* $OpenXM: OpenXM/src/kan96xx/trans/yy_polymake.y,v 1.3 2004/07/15 07:50:40 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:
1.3 takayama 10: %token PM_emptyLine PM_keyword PM_LCurryBrace PM_RCurryBrace PM_LAngle PM_RAngle PM_LBracket PM_RBracket PM_colon PM_LBrace PM_RBrace
1.1 takayama 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:
1.3 takayama 60: pmline
61: : dataUnitList PM_newline {
62: $$=$1;
63: }
64: ;
1.1 takayama 65:
1.3 takayama 66: dataUnitList
67: : dataUnit {
68: $$=$1;
69: }
70: | dataUnit dataUnitList {
71: pmObjectp t;
72: t=pmNewListObject($2);
73: $$=pmCons($1,(struct pmList *)(t->body));
74: }
75: | dataUnitList PM_colon dataUnitList { /* a : b --> COLON(a,b) */
76: pmObjectp t;
77: pmObjectp r;
78: r = pmNewTreeObject("_colon");
79: r = pmAddChild($3,r);
80: r = pmAddChild($1,r);
81: $$=r;
82: }
83: ;
84:
85: dataUnit
86: : pmnumberList {
1.1 takayama 87: $$=$1;
88: }
1.3 takayama 89: | PM_LCurryBrace dataUnitList PM_RCurryBrace {
90: $$=pmAddChild($2,pmNewTreeObject("_set")); /* set */
91: /*printf("{}");pmPrintObject(stdout,$2);*/
92: }
93: | PM_LAngle dataUnitList PM_RAngle {
94: $$=pmAddChild($2,pmNewTreeObject("_pairs")); /* pairs */
95: /* printf("<>");pmPrintObject(stdout,$2); */
96: }
97: | PM_LBracket dataUnitList PM_RBracket {
98: $$=pmAddChild($2,pmNewTreeObject("_bracket")); /* bracket */
99: /* printf("[]");pmPrintObject(stdout,$2); */
100: }
101: | PM_LBrace dataUnitList PM_RBrace {
102: $$=pmAddChild($2,pmNewTreeObject("_tuple")); /* tuple */
103: /* printf("()");pmPrintObject(stdout,$2); */
1.4 ! takayama 104: }
! 105: | PM_LCurryBrace PM_RCurryBrace {
! 106: $$=pmNewTreeObject("_set");
! 107: }
! 108: | PM_LAngle PM_RAngle {
! 109: $$=pmNewTreeObject("_pairs");
! 110: }
! 111: | PM_LBracket PM_RBracket {
! 112: $$=pmNewTreeObject("_bracket");
! 113: }
! 114: | PM_LBrace PM_RBrace {
! 115: $$=pmNewTreeObject("_tuple");
1.1 takayama 116: }
117: ;
118:
119: pmlineList
120: :
121: pmline {
122: $$=pmNewListObject($1);
123: }
124: | pmline pmlineList {
125: pmObjectp t;
126: t = $2;
127: if (t->tag != PMobject_list) {
128: fprintf(stderr,"pmlineList: list is broken.");
129: $$=$1;
130: }else{
131: $$=pmCons($1,(struct pmList *)(t->body));
132: }
133: }
134: ;
135:
136:
137: pmdata
138: :
139: PM_keyword PM_newline pmemptyLine {
140: $$=pmNewTreeObjecto($1);
141: }
142: | PM_keyword PM_newline pmlineList pmemptyLine {
143: pmObjectp ob;
144: ob = pmNewTreeObjecto($1);
145: ob = pmAddChild($3,ob);
146: $$=ob;
147: }
148: ;
149:
150:
151: pmemptyLine
152: :
153: PM_emptyLine
154: ;
155:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>