[BACK]Return to yy_polymake.y CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / trans

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>