=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/trans/yylex_polymake.c,v retrieving revision 1.1 retrieving revision 1.6 diff -u -p -r1.1 -r1.6 --- OpenXM/src/kan96xx/trans/yylex_polymake.c 2003/11/24 02:33:39 1.1 +++ OpenXM/src/kan96xx/trans/yylex_polymake.c 2018/05/03 13:20:35 1.6 @@ -1,4 +1,4 @@ -/* $OpenXM$ */ +/* $OpenXM: OpenXM/src/kan96xx/trans/yylex_polymake.c,v 1.5 2009/09/04 02:25:30 takayama Exp $ */ /* parser for polymake output */ /* This program requires @@ -67,6 +67,14 @@ int PMlex_aux() { if (S[Pt] == PM_emptyLineCode) {Pt++; return PM_emptyLine; } if (S[Pt] == '{') { Pt++; return PM_LCurryBrace; } if (S[Pt] == '}') { Pt++; return PM_RCurryBrace; } + if (S[Pt] == '<') { Pt++; return PM_LAngle; } + if (S[Pt] == '>') { Pt++; return PM_RAngle; } + if (S[Pt] == '(') { Pt++; return PM_LBrace; } + if (S[Pt] == ')') { Pt++; return PM_RBrace; } + if (S[Pt] == '[') { Pt++; return PM_LBracket; } + if (S[Pt] == ']') { Pt++; return PM_RBracket; } + if (S[Pt] == ':') { Pt++; return PM_colon; } + if (S[Pt] == '=') { Pt++; return PM_eq; } if (((S[Pt] >= '0') && (S[Pt] <= '9')) || (S[Pt] == '-')) { putstr(-1); putstr(S[Pt++]); while (((S[Pt]>='0') && (S[Pt]<='9')) || (S[Pt] == '/')) putstr(S[Pt++]); @@ -75,13 +83,17 @@ int PMlex_aux() { } if (((S[Pt] >= 'A') && (S[Pt] <= 'Z')) || ((S[Pt] >= 'a') && (S[Pt] <= 'z')) || - (S[Pt] == '_')) { - putstr(-1); putstr(S[Pt++]); - while (((S[Pt] >= 'A') && (S[Pt] <= 'Z')) || - ((S[Pt] >= 'a') && (S[Pt] <= 'z')) || - (S[Pt] == '_')) putstr(S[Pt++]); - PMlval = pmNewStrObject(putstr(0)); - return PM_keyword; + (S[Pt] == '_') || S[Pt] == '!') { + if (S[Pt] != '!') {putstr(-1); putstr(S[Pt++]);} + else { + putstr(-1); Pt++; + putstr('N'); putstr('O'); putstr('T'); putstr('_'); putstr('_'); + } + while (((S[Pt] >= 'A') && (S[Pt] <= 'Z')) || + ((S[Pt] >= 'a') && (S[Pt] <= 'z')) || + (S[Pt] == '_')) putstr(S[Pt++]); + PMlval = pmNewStrObject(putstr(0)); + return PM_keyword; } Pt++; return PM_unknown; } @@ -152,7 +164,7 @@ static char *putstr2s(char *s) { return ss; } -pmPreprocess() { +int pmPreprocess() { int newp,oldp; int state; int i,j; @@ -186,7 +198,8 @@ pmPreprocess() { break; case 1: if ((S[oldp] == ' ') || (S[oldp] == '\t')) break; - if ((S[oldp] == '#') || ((S[oldp]=='_') && (S[oldp-1]<' '))) { + if ((S[oldp] == '#') || ((S[oldp]=='_') && (oldp == 0)) + || ((S[oldp]=='_') && (S[oldp-1]<' '))) { /* skip the rest of the line, state=1; */ for (; S[oldp] != 0 ; oldp++) { if (S[oldp] == '\n') {oldp--; break;} @@ -330,7 +343,7 @@ pmObjectp pmAddChild(pmObjectp c,pmObjectp a) { return a; } -warning_yylex_polymake(char *s) { +void warning_yylex_polymake(char *s) { fprintf(stderr,"Warning: %s",s); }