version 1.3, 2003/11/20 06:04:04 |
version 1.4, 2003/11/20 07:56:00 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/yylex_polymake.c,v 1.2 2003/11/20 03:25:08 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/yylex_polymake.c,v 1.3 2003/11/20 06:04:04 takayama Exp $ */ |
/* parser for polymake output */ |
/* parser for polymake output */ |
/* This program requires |
/* This program requires |
|
|
Line 32 static int PMdebug = 0; |
|
Line 32 static int PMdebug = 0; |
|
*/ |
*/ |
static char *putstr(int c); |
static char *putstr(int c); |
static char *putstr2(int c); |
static char *putstr2(int c); |
|
static char *putstr2s(char *s); |
|
|
char *pmPutstr(int c) { |
char *pmPutstr(int c) { |
return putstr(c); |
return putstr(c); |
Line 127 static char *putstr2(int c) { |
|
Line 128 static char *putstr2(int c) { |
|
pt = 0; s[pt] = 0; |
pt = 0; s[pt] = 0; |
return s; |
return s; |
} |
} |
if (s == NULL) putstr(-1); |
if (s == NULL) putstr2(-1); |
if (pt < limit-1) { |
if (pt < limit-1) { |
s[pt++]=c; s[pt]=0; |
s[pt++]=c; s[pt]=0; |
return s; |
return s; |
Line 139 static char *putstr2(int c) { |
|
Line 140 static char *putstr2(int c) { |
|
for (i=0; i<=pt; i++) { |
for (i=0; i<=pt; i++) { |
s[i] = old[i]; |
s[i] = old[i]; |
} |
} |
return putstr(c); |
return putstr2(c); |
} |
} |
} |
} |
|
static char *putstr2s(char *s) { |
|
int i; |
|
char *ss; |
|
for (i=0; i<strlen(s); i++) { |
|
ss = putstr2(s[i]); |
|
} |
|
return ss; |
|
} |
|
|
pmPreprocess() { |
pmPreprocess() { |
int newp,oldp; |
int newp,oldp; |
Line 201 pmPreprocess() { |
|
Line 210 pmPreprocess() { |
|
} |
} |
} |
} |
|
|
|
/* --------------- pmObjects --------------------- */ |
pmObjectp pmNewStrObject(char *s) { |
pmObjectp pmNewStrObject(char *s) { |
pmObjectp ob; |
pmObjectp ob; |
ob = (pmObjectp) mymalloc(sizeof(struct pmObject)); |
ob = (pmObjectp) mymalloc(sizeof(struct pmObject)); |
Line 323 pmObjectp pmAddChild(pmObjectp c,pmObjectp a) { |
|
Line 333 pmObjectp pmAddChild(pmObjectp c,pmObjectp a) { |
|
warning_yylex_polymake(char *s) { |
warning_yylex_polymake(char *s) { |
fprintf(stderr,"Warning: %s",s); |
fprintf(stderr,"Warning: %s",s); |
} |
} |
|
|
void pmPrintObject(FILE *fp,pmObjectp p) { |
void pmPrintObject(FILE *fp,pmObjectp p) { |
|
fprintf(fp,"%s",pmObjectToStr(p)); |
|
} |
|
char *pmObjectToStr(pmObjectp p) { |
|
char *s; |
|
s=putstr2(-1); |
|
s=pmObjectToStr_aux(p); |
|
return putstr2(0); |
|
} |
|
char *pmObjectToStr_aux(pmObjectp p) { |
int n,i; |
int n,i; |
struct pmList *list; |
struct pmList *list; |
struct pmList *t; |
struct pmList *t; |
struct pmTree *tree; |
struct pmTree *tree; |
|
char *ans; |
if (p == NULL) { |
if (p == NULL) { |
/* fprintf(stderr,"NULL "); */ |
/* fprintf(stderr,"NULL "); */ |
return; |
return putstr2s("[]"); |
} |
} |
/* fprintf(stderr,"tag=%d ",p->tag); */ |
/* fprintf(stderr,"tag=%d ",p->tag); */ |
switch (p->tag) { |
switch (p->tag) { |
case PMobject_str: |
case PMobject_str: |
fprintf(fp,"%s",(char *)(p->body)); |
ans=putstr2s((char *)(p->body)); |
break; |
break; |
case PMobject_list: |
case PMobject_list: |
list = (struct pmList *)(p->body); |
list = (struct pmList *)(p->body); |
if (list == NULL) break; |
if (list == NULL) break; |
n = pmListLength(list); |
n = pmListLength(list); |
t = list; |
t = list; |
fprintf(fp,"["); |
ans=putstr2s("["); |
for (i=0; i<n; i++) { |
for (i=0; i<n; i++) { |
pmPrintObject(fp,t->left); |
ans=pmObjectToStr_aux(t->left); |
if (i != n-1) fprintf(fp,","); |
if (i != n-1) ans=putstr2s(","); |
if (t == NULL) break; else t = t->right; |
if (t == NULL) break; else t = t->right; |
} |
} |
fprintf(fp,"]"); |
ans=putstr2s("]"); |
break; |
break; |
case PMobject_tree: |
case PMobject_tree: |
tree = p->body; |
tree = p->body; |
fprintf(fp,"polymake.%s(",tree->nodeName); |
ans=putstr2s("polymake."); ans=putstr2s(tree->nodeName); |
|
ans=putstr2s("("); |
/* Ignore attribute list */ |
/* Ignore attribute list */ |
if (tree->childs == NULL) {n = 0; t = NULL; } |
if (tree->childs == NULL) {n = 0; t = NULL; } |
else { |
else { |
Line 360 void pmPrintObject(FILE *fp,pmObjectp p) { |
|
Line 382 void pmPrintObject(FILE *fp,pmObjectp p) { |
|
n = pmListLength(t); |
n = pmListLength(t); |
} |
} |
for (i=0; i<n; i++) { |
for (i=0; i<n; i++) { |
pmPrintObject(fp,t->left); |
ans=pmObjectToStr_aux(t->left); |
t = t->right; |
t = t->right; |
if (i != n-1) fprintf(fp,","); |
if (i != n-1) ans=putstr2(','); |
} |
} |
fprintf(fp,")"); |
ans = putstr2s(")"); |
break; |
break; |
default: |
default: |
fprintf(stderr,"Unknown object tag %d.\n",p->tag); |
fprintf(stderr,"Unknown object tag %d.\n",p->tag); |
/* sleep(100); to call debugger. */ |
/* sleep(100); to call debugger. */ |
break; |
break; |
} |
} |
|
return ans; |
} |
} |
|
|
PMerror() { |
|
} |
|