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

Annotation of OpenXM/src/kan96xx/Kan/yy_polymake.y, Revision 1.2

1.2     ! takayama    1: /* $OpenXM: OpenXM/src/kan96xx/Kan/yy_polymake.y,v 1.1 2003/11/20 00:06:07 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: %%
1.2     ! takayama   14: program
        !            15: :
        !            16: programList {
        !            17:   pmPrintObject(stdout,$1);
        !            18:   fprintf(stdout,"\n");
        !            19: }
        !            20: ;
        !            21:
1.1       takayama   22:
1.2     ! takayama   23: programList
1.1       takayama   24: :
1.2     ! takayama   25: pmdata {
        !            26:   pmObjectp ob;
        !            27:   ob = pmNewTreeObject("data");
        !            28:   ob = pmAddChild($1,ob);
        !            29:   $$ = ob;
        !            30: }
        !            31: | pmdata programList {
        !            32:   pmObjectp ob;
        !            33:   ob = $2;
        !            34:   ob = pmAddChild($1,ob);
        !            35:   $$ = ob;
        !            36: }
1.1       takayama   37: ;
                     38:
                     39: pmnumberList
                     40: :
                     41: PM_number {
                     42:   $$=pmNewListObject($1);
                     43: }
                     44: | PM_number pmnumberList {
                     45:   pmObjectp t;
                     46:   t = $2;
                     47:   if (t->tag != PMobject_list) {
                     48:        fprintf(stderr,"pmnumberList: list is broken.");
                     49:        $$=$1;
                     50:   }else{
                     51:        $$=pmCons($1,(struct pmList *)(t->body));
                     52:   }
                     53: }
                     54: ;
                     55:
                     56:
                     57: pmline
                     58: : pmnumberList  PM_newline {
                     59:   $$=$1;
                     60: }
                     61: | PM_LCurryBrace pmnumberList PM_RCurryBrace PM_newline {
                     62:   $$=$2;
                     63: }
                     64: ;
                     65:
                     66: pmlineList
                     67: :
                     68: pmline {
                     69:   $$=pmNewListObject($1);
                     70: }
                     71: | pmline pmlineList {
                     72:   pmObjectp t;
                     73:   t = $2;
                     74:   if (t->tag != PMobject_list) {
                     75:        fprintf(stderr,"pmlineList: list is broken.");
                     76:        $$=$1;
                     77:   }else{
                     78:     $$=pmCons($1,(struct pmList *)(t->body));
                     79:   }
                     80: }
                     81: ;
                     82:
                     83:
                     84: pmdata
                     85: :
                     86: PM_keyword   PM_newline pmemptyLine {
1.2     ! takayama   87:   $$=pmNewTreeObjecto($1);
1.1       takayama   88: }
                     89: | PM_keyword PM_newline pmlineList pmemptyLine {
1.2     ! takayama   90:   pmObjectp ob;
        !            91:   ob = pmNewTreeObjecto($1);
        !            92:   ob = pmAddChild($3,ob);
        !            93:   $$=ob;
1.1       takayama   94: }
                     95: ;
                     96:
                     97:
                     98: pmemptyLine
                     99: :
                    100: PM_emptyLine
                    101: ;
                    102:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>