insight'ed cpp. Nothing found that should be of interest.

This commit is contained in:
gdr 1997-12-08 03:40:12 +00:00
parent 619c3191d1
commit 79ab0e7f2b
11 changed files with 188 additions and 182 deletions

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -21,7 +21,7 @@ int ifdepth;
int ifsatisfied[NIF]; int ifsatisfied[NIF];
int skipping; int skipping;
char rcsid[] = "$Revision: 1.2 $ $Date: 1997/12/02 08:05:52 $"; char rcsid[] = "$Revision: 1.3 $ $Date: 1997/12/08 03:40:11 $";
#if defined(__GNO__) && defined(__STACK_CHECK__) #if defined(__GNO__) && defined(__STACK_CHECK__)
#include <err.h> #include <err.h>
@ -115,7 +115,7 @@ control(Tokenrow *trp)
error(ERROR, "Unidentifiable control line"); error(ERROR, "Unidentifiable control line");
return; /* else empty line */ return; /* else empty line */
} }
if ((np = lookup(tp, 0))==NULL || (np->flag&ISKW)==0 && !skipping) { if ((np = lookup(tp, 0))==NULL || ((np->flag&ISKW)==0 && !skipping)) {
error(WARNING, "Unknown preprocessor control %t", tp); error(WARNING, "Unknown preprocessor control %t", tp);
return; return;
} }
@ -230,7 +230,8 @@ control(Tokenrow *trp)
tp = trp->bp+2; tp = trp->bp+2;
kline: kline:
if (tp+1>=trp->lp || tp->type!=NUMBER || tp+3<trp->lp if (tp+1>=trp->lp || tp->type!=NUMBER || tp+3<trp->lp
|| (tp+3==trp->lp && ((tp+1)->type!=STRING)||*(tp+1)->t=='L')){ || ((tp+3==trp->lp && ((tp+1)->type!=STRING))
|| *(tp+1)->t=='L')) {
error(ERROR, "Syntax error in #line"); error(ERROR, "Syntax error in #line");
return; return;
} }

View File

@ -1,4 +1,4 @@
/* $Id: cpp.h,v 1.2 1997/12/02 08:05:52 gdr Exp $ */ /* $Id: cpp.h,v 1.3 1997/12/08 03:40:11 gdr Exp $ */
#define INS 32768 /* input buffer */ #define INS 32768 /* input buffer */
#define OBS 4096 /* outbut buffer */ #define OBS 4096 /* outbut buffer */
#define NARG 32 /* Max number arguments to a macro */ #define NARG 32 /* Max number arguments to a macro */
@ -139,6 +139,7 @@ int newhideset(int, Nlist *);
int unionhideset(int, int); int unionhideset(int, int);
void iniths(void); void iniths(void);
void setobjname(char *); void setobjname(char *);
void setup_kwtab(void);
#define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp) #define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp)
extern char *outp; extern char *outp;
@ -156,15 +157,6 @@ extern Nlist *kwdefined;
extern Includelist includelist[NINCLUDE]; extern Includelist includelist[NINCLUDE];
extern char wd[]; extern char wd[];
#ifndef __ORCAC__ /* make sure we get our own decls */
extern int creat(char *, int);
extern int open(char *, int);
extern int close(int);
extern int dup2(int, int);
extern int write(int, char *, size_t);
extern int read(int, char *, size_t);
#endif
#ifdef __ORCAC__ #ifdef __ORCAC__
# define STATIC static # define STATIC static
# ifdef NDEBUG # ifdef NDEBUG

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdlib.h> #include <stdlib.h>
@ -148,7 +148,7 @@ eval(Tokenrow *trp, int kw)
case NOT: case NOT:
if (rand) if (rand)
goto syntax; goto syntax;
*op++ = tp->type; *op++ = (enum toktype) tp->type;
continue; continue;
/* unary-binary */ /* unary-binary */
@ -173,7 +173,7 @@ eval(Tokenrow *trp, int kw)
goto syntax; goto syntax;
if (evalop(priority[tp->type])!=0) if (evalop(priority[tp->type])!=0)
return 0; return 0;
*op++ = tp->type; *op++ = (enum toktype) tp->type;
rand = 0; rand = 0;
continue; continue;

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdio.h> #include <stdio.h>

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdio.h> #include <stdio.h>

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdlib.h> #include <stdlib.h>
@ -65,7 +65,7 @@ doinclude(Tokenrow *trp)
if ((fd = open(iname, 0)) >= 0) if ((fd = open(iname, 0)) >= 0)
break; break;
} }
if ( Mflag>1 || !angled&&Mflag==1 ) { if ( Mflag>1 || ( !angled && Mflag==1 )) {
write(STDOUT_FILENO,objname,strlen(objname)); write(STDOUT_FILENO,objname,strlen(objname));
write(STDOUT_FILENO,iname,strlen(iname)); write(STDOUT_FILENO,iname,strlen(iname));
write(STDOUT_FILENO,"\n",1); write(STDOUT_FILENO,"\n",1);
@ -94,8 +94,18 @@ void
genline(void) genline(void)
{ {
static Token ta = { UNCLASS }; static Token ta = { UNCLASS };
static Tokenrow tr = { &ta, &ta, &ta+1, 1 };
uchar *p; uchar *p;
#ifndef __INSIGHT__
static Tokenrow tr = { &ta, &ta, &ta+1, 1 };
#else
static Tokenrow tr;
static int been_here = 0;
if (! been_here) {
tr = { &ta, &ta, &ta+1, 1 };
been_here = 1;
}
#endif
ta.t = p = (uchar*)outp; ta.t = p = (uchar*)outp;
strcpy((char*)p, "#line "); strcpy((char*)p, "#line ");

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_1_____"; segment "cpp_1_____";
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -56,183 +56,183 @@ struct fsm {
/*const*/ struct fsm fsm[] = { /*const*/ struct fsm fsm[] = {
/* start state */ /* start state */
START, { C_XX }, ACT(UNCLASS,S_SELF), { START, { C_XX }, ACT(UNCLASS,S_SELF) },
START, { ' ', '\t', '\v' }, WS1, { START, { ' ', '\t', '\v' }, WS1 },
START, { C_NUM }, NUM1, { START, { C_NUM }, NUM1 },
START, { '.' }, NUM3, { START, { '.' }, NUM3 },
START, { C_ALPH }, ID1, { START, { C_ALPH }, ID1 },
START, { 'L' }, ST1, { START, { 'L' }, ST1 },
START, { '"' }, ST2, { START, { '"' }, ST2 },
START, { '\'' }, CC1, { START, { '\'' }, CC1 },
START, { '/' }, COM1, { START, { '/' }, COM1 },
START, { EOFC }, S_EOF, { START, { EOFC }, S_EOF },
START, { '\n' }, S_NL, { START, { '\n' }, S_NL },
START, { '-' }, MINUS1, { START, { '-' }, MINUS1 },
START, { '+' }, PLUS1, { START, { '+' }, PLUS1 },
START, { '<' }, LT1, { START, { '<' }, LT1 },
START, { '>' }, GT1, { START, { '>' }, GT1 },
START, { '=' }, ASG1, { START, { '=' }, ASG1 },
START, { '!' }, NOT1, { START, { '!' }, NOT1 },
START, { '&' }, AND1, { START, { '&' }, AND1 },
START, { '|' }, OR1, { START, { '|' }, OR1 },
START, { '#' }, SHARP1, { START, { '#' }, SHARP1 },
START, { '%' }, PCT1, { START, { '%' }, PCT1 },
START, { '[' }, ACT(SBRA,S_SELF), { START, { '[' }, ACT(SBRA,S_SELF) },
START, { ']' }, ACT(SKET,S_SELF), { START, { ']' }, ACT(SKET,S_SELF) },
START, { '(' }, ACT(LP,S_SELF), { START, { '(' }, ACT(LP,S_SELF) },
START, { ')' }, ACT(RP,S_SELF), { START, { ')' }, ACT(RP,S_SELF) },
START, { '*' }, STAR1, { START, { '*' }, STAR1 },
START, { ',' }, ACT(COMMA,S_SELF), { START, { ',' }, ACT(COMMA,S_SELF) },
START, { '?' }, ACT(QUEST,S_SELF), { START, { '?' }, ACT(QUEST,S_SELF) },
START, { ':' }, ACT(COLON,S_SELF), { START, { ':' }, ACT(COLON,S_SELF) },
START, { ';' }, ACT(SEMIC,S_SELF), { START, { ';' }, ACT(SEMIC,S_SELF) },
START, { '{' }, ACT(CBRA,S_SELF), { START, { '{' }, ACT(CBRA,S_SELF) },
START, { '}' }, ACT(CKET,S_SELF), { START, { '}' }, ACT(CKET,S_SELF) },
START, { '~' }, ACT(TILDE,S_SELF), { START, { '~' }, ACT(TILDE,S_SELF) },
START, { '^' }, CIRC1, { START, { '^' }, CIRC1 },
/* saw a digit */ /* saw a digit */
NUM1, { C_XX }, ACT(NUMBER,S_SELFB), { NUM1, { C_XX }, ACT(NUMBER,S_SELFB) },
NUM1, { C_NUM, C_ALPH, '.' }, NUM1, { NUM1, { C_NUM, C_ALPH, '.' }, NUM1 },
NUM1, { 'E', 'e' }, NUM2, { NUM1, { 'E', 'e' }, NUM2 },
NUM1, { '_' }, ACT(NUMBER,S_SELFB), { NUM1, { '_' }, ACT(NUMBER,S_SELFB) },
/* saw possible start of exponent, digits-e */ /* saw possible start of exponent, digits-e */
NUM2, { C_XX }, ACT(NUMBER,S_SELFB), { NUM2, { C_XX }, ACT(NUMBER,S_SELFB) },
NUM2, { '+', '-' }, NUM1, { NUM2, { '+', '-' }, NUM1 },
NUM2, { C_NUM, C_ALPH }, NUM1, { NUM2, { C_NUM, C_ALPH }, NUM1 },
NUM2, { '_' }, ACT(NUMBER,S_SELFB), { NUM2, { '_' }, ACT(NUMBER,S_SELFB) },
/* saw a '.', which could be a number or an operator */ /* saw a '.', which could be a number or an operator */
NUM3, { C_XX }, ACT(DOT,S_SELFB), { NUM3, { C_XX }, ACT(DOT,S_SELFB) },
NUM3, { '.' }, DOTS1, { NUM3, { '.' }, DOTS1 },
NUM3, { C_NUM }, NUM1, { NUM3, { C_NUM }, NUM1 },
DOTS1, { C_XX }, ACT(UNCLASS, S_SELFB), { DOTS1, { C_XX }, ACT(UNCLASS, S_SELFB) },
DOTS1, { C_NUM }, NUM1, { DOTS1, { C_NUM }, NUM1 },
DOTS1, { '.' }, ACT(ELLIPS, S_SELF), { DOTS1, { '.' }, ACT(ELLIPS, S_SELF) },
/* saw a letter or _ */ /* saw a letter or _ */
ID1, { C_XX }, ACT(NAME,S_NAME), { ID1, { C_XX }, ACT(NAME,S_NAME) },
ID1, { C_ALPH, C_NUM }, ID1, { ID1, { C_ALPH, C_NUM }, ID1 },
/* saw L (start of wide string?) */ /* saw L (start of wide string?) */
ST1, { C_XX }, ACT(NAME,S_NAME), { ST1, { C_XX }, ACT(NAME,S_NAME) },
ST1, { C_ALPH, C_NUM }, ID1, { ST1, { C_ALPH, C_NUM }, ID1 },
ST1, { '"' }, ST2, { ST1, { '"' }, ST2 },
ST1, { '\'' }, CC1, { ST1, { '\'' }, CC1 },
/* saw " beginning string */ /* saw " beginning string */
ST2, { C_XX }, ST2, { ST2, { C_XX }, ST2 },
ST2, { '"' }, ACT(STRING, S_SELF), { ST2, { '"' }, ACT(STRING, S_SELF) },
ST2, { '\\' }, ST3, { ST2, { '\\' }, ST3 },
ST2, { '\n' }, S_STNL, { ST2, { '\n' }, S_STNL },
ST2, { EOFC }, S_EOFSTR, { ST2, { EOFC }, S_EOFSTR },
/* saw \ in string */ /* saw \ in string */
ST3, { C_XX }, ST2, { ST3, { C_XX }, ST2 },
ST3, { '\n' }, S_STNL, { ST3, { '\n' }, S_STNL },
ST3, { EOFC }, S_EOFSTR, { ST3, { EOFC }, S_EOFSTR },
/* saw ' beginning character const */ /* saw ' beginning character const */
CC1, { C_XX }, CC1, { CC1, { C_XX }, CC1 },
CC1, { '\'' }, ACT(CCON, S_SELF), { CC1, { '\'' }, ACT(CCON, S_SELF) },
CC1, { '\\' }, CC2, { CC1, { '\\' }, CC2 },
CC1, { '\n' }, S_STNL, { CC1, { '\n' }, S_STNL },
CC1, { EOFC }, S_EOFSTR, { CC1, { EOFC }, S_EOFSTR },
/* saw \ in ccon */ /* saw \ in ccon */
CC2, { C_XX }, CC1, { CC2, { C_XX }, CC1 },
CC2, { '\n' }, S_STNL, { CC2, { '\n' }, S_STNL },
CC2, { EOFC }, S_EOFSTR, { CC2, { EOFC }, S_EOFSTR },
/* saw /, perhaps start of comment */ /* saw /, perhaps start of comment */
COM1, { C_XX }, ACT(SLASH, S_SELFB), { COM1, { C_XX }, ACT(SLASH, S_SELFB) },
COM1, { '=' }, ACT(ASSLASH, S_SELF), { COM1, { '=' }, ACT(ASSLASH, S_SELF) },
COM1, { '*' }, COM2, { COM1, { '*' }, COM2 },
COM1, { '/' }, COM4, { COM1, { '/' }, COM4 },
/* saw "/*", start of comment */ /* saw "/*", start of comment */
COM2, { C_XX }, COM2, { COM2, { C_XX }, COM2 },
COM2, { '\n' }, S_COMNL, { COM2, { '\n' }, S_COMNL },
COM2, { '*' }, COM3, { COM2, { '*' }, COM3 },
COM2, { EOFC }, S_EOFCOM, { COM2, { EOFC }, S_EOFCOM },
/* saw the * possibly ending a comment */ /* saw the * possibly ending a comment */
COM3, { C_XX }, COM2, { COM3, { C_XX }, COM2 },
COM3, { '\n' }, S_COMNL, { COM3, { '\n' }, S_COMNL },
COM3, { '*' }, COM3, { COM3, { '*' }, COM3 },
COM3, { '/' }, S_COMMENT, { COM3, { '/' }, S_COMMENT },
/* // comment */ /* // comment */
COM4, { C_XX }, COM4, { COM4, { C_XX }, COM4 },
COM4, { '\n' }, S_NL, { COM4, { '\n' }, S_NL },
COM4, { EOFC }, S_EOFCOM, { COM4, { EOFC }, S_EOFCOM },
/* saw white space, eat it up */ /* saw white space, eat it up */
WS1, { C_XX }, S_WS, { WS1, { C_XX }, S_WS },
WS1, { ' ', '\t', '\v' }, WS1, { WS1, { ' ', '\t', '\v' }, WS1 },
/* saw -, check --, -=, -> */ /* saw -, check --, -=, -> */
MINUS1, { C_XX }, ACT(MINUS, S_SELFB), { MINUS1, { C_XX }, ACT(MINUS, S_SELFB) },
MINUS1, { '-' }, ACT(MMINUS, S_SELF), { MINUS1, { '-' }, ACT(MMINUS, S_SELF) },
MINUS1, { '=' }, ACT(ASMINUS,S_SELF), { MINUS1, { '=' }, ACT(ASMINUS,S_SELF) },
MINUS1, { '>' }, ACT(ARROW,S_SELF), { MINUS1, { '>' }, ACT(ARROW,S_SELF) },
/* saw +, check ++, += */ /* saw +, check ++, += */
PLUS1, { C_XX }, ACT(PLUS, S_SELFB), { PLUS1, { C_XX }, ACT(PLUS, S_SELFB) },
PLUS1, { '+' }, ACT(PPLUS, S_SELF), { PLUS1, { '+' }, ACT(PPLUS, S_SELF) },
PLUS1, { '=' }, ACT(ASPLUS, S_SELF), { PLUS1, { '=' }, ACT(ASPLUS, S_SELF) },
/* saw <, check <<, <<=, <= */ /* saw <, check <<, <<=, <= */
LT1, { C_XX }, ACT(LT, S_SELFB), { LT1, { C_XX }, ACT(LT, S_SELFB) },
LT1, { '<' }, LT2, { LT1, { '<' }, LT2 },
LT1, { '=' }, ACT(LEQ, S_SELF), { LT1, { '=' }, ACT(LEQ, S_SELF) },
LT2, { C_XX }, ACT(LSH, S_SELFB), { LT2, { C_XX }, ACT(LSH, S_SELFB) },
LT2, { '=' }, ACT(ASLSH, S_SELF), { LT2, { '=' }, ACT(ASLSH, S_SELF) },
/* saw >, check >>, >>=, >= */ /* saw >, check >>, >>=, >= */
GT1, { C_XX }, ACT(GT, S_SELFB), { GT1, { C_XX }, ACT(GT, S_SELFB) },
GT1, { '>' }, GT2, { GT1, { '>' }, GT2 },
GT1, { '=' }, ACT(GEQ, S_SELF), { GT1, { '=' }, ACT(GEQ, S_SELF) },
GT2, { C_XX }, ACT(RSH, S_SELFB), { GT2, { C_XX }, ACT(RSH, S_SELFB) },
GT2, { '=' }, ACT(ASRSH, S_SELF), { GT2, { '=' }, ACT(ASRSH, S_SELF) },
/* = */ /* = */
ASG1, { C_XX }, ACT(ASGN, S_SELFB), { ASG1, { C_XX }, ACT(ASGN, S_SELFB) },
ASG1, { '=' }, ACT(EQ, S_SELF), { ASG1, { '=' }, ACT(EQ, S_SELF) },
/* ! */ /* ! */
NOT1, { C_XX }, ACT(NOT, S_SELFB), { NOT1, { C_XX }, ACT(NOT, S_SELFB) },
NOT1, { '=' }, ACT(NEQ, S_SELF), { NOT1, { '=' }, ACT(NEQ, S_SELF) },
/* & */ /* & */
AND1, { C_XX }, ACT(AND, S_SELFB), { AND1, { C_XX }, ACT(AND, S_SELFB) },
AND1, { '&' }, ACT(LAND, S_SELF), { AND1, { '&' }, ACT(LAND, S_SELF) },
AND1, { '=' }, ACT(ASAND, S_SELF), { AND1, { '=' }, ACT(ASAND, S_SELF) },
/* | */ /* | */
OR1, { C_XX }, ACT(OR, S_SELFB), { OR1, { C_XX }, ACT(OR, S_SELFB) },
OR1, { '|' }, ACT(LOR, S_SELF), { OR1, { '|' }, ACT(LOR, S_SELF) },
OR1, { '=' }, ACT(ASOR, S_SELF), { OR1, { '=' }, ACT(ASOR, S_SELF) },
/* # */ /* # */
SHARP1, { C_XX }, ACT(SHARP, S_SELFB), { SHARP1, { C_XX }, ACT(SHARP, S_SELFB) },
SHARP1, { '#' }, ACT(DSHARP, S_SELF), { SHARP1, { '#' }, ACT(DSHARP, S_SELF) },
/* % */ /* % */
PCT1, { C_XX }, ACT(PCT, S_SELFB), { PCT1, { C_XX }, ACT(PCT, S_SELFB) },
PCT1, { '=' }, ACT(ASPCT, S_SELF), { PCT1, { '=' }, ACT(ASPCT, S_SELF) },
/* * */ /* * */
STAR1, { C_XX }, ACT(STAR, S_SELFB), { STAR1, { C_XX }, ACT(STAR, S_SELFB) },
STAR1, { '=' }, ACT(ASSTAR, S_SELF), { STAR1, { '=' }, ACT(ASSTAR, S_SELF) },
/* ^ */ /* ^ */
CIRC1, { C_XX }, ACT(CIRC, S_SELFB), { CIRC1, { C_XX }, ACT(CIRC, S_SELFB) },
CIRC1, { '=' }, ACT(ASCIRC, S_SELF), { CIRC1, { '=' }, ACT(ASCIRC, S_SELF) },
-1 { -1, { '\0', '\0', '\0', '\0' }, 0 }
}; };
/* first index is char, second is state */ /* first index is char, second is state */
@ -257,10 +257,13 @@ expandlex(void)
bigfsm[j][fp->state] = nstate; bigfsm[j][fp->state] = nstate;
continue; continue;
case C_ALPH: case C_ALPH:
for (j=0; j<=256; j++) for (j=0; j<=256; j++) {
if ('a'<=j&&j<='z' || 'A'<=j&&j<='Z' if (('a'<=j && j<='z') ||
|| j=='_') ('A'<=j && j<='Z') || j=='_')
bigfsm[j][fp->state] = nstate; {
bigfsm[j][fp->state] = nstate;
}
}
continue; continue;
case C_NUM: case C_NUM:
for (j='0'; j<='9'; j++) for (j='0'; j<='9'; j++)
@ -309,7 +312,6 @@ gettokens(Tokenrow *trp, int reset)
int runelen; int runelen;
Source *s = cursource; Source *s = cursource;
int nmac = 0; int nmac = 0;
extern char outbuf[];
tp = trp->lp; tp = trp->lp;
ip = s->inp; ip = s->inp;

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_2_____"; segment "cpp_2_____";
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -77,7 +77,7 @@ dodefine(Tokenrow *trp)
if (np->flag&ISDEFINED) { if (np->flag&ISDEFINED) {
if (comparetokens(def, np->vp) if (comparetokens(def, np->vp)
|| (np->ap==NULL) != (args==NULL) || (np->ap==NULL) != (args==NULL)
|| np->ap && comparetokens(args, np->ap)) || (np->ap && comparetokens(args, np->ap)))
error(ERROR, "Macro redefinition of %t", trp->bp+2); error(ERROR, "Macro redefinition of %t", trp->bp+2);
} }
if (args) { if (args) {
@ -147,7 +147,7 @@ expandrow(Tokenrow *trp, char *flag)
|| quicklook(tp->t[0], tp->len>1?tp->t[1]:0)==0 || quicklook(tp->t[0], tp->len>1?tp->t[1]:0)==0
|| (np = lookup(tp, 0))==NULL || (np = lookup(tp, 0))==NULL
|| (np->flag&(ISDEFINED|ISMAC))==0 || (np->flag&(ISDEFINED|ISMAC))==0
|| tp->hideset && checkhideset(tp->hideset, np)) { || (tp->hideset && checkhideset(tp->hideset, np))) {
tp++; tp++;
continue; continue;
} }
@ -315,7 +315,8 @@ gatherargs(Tokenrow *trp, Tokenrow **atr, int *narg)
parens--; parens--;
if (lp->type==DSHARP) if (lp->type==DSHARP)
lp->type = DSHARP1; /* ## not special in arg */ lp->type = DSHARP1; /* ## not special in arg */
if (lp->type==COMMA && parens==0 || parens<0 && (lp-1)->type!=LP) { if ((lp->type==COMMA && parens==0) ||
(parens<0 && (lp-1)->type!=LP)) {
if (*narg>=NARG-1) if (*narg>=NARG-1)
error(FATAL, "Sorry, too many macro arguments"); error(FATAL, "Sorry, too many macro arguments");
ttr.bp = ttr.tp = bp; ttr.bp = ttr.tp = bp;
@ -354,7 +355,7 @@ substargs(Nlist *np, Tokenrow *rtr, Tokenrow **atr)
if (rtr->tp->type==NAME if (rtr->tp->type==NAME
&& (argno = lookuparg(np, rtr->tp)) >= 0) { && (argno = lookuparg(np, rtr->tp)) >= 0) {
if ((rtr->tp+1)->type==DSHARP if ((rtr->tp+1)->type==DSHARP
|| rtr->tp!=rtr->bp && (rtr->tp-1)->type==DSHARP) || (rtr->tp!=rtr->bp && (rtr->tp-1)->type==DSHARP))
insertrow(rtr, 1, atr[argno]); insertrow(rtr, 1, atr[argno]);
else { else {
copytokenrow(&tatr, atr[argno]); copytokenrow(&tatr, atr[argno]);

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -23,26 +23,26 @@ struct kwtab {
int val; int val;
int flag; int flag;
} kwtab[] = { } kwtab[] = {
"if", KIF, ISKW, { "if", KIF, ISKW },
"ifdef", KIFDEF, ISKW, { "ifdef", KIFDEF, ISKW },
"ifndef", KIFNDEF, ISKW, { "ifndef", KIFNDEF, ISKW },
"elif", KELIF, ISKW, { "elif", KELIF, ISKW },
"else", KELSE, ISKW, { "else", KELSE, ISKW },
"endif", KENDIF, ISKW, { "endif", KENDIF, ISKW },
"include", KINCLUDE, ISKW, { "include", KINCLUDE, ISKW },
"define", KDEFINE, ISKW, { "define", KDEFINE, ISKW },
"undef", KUNDEF, ISKW, { "undef", KUNDEF, ISKW },
"line", KLINE, ISKW, { "line", KLINE, ISKW },
"error", KERROR, ISKW, { "error", KERROR, ISKW },
"pragma", KPRAGMA, ISKW, { "pragma", KPRAGMA, ISKW },
"eval", KEVAL, ISKW, { "eval", KEVAL, ISKW },
"defined", KDEFINED, ISDEFINED+ISUNCHANGE, { "defined", KDEFINED, ISDEFINED+ISUNCHANGE },
"__LINE__", KLINENO, ISMAC+ISUNCHANGE, { "__LINE__", KLINENO, ISMAC+ISUNCHANGE },
"__FILE__", KFILE, ISMAC+ISUNCHANGE, { "__FILE__", KFILE, ISMAC+ISUNCHANGE },
"__DATE__", KDATE, ISMAC+ISUNCHANGE, { "__DATE__", KDATE, ISMAC+ISUNCHANGE },
"__TIME__", KTIME, ISMAC+ISUNCHANGE, { "__TIME__", KTIME, ISMAC+ISUNCHANGE },
"__STDC__", KSTDC, ISUNCHANGE, { "__STDC__", KSTDC, ISUNCHANGE },
NULL { NULL, 0, 0 }
}; };
unsigned long namebit[077+1]; unsigned long namebit[077+1];

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -159,14 +159,15 @@ makespace(Tokenrow *trp)
return; return;
if (tp->wslen) { if (tp->wslen) {
if (tp->flag&XPWS if (tp->flag&XPWS
&& (wstab[tp->type] || trp->tp>trp->bp && wstab[(tp-1)->type])) { && (wstab[tp->type] ||
(trp->tp>trp->bp && wstab[(tp-1)->type]))) {
tp->wslen = 0; tp->wslen = 0;
return; return;
} }
tp->t[-1] = ' '; tp->t[-1] = ' ';
return; return;
} }
if (wstab[tp->type] || trp->tp>trp->bp && wstab[(tp-1)->type]) if (wstab[tp->type] || (trp->tp>trp->bp && wstab[(tp-1)->type]))
return; return;
tt = newstring(tp->t, tp->len, 1); tt = newstring(tp->t, tp->len, 1);
*tt++ = ' '; *tt++ = ' ';

View File

@ -1,4 +1,4 @@
#ifdef __ORCAC__ #if defined(__ORCAC__) && defined(DO_SEGMENTS)
segment "cpp_3_____"; segment "cpp_3_____";
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -23,7 +23,6 @@ setup(int argc, char **argv)
int c, fd, i; int c, fd, i;
char *fp, *dp; char *fp, *dp;
Tokenrow tr; Tokenrow tr;
extern void setup_kwtab(void);
setup_kwtab(); setup_kwtab();
while ((c = getopt(argc, argv, "MNOVv+I:D:U:F:lg")) != -1) while ((c = getopt(argc, argv, "MNOVv+I:D:U:F:lg")) != -1)