#define unput(c) nunput(c)
char xxunbuf[xxunmax + 2];
sscanf(&yytext[1],"%d",&xxn);
xxtbuff = malloc(2*xxn+3);
for (xxj = xxk = 1; xxj <= xxn; ++xxj)
xxtbuff[0] = xxtbuff[xxk++] = '"';
IF {fixval(); xxbp = -1; return(xxif);}
ELSE {fixval(); xxbp = -1; return(xxelse);}
REPEAT {fixval(); xxbp = -1; return(xxrept); }
WHILE {fixval(); xxbp = -1; return(xxwhile); }
UNTIL { fixval(); xxbp = -1; return(xxuntil); }
DO {fixval(); xxbp = -1; return(xxdo); }
SWITCH {fixval(); xxbp = -1; return(xxswitch); }
CASE {fixval(); xxbp = -1; return(xxcase); }
DEFAULT {fixval(); xxbp = -1; return(xxdefault); }
END {fixval(); xxbp = -1; return(xxend); }
{L}{A}* {fixval(); xxbp = -1; return(xxident); }
~{D}+ {xxbuf[0] = ' '; fixval(); xxbp = -1; return(xxnum); }
{D}+/"."(ge|gt|le|lt|eq|ne|not|or|and)"." |
{D}*\.{D}+[de][+-]?{D}+ |
{D}*\.{D}+ {fixval(); xxbp = -1; return(xxnum); }
".gt." { putback(">"); xxbp = -1; }
".ge." { putback(">=");xxbp = -1; }
".lt." { putback("<"); xxbp = -1; }
".le." { putback("<="); xxbp = -1; }
".eq." { putback("=="); xxbp = -1; }
".ne." { putback("!="); xxbp = -1; }
".not." { putback("!"); xxbp = -1; }
".or." { putback("||"); xxbp = -1; }
".and." { putback("&&"); xxbp = -1; }
">=" {fixval(); xxbp = -1; return(xxge); }
"<=" {fixval(); xxbp = -1; return(xxle); }
== {fixval(); xxbp = -1; return(xxeq); }
!= {fixval(); xxbp = -1; return(xxne); }
"||" {fixval(); xxbp = -1; return('|'); }
"&&" {fixval(); xxbp = -1; return('&'); }
"**" {fixval(); xxbp = -1; return('^'); }
#.* {fixval(); xxbp = -1; return(xxcom); }
\"([^"]|\"\")*\" {fixval(); xxbp = -1; return(xxstring); }
xxtbuff = malloc(2*xxn+1);
for (xxj = xxk = 1; xxj < xxn-1; ++xxj)
if (xxp[xxj] == '\'' && xxp[++xxj] == '\'')
else if (xxp[xxj] == '"')
xxtbuff[xxk++] = xxp[xxj];
\n {xxbp = -1; if (newflag) {fixval(); return('\n'); } }
{SP} {fixval(); xxbp = -1; return(yytext[0]); }
return(xxunbuf[xxunbp--]);
if (c == EOF) return('\0');
xxunbuf[xxunmax + 1] = '\0';
error("RATFOR beautifying; input backed up too far during lex:\n",
error("RATFOR beautifying; lex call of nunput with wrong char:\n",
for ( --xxbp; xxbp >= 0 && (xxbuf[xxbp] == ' ' || xxbuf[xxbp] == '\t'); --xxbp)
if (blflag) c = rdchar();
while ( (c = rdchar()) == ' ' || c == '\t')
while ( (d = rdchar()) == ' ' || d == '\t');
xxbuf[xxbpmax +1] = '\0';
error("RATFOR beautifying; buffer xxbuf too small for token beginning:\n",
for (j = 0; xxbuf[j] == ' ' || xxbuf[j] == '\t'; ++j);
for (k = j; xxbuf[k] != '\0'; ++k);
for (--k; k > j && xxbuf[k] == ' ' || xxbuf[k] == '\t'; --k);
i = slength(&xxbuf[j]) + 1;
str_copy(&xxbuf[j],yylval,i);
for (i = 0; str[i] != '\0'; ++i);