mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-24 11:41:58 +00:00
Document recent changes.
Make lex really compile in rsc's world.
This commit is contained in:
parent
7ac9b0e140
commit
2c7cc0faaf
5 changed files with 199 additions and 4 deletions
10
CHANGES
10
CHANGES
|
@ -1,3 +1,13 @@
|
|||
April 21, 2004
|
||||
import assembler routines for libmp and libsec
|
||||
on x86 from william josephson's tree
|
||||
|
||||
add truerand which uses /dev/random to seed PRG
|
||||
|
||||
add aescbc, astro, lex, and tcs
|
||||
|
||||
import man9 from william josephson's version of the port
|
||||
|
||||
April 19, 2004
|
||||
|
||||
lots of man page updates.
|
||||
|
|
184
lib/lex/ncform
Normal file
184
lib/lex/ncform
Normal file
|
@ -0,0 +1,184 @@
|
|||
#pragma lib "libl.a"
|
||||
int yylineno =1;
|
||||
# define YYU(x) x
|
||||
char yytext[YYLMAX];
|
||||
struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
|
||||
Uchar yysbuf[YYLMAX];
|
||||
Uchar *yysptr = yysbuf;
|
||||
int *yyfnd;
|
||||
extern struct yysvf *yyestate;
|
||||
int yyprevious = YYNEWLINE;
|
||||
# ifdef LEXDEBUG
|
||||
extern void allprint(char);
|
||||
# endif
|
||||
yylook(void){
|
||||
struct yysvf *yystate, **lsp;
|
||||
struct yywork *yyt;
|
||||
struct yysvf *yyz;
|
||||
int yych;
|
||||
struct yywork *yyr;
|
||||
# ifdef LEXDEBUG
|
||||
int debug;
|
||||
# endif
|
||||
Uchar *yylastch;
|
||||
/* start off machines */
|
||||
# ifdef LEXDEBUG
|
||||
debug = 0;
|
||||
# endif
|
||||
if (!yymorfg)
|
||||
yylastch = (Uchar*)yytext;
|
||||
else {
|
||||
yymorfg=0;
|
||||
yylastch = (Uchar*)yytext+yyleng;
|
||||
}
|
||||
for(;;){
|
||||
lsp = yylstate;
|
||||
yyestate = yystate = yybgin;
|
||||
if (yyprevious==YYNEWLINE) yystate++;
|
||||
for (;;){
|
||||
# ifdef LEXDEBUG
|
||||
if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
|
||||
# endif
|
||||
yyt = yystate->yystoff;
|
||||
if(yyt == yycrank){ /* may not be any transitions */
|
||||
yyz = yystate->yyother;
|
||||
if(yyz == 0)break;
|
||||
if(yyz->yystoff == yycrank)break;
|
||||
}
|
||||
*yylastch++ = yych = input();
|
||||
tryagain:
|
||||
# ifdef LEXDEBUG
|
||||
if(debug){
|
||||
fprintf(yyout,"char ");
|
||||
allprint(yych);
|
||||
putchar('\n');
|
||||
}
|
||||
# endif
|
||||
yyr = yyt;
|
||||
if ( (int)yyt > (int)yycrank){
|
||||
yyt = yyr + yych;
|
||||
if (yyt <= yytop && yyt->verify+yysvec == yystate){
|
||||
if(yyt->advance+yysvec == YYLERR) /* error transitions */
|
||||
{unput(*--yylastch);break;}
|
||||
*lsp++ = yystate = yyt->advance+yysvec;
|
||||
goto contin;
|
||||
}
|
||||
}
|
||||
# ifdef YYOPTIM
|
||||
else if((int)yyt < (int)yycrank) { /* r < yycrank */
|
||||
yyt = yyr = yycrank+(yycrank-yyt);
|
||||
# ifdef LEXDEBUG
|
||||
if(debug)fprintf(yyout,"compressed state\n");
|
||||
# endif
|
||||
yyt = yyt + yych;
|
||||
if(yyt <= yytop && yyt->verify+yysvec == yystate){
|
||||
if(yyt->advance+yysvec == YYLERR) /* error transitions */
|
||||
{unput(*--yylastch);break;}
|
||||
*lsp++ = yystate = yyt->advance+yysvec;
|
||||
goto contin;
|
||||
}
|
||||
yyt = yyr + YYU(yymatch[yych]);
|
||||
# ifdef LEXDEBUG
|
||||
if(debug){
|
||||
fprintf(yyout,"try fall back character ");
|
||||
allprint(YYU(yymatch[yych]));
|
||||
putchar('\n');
|
||||
}
|
||||
# endif
|
||||
if(yyt <= yytop && yyt->verify+yysvec == yystate){
|
||||
if(yyt->advance+yysvec == YYLERR) /* error transition */
|
||||
{unput(*--yylastch);break;}
|
||||
*lsp++ = yystate = yyt->advance+yysvec;
|
||||
goto contin;
|
||||
}
|
||||
}
|
||||
if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
|
||||
# ifdef LEXDEBUG
|
||||
if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
|
||||
# endif
|
||||
goto tryagain;
|
||||
}
|
||||
# endif
|
||||
else
|
||||
{unput(*--yylastch);break;}
|
||||
contin:
|
||||
# ifdef LEXDEBUG
|
||||
if(debug){
|
||||
fprintf(yyout,"state %d char ",yystate-yysvec-1);
|
||||
allprint(yych);
|
||||
putchar('\n');
|
||||
}
|
||||
# endif
|
||||
;
|
||||
}
|
||||
# ifdef LEXDEBUG
|
||||
if(debug){
|
||||
fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
|
||||
allprint(yych);
|
||||
putchar('\n');
|
||||
}
|
||||
# endif
|
||||
while (lsp-- > yylstate){
|
||||
*yylastch-- = 0;
|
||||
if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
|
||||
yyolsp = lsp;
|
||||
if(yyextra[*yyfnd]){ /* must backup */
|
||||
while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
|
||||
lsp--;
|
||||
unput(*yylastch--);
|
||||
}
|
||||
}
|
||||
yyprevious = YYU(*yylastch);
|
||||
yylsp = lsp;
|
||||
yyleng = yylastch-(Uchar*)yytext+1;
|
||||
yytext[yyleng] = 0;
|
||||
# ifdef LEXDEBUG
|
||||
if(debug){
|
||||
fprintf(yyout,"\nmatch '%s'", yytext);
|
||||
fprintf(yyout," action %d\n",*yyfnd);
|
||||
}
|
||||
# endif
|
||||
return(*yyfnd++);
|
||||
}
|
||||
unput(*yylastch);
|
||||
}
|
||||
if (yytext[0] == 0 /* && feof(yyin) */)
|
||||
{
|
||||
yysptr=yysbuf;
|
||||
return(0);
|
||||
}
|
||||
yyprevious = input();
|
||||
yytext[0] = yyprevious;
|
||||
if (yyprevious>0)
|
||||
output(yyprevious);
|
||||
yylastch = (Uchar*)yytext;
|
||||
# ifdef LEXDEBUG
|
||||
if(debug)putchar('\n');
|
||||
# endif
|
||||
}
|
||||
return(0); /* shut up the compiler; i have no idea what should be returned */
|
||||
}
|
||||
yyback(int *p, int m)
|
||||
{
|
||||
if (p==0) return(0);
|
||||
while (*p)
|
||||
{
|
||||
if (*p++ == m)
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
/* the following are only used in the lex library */
|
||||
yyinput(void){
|
||||
return(input());
|
||||
}
|
||||
void
|
||||
yyoutput(int c)
|
||||
{
|
||||
output(c);
|
||||
}
|
||||
void
|
||||
yyunput(int c)
|
||||
{
|
||||
unput(c);
|
||||
}
|
|
@ -14,7 +14,7 @@ int peek = '\n'; /* next input character */
|
|||
uchar *pushptr = pushc;
|
||||
uchar *slptr = slist;
|
||||
|
||||
char *cname = SYS9 "/sys/lib/lex/ncform";
|
||||
char *cname;
|
||||
|
||||
int nine;
|
||||
int ccount = 1;
|
||||
|
@ -95,6 +95,8 @@ main(int argc, char **argv)
|
|||
{
|
||||
int i;
|
||||
|
||||
cname = unsharp("#9/lib/lex/ncform");
|
||||
|
||||
ARGBEGIN {
|
||||
# ifdef DEBUG
|
||||
case 'd': debug++; break;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<$PLAN9/src/mkhdr
|
||||
|
||||
#TARG=lex
|
||||
TARG=lex.9
|
||||
TARG=9lex
|
||||
OFILES=lmain.$O\
|
||||
y.tab.$O\
|
||||
sub1.$O\
|
||||
|
|
|
@ -6,7 +6,7 @@ SHORTLIB=sec fs mux regexp9 draw thread bio 9
|
|||
|
||||
<$PLAN9/src/mkmany
|
||||
|
||||
BUGGERED='CVS|faces|factotum|mailfs|mk|upas|vac|venti|lex'
|
||||
BUGGERED='CVS|faces|factotum|mailfs|mk|upas|vac|venti'
|
||||
DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "^($BUGGERED)$"`
|
||||
|
||||
<$PLAN9/src/mkdirs
|
||||
|
|
Loading…
Reference in a new issue