aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwkj <devnull@localhost>2004-04-21 05:56:24 +0000
committerwkj <devnull@localhost>2004-04-21 05:56:24 +0000
commit2c7cc0faaf79742d021f72e103b4d828a581df4e (patch)
tree34178b948386d83d7a0d61f681f2036640267ff0
parent7ac9b0e140bed0b34dc88674b3098caa5e193acf (diff)
downloadplan9port-2c7cc0faaf79742d021f72e103b4d828a581df4e.tar.gz
plan9port-2c7cc0faaf79742d021f72e103b4d828a581df4e.tar.bz2
plan9port-2c7cc0faaf79742d021f72e103b4d828a581df4e.zip
Document recent changes.
Make lex really compile in rsc's world.
-rw-r--r--CHANGES10
-rw-r--r--lib/lex/ncform184
-rw-r--r--src/cmd/lex/lmain.c4
-rw-r--r--src/cmd/lex/mkfile3
-rw-r--r--src/cmd/mkfile2
5 files changed, 199 insertions, 4 deletions
diff --git a/CHANGES b/CHANGES
index e9a518ab..dcea66fe 100644
--- a/CHANGES
+++ b/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.
diff --git a/lib/lex/ncform b/lib/lex/ncform
new file mode 100644
index 00000000..a87030b3
--- /dev/null
+++ b/lib/lex/ncform
@@ -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);
+}
diff --git a/src/cmd/lex/lmain.c b/src/cmd/lex/lmain.c
index ec43869a..a98978c6 100644
--- a/src/cmd/lex/lmain.c
+++ b/src/cmd/lex/lmain.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;
diff --git a/src/cmd/lex/mkfile b/src/cmd/lex/mkfile
index a748409f..ffcf875d 100644
--- a/src/cmd/lex/mkfile
+++ b/src/cmd/lex/mkfile
@@ -1,7 +1,6 @@
<$PLAN9/src/mkhdr
-#TARG=lex
-TARG=lex.9
+TARG=9lex
OFILES=lmain.$O\
y.tab.$O\
sub1.$O\
diff --git a/src/cmd/mkfile b/src/cmd/mkfile
index 350769ef..477ca474 100644
--- a/src/cmd/mkfile
+++ b/src/cmd/mkfile
@@ -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