Return to lex.c CVS log | Up to [local] / OpenXM_contrib2 / asir2000 / parse |
version 1.25, 2003/05/30 00:47:24 | version 1.32, 2004/03/26 08:25:37 | ||
---|---|---|---|
|
|
||
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | ||
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | ||
* | * | ||
* $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.24 2003/05/14 06:20:12 noro Exp $ | * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.31 2004/03/04 07:11:01 noro Exp $ | ||
*/ | */ | ||
#include <ctype.h> | #include <ctype.h> | ||
#include "ca.h" | #include "ca.h" | ||
|
|
||
c = Getc(); | c = Getc(); | ||
if ( c == '\\' ) { | if ( c == '\\' ) { | ||
c1 = Getc(); | c1 = Getc(); | ||
if ( c1 == 'n' ) | if ( c1 == 'n' ) { | ||
c1 = '\n'; | c1 = '\n'; | ||
}else if ( c1 == 't' ) { | |||
c1 = '\t'; | |||
}else if ( isdigit(c1) ){ | |||
d = c1 - '0'; | |||
c1 = Getc(); | |||
if ( isdigit(c1) ) { | |||
d = 8*d + (c1 - '0'); | |||
c1 = Getc(); | |||
if ( isdigit(c1) ) { | |||
d = 8*d + (c1 - '0'); | |||
}else { | |||
Ungetc(c1); | |||
} | |||
}else { | |||
Ungetc(c1); | |||
} | |||
c1 = d; | |||
} | |||
REALLOC_NBUF nbuf[i++] = c1; | REALLOC_NBUF nbuf[i++] = c1; | ||
} else { | } else { | ||
REALLOC_NBUF nbuf[i++] = c; | REALLOC_NBUF nbuf[i++] = c; | ||
|
|
||
} else if ( !strcmp(tbuf,"@equiv") ) { | } else if ( !strcmp(tbuf,"@equiv") ) { | ||
yylvalp->i = (int)L_EQUIV; | yylvalp->i = (int)L_EQUIV; | ||
return FOP_EQUIV; | return FOP_EQUIV; | ||
} else if ( !strcmp(tbuf,"@grlex") ) { | |||
yylvalp->p = Symbol_grlex; | |||
return FORMULA; | |||
} else if ( !strcmp(tbuf,"@glex") ) { | |||
yylvalp->p = Symbol_glex; | |||
return FORMULA; | |||
} else if ( !strcmp(tbuf,"@lex") ) { | |||
yylvalp->p = Symbol_lex; | |||
return FORMULA; | |||
} else { | } else { | ||
cptr = (char *)MALLOC(strlen(tbuf)+1); strcpy(cptr,tbuf); | cptr = (char *)MALLOC(strlen(tbuf)+1); strcpy(cptr,tbuf); | ||
yylvalp->p = (pointer)cptr; | yylvalp->p = (pointer)cptr; | ||
|
|
||
w_purge_stdin(); | w_purge_stdin(); | ||
#elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) || defined(_IBMR2) | #elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) || defined(_IBMR2) | ||
stdin->_ptr = stdin->_base; stdin->_cnt = 0; | stdin->_ptr = stdin->_base; stdin->_cnt = 0; | ||
#elif (defined(__MACH__) && defined(__ppc__)) || defined(__CYGWIN__) | #elif (defined(__MACH__) && defined(__ppc__)) || defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__INTERIX) | ||
stdin->_r = 0; stdin->_p = stdin->_bf._base; | stdin->_r = 0; stdin->_p = stdin->_bf._base; | ||
#else | #else | ||
--->FIXIT | --->FIXIT | ||
#endif | #endif | ||
} | } | ||
extern int asir_texmacs; | |||
static int skipspace() { | static int skipspace() { | ||
int c,c1; | int c,c1; | ||
|
|
||
case ' ': case '\t': case '\r': | case ' ': case '\t': case '\r': | ||
c = Getc(); break; | c = Getc(); break; | ||
case '\n': | case '\n': | ||
c = afternl(); break; | c = afternl(); break; | ||
case '/': | case '/': | ||
if ( (c1 = Getc()) == '*' ) | if ( (c1 = Getc()) == '*' ) | ||
c = aftercomment(); | c = aftercomment(); | ||
|
|
||
} | } | ||
extern int ox_do_copy; | extern int ox_do_copy; | ||
extern int I_am_server; | |||
extern JMP_BUF main_env; | |||
void yyerror(char *s) | void yyerror(char *s) | ||
{ | { | ||
if ( main_parser ) | if ( main_parser ) { | ||
if ( ox_do_copy ) { | if ( ox_do_copy ) { | ||
/* push errors to DebugStack */ | /* push errors to DebugStack */ | ||
} else { | } else { | ||
|
|
||
else | else | ||
fprintf(stderr,"\"%s\", near line %d: %s\n",asir_infile->name,asir_infile->ln,s); | fprintf(stderr,"\"%s\", near line %d: %s\n",asir_infile->name,asir_infile->ln,s); | ||
} | } | ||
else | if ( I_am_server ) { | ||
set_lasterror(s); | |||
LONGJMP(main_env,1); | |||
} | |||
} else | |||
fprintf(stderr,"exprparse : %s\n",s); | fprintf(stderr,"exprparse : %s\n",s); | ||
} | } | ||