lex.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
/*
* Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc.
* All Rights Reserved.
*/
#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.1 */
#include "e.h"
#include "e.def"
#include <locale.h>
#define SSIZE 400
int sp;
gtc() {
loop:
return(*--ip); /* already present */
if (lastchar=='\n')
linect++;
return(lastchar);
return(EOF);
}
linect = 1;
if (openinfile() == 0)
goto loop;
return(EOF);
}
/*
* open file indexed by ifile in svargv, return non zero if fail
*/
{
return(0);
return(0);
}
return(1);
}
register char *str;
{
register char *p;
p = str;
while (*p++);
--p;
while (p > str)
putbak(*--p);
}
yylex() {
register int c;
beg:
;
yylval=c;
switch(c) {
case EOF:
return(EOF);
case '~':
return(SPACE);
case '^':
return(THIN);
case '\t':
return(TAB);
case '{':
return('{');
case '}':
return('}');
case '"':
if (c == '\\')
if ((c = gtc()) != '"')
}
if (c == '\n')
return(QTEXT);
}
if (c==righteq)
return(EOF);
putbak(c);
putbak(' ');
putbak(' ');
if (dbg)
}
return(CONTIG);
}
else if (tp->defn == (char *) DEFINE || tp->defn == (char *) NDEFINE || tp->defn == (char *) TDEFINE)
delim();
globsize();
globfont();
include();
space();
else {
}
goto beg;
}
getstr(s, n) char *s; register int n; {
register int c;
register char *p;
p = s;
;
if (c == EOF) {
*s = 0;
return;
}
while (c != ' ' && c != '\t' && c != '\n' && c != '{' && c != '}'
if (c == '\\')
if ((c = gtc()) != '"')
*p++ = '\\';
*p++ = c;
if (--n <= 0)
c = gtc();
}
putbak(c);
*p = '\0';
yylval = (int) s;
}
int del, c, i;
s[0] = 0;
if (quote)
s[i++] = c;
if (i >= maxs)
return(1); /* disaster */
}
else {
if (del == '\n')
return (1);
s[0] = del;
s[i++]=c;
if (i >= maxs)
return(1); /* disaster */
}
}
s[i] = '\0';
if (c == EOF)
return(0);
}
return;
}
}
space() /* collect line of form "space amt" to replace \x in output */
{
char *strsave();
}
char *strsave(s)
char *s;
{
char *malloc();
register char *q;
if (q == NULL)
strcpy(q, s);
return(q);
}
include() {
}
delim() {
}