Lines Matching refs:pp

51 #define CACHE()		do{CACHEINX();CACHEOUTX();st=pp.state;if(!pp.hidden)spliced=0;}while(0)
52 #define CACHEIN() do{CACHEINX();st=pp.state;if(!pp.hidden)spliced=0;}while(0)
53 #define CACHEINX() do{ip=pp.in->nextchr;}while(0)
54 #define CACHEOUT() do{CACHEOUTX();st=pp.state;if(!pp.hidden)spliced=0;}while(0)
55 #define CACHEOUTX() do{tp=op=pp.outp;xp=pp.oute;if(sp)sp=op;}while(0)
58 #define LASTOUT() ((op>pp.outbuf)?*(op-1):pp.lastout)
62 #define SYNC() do{SYNCINX();SYNCOUTX();pp.state=st;}while(0)
63 #define SYNCIN() do{SYNCINX();pp.state=st;}while(0)
64 #define SYNCINX() do{pp.in->nextchr=ip;}while(0)
65 #define SYNCOUT() do{SYNCOUTX();pp.state=st;}while(0)
66 #define SYNCOUTX() do{if(sp)op=tp=sp;pp.outp=op;}while(0)
69 #define PPCHECKOUT() do{if(op>xp){{PPWRITE(PPBUFSIZ);if(pp.outbuf==pp.outb){pp.outbuf+=PPBUFSIZ;xp=pp.oute+=PPBUFSIZ;}else{pp.outbuf-=PPBUFSIZ;memcpy(pp.outbuf,xp,op-xp);xp=pp.oute-=PPBUFSIZ;op-=2*PPBUFSIZ;}}}}while(0)
70 #define PPCHECKOUTSP() do{if(op>xp){if(sp)op=sp;else{PPWRITE(PPBUFSIZ);if(pp.outbuf==pp.outb){pp.outbuf+=PPBUFSIZ;xp=pp.oute+=PPBUFSIZ;}else{pp.outbuf-=PPBUFSIZ;memcpy(pp.outbuf,xp,op-xp);xp=pp.oute-=PPBUFSIZ;op-=2*PPBUFSIZ;}}}}while(0)
71 #define PPCHECKOUTTP() do{if(op>xp){{PPWRITE(PPBUFSIZ);if(pp.outbuf==pp.outb){pp.outbuf+=PPBUFSIZ;xp=pp.oute+=PPBUFSIZ;}else{pp.outbuf-=PPBUFSIZ;memcpy(pp.outbuf,xp,op-xp);xp=pp.oute-=PPBUFSIZ;op-=2*PPBUFSIZ;}}tp=op;}}while(0)
74 if ((st & (ADD|HIDDEN)) && !(*pp.control & SKIP)) \
86 m = pp.addp - pp.addbuf; \
87 pp.addp = pp.addbuf; \
88 memcpy(op, pp.addbuf, m); \
92 if (pp.linesync) \
94 if ((st & SYNCLINE) || pp.hidden >= MAXHIDDEN) \
96 pp.hidden = 0; \
103 (*pp.linesync)(error_info.line, error_info.file); \
109 m = pp.hidden; \
110 pp.hidden = 0; \
118 pp.hidden = 0; \
140 * return next pp token
142 * NOTE: pp.token points to at least MAXTOKEN*2 chars and is
151 #define DOSTRIP() ((st&STRIP)||pp.level==1&&(st&(COMPILE|JOINING))==COMPILE&&!(pp.option&PRESERVE))
153 #define st pp.state
154 #define tp pp.token
155 #define xp &pp.token[MAXTOKEN]
158 #define BACKOUT() (op=pp.token)
160 #define CACHEIN() (ip=pp.in->nextchr)
161 #define CACHEOUT() (op=pp.token)
168 #define SYNCIN() (pp.in->nextchr=ip)
169 #define SYNCOUT() (pp.toknxt=op)
211 pp.level++;
233 if (((state = ~state) != S_COMMENT || pp.comment || c == '/' && !INCOMMENT(rp)) && (n = ip - bp - 1) > 0)
237 if (op == tp && (st & (ADD|HIDDEN)) && !(st & PASSTHROUGH) && !(pp.option & PRESERVE))
248 if ((pp.option & PRESERVE) && !(st & NEWLINE) && c != '\n')
277 pp.in->flags |= IN_tokens;
294 if (pp.comment) PUTCHR(c);
305 else if (comwarn < 0 && !(pp.mode & HOSTED))
309 if (!comwarn && !(pp.mode & HOSTED))
335 if (!(pp.mode & HOSTED))
340 pp.in->flags |= IN_tokens;
345 if (!pp.comment) PUTCHR(c);
351 if (!(pp.mode & HOSTED))
365 if (!(pp.mode & HOSTED))
374 if (!pp.comment || sp)
377 if (!(pp.state & COMPATIBILITY) || *bp == ' ' || *bp == '\t')
385 else if (pp.in->type & IN_TOP)
387 if (pp.comment && !(st & (COLLECTING|DIRECTIVE|JOINING)) && !(*pp.control & SKIP) && (pp.in->type & IN_TOP))
391 pp.hidden = 0;
397 (*pp.comment)(c == '\n' ? "//" : "/*", tp + 2, c == '\n' ? "" : (st & HEADER) ? "*/\n" : "*/", comstart ? comstart : error_info.line);
404 pp.hidden += error_info.line - comstart;
420 if (pp.level > 1 && !(st & (NOSPACE|SKIPCONTROL)))
439 if (pp.pool.input)
457 register struct ppinstk* cur = pp.in;
458 register struct ppinstk* prv = pp.in->prev;
485 while (pp.control-- != cur->control)
486 error(2, "#%s on line %d has no #%s", dirname(IF), GETIFLINE(pp.control+1), dirname(ENDIF));
490 pp.hidden = 0;
496 pp.mode |= HOSTED;
497 pp.flags |= PP_hosted;
501 pp.mode &= ~HOSTED;
502 pp.flags &= ~PP_hosted;
520 if (pp.linesync && (cur->type != IN_RESCAN || (cur->flags & IN_sync)))
524 (*pp.linesync)(error_info.line, error_info.file);
526 prv = pp.in;
535 if (pp.test & TEST_count)
539 sfprintf(sfstderr, "%7d: pplex calls\n", pp.counter.pplex);
540 sfprintf(sfstderr, "%7d: terminal states\n", pp.counter.terminal);
541 sfprintf(sfstderr, "%7d: emitted tokens\n", pp.counter.token);
542 sfprintf(sfstderr, "%7d: input stream pushes\n", pp.counter.push);
543 sfprintf(sfstderr, "%7d: macro candidates\n", pp.counter.candidate);
544 sfprintf(sfstderr, "%7d: macro expansions\n", pp.counter.macro);
545 sfprintf(sfstderr, "%7d: function macros\n", pp.counter.function);
549 if (pp.test & TEST_hit)
560 if (pp.test & (TEST_hashcount|TEST_hashdump))
564 hashdump(NiL, (pp.test & TEST_hashdump) ? HASH_BUCKET : 0);
632 if ((pp.mode & (HOSTED|PEDANTIC)) == PEDANTIC && LASTCHR() != '\f' && LASTCHR() != CC_sub)
642 if (pp.incref && !(pp.mode & INIT))
645 (*pp.incref)(error_info.file, cur->file, error_info.line - 1, PP_SYNC_POP);
668 while (pp.control-- != cur->control)
669 error(2, "#%s on line %d has no #%s", dirname(IF), GETIFLINE(pp.control+1), dirname(ENDIF));
673 if (pp.linesync)
676 (*pp.linesync)(error_info.line, error_info.file);
682 popframe(pp.macp);
743 if (pp.in->flags & IN_prototype) PUTCHR(c);
801 else if (pp.level > 1 || (pp.option & PRESERVE)) PUTCHR(c);
804 if (pp.in->type != IN_BUFFER)
806 if (!(pp.option & ALLPOSSIBLE))
886 if (!(st & HEADER) || (pp.option & (HEADEREXPAND|HEADEREXPANDALL)) && pp.in->type != IN_FILE && pp.in->type != IN_BUFFER && pp.in->type != IN_INIT && pp.in->type != IN_RESCAN)
923 if ((st & PASSTHROUGH) || (pp.option & PRESERVE))
930 m = (st & SKIPCONTROL) && (pp.mode & HOSTED) ? -1 : 1;
931 if (c == '\n' && quot == '\'' && (pp.option & STRINGSPAN)) n = 0;
942 if (!(pp.option & STRINGSPAN) || (st & (COMPATIBILITY|STRICT)) == STRICT)
945 if (!(pp.option & STRINGSPAN))
950 else if (pp.option & STRINGSPLIT)
966 if (!(st & DIRECTIVE) || !(pp.mode & (HOSTED|RELAX)))
1007 if (c == '"' && !(st & (COLLECTING|NOTEXT|PASSTHROUGH|SKIPCONTROL)) && (pp.mode & CATLITERAL))
1009 if (c == '"' && pp.level == 1 && !(st & (COLLECTING|JOINING|NOTEXT|SKIPCONTROL)) && (pp.mode & CATLITERAL))
1015 pptoken = pp.token;
1016 pp.token = pp.catbuf;
1017 *pp.token++ = 0;
1030 pp.level = 0;
1041 *pp.catbuf = ' ';
1057 STRCOPY(op, pp.token + 2 + (*pp.token == ' '), s);
1070 STRCOPY(op, pp.token + 1 + (*pp.token == ' '), s);
1074 *pp.token = 0;
1081 pp.state |= HIDDEN|SYNCLINE;
1082 pp.hidden += m;
1085 if ((st & COMPATIBILITY) && c == '#' && *(pp.token - 1))
1087 *(pp.token + 3) = *(pp.token + 2);
1088 *(pp.token + 2) = *(pp.token + 1);
1089 *(pp.token + 1) = *pp.token;
1090 *pp.token = *(pp.token - 1);
1093 *--pp.token = '\n';
1096 else if (*(pp.token - 1))
1097 pp.token--;
1098 if (ppisidig(*pp.token))
1100 if (pp.in->type == IN_MACRO && (s = strchr(pp.token, MARK)) && !*(s + 1))
1105 PUSH_STRING(pp.token);
1106 pp.state &= ~(JOINING|NEWLINE);
1107 pp.state |= ppstate & ~(ADD|QUOTE);
1114 pp.token = pptoken;
1116 pp.level = 1;
1124 if (n && !(st & (PASSTHROUGH|SKIPCONTROL|NOTEXT)) && c == '\'' && (op - tp) <= 2 && !(pp.mode & (HOSTED|RELAX)))
1126 if (pp.option & PRESERVE)
1130 pp.in->flags |= IN_tokens;
1138 if (n && !(st & NOTEXT) && (op - tp) <= (DOSTRIP() ? 0 : 2) && !(pp.mode & (HOSTED|RELAX)))
1166 else if (pp.option & PRESERVE) PUTCHR(c);
1231 if (pp.option & MODERN)
1242 if (pp.option & MODERN)
1319 pp.mode |= MARKMACRO;
1321 pp.in->flags |= IN_tokens;
1334 tp = op - ((pp.truncate && pp.truncate < (HITN - HIT0)) ? (pp.truncate - 1) : (HITN - HIT0));
1342 if (sym = ppsymref(pp.symtab, tp))
1369 else if ((sym->flags & SYM_MULTILINE) && pp.linesync)
1374 (*pp.linesync)(error_info.line, error_info.file);
1379 pp.in->flags |= IN_tokens;
1385 pp.mode |= MARKMACRO;
1388 if (pp.level == 1)
1390 pp.in->flags |= IN_tokens;
1399 if (pp.truncate && (op - tp) > pp.truncate) tp[pp.truncate] = 0;
1400 sym = (pp.option & NOHASH) ? ppsymref(pp.symtab, tp) : ppsymset(pp.symtab, tp);
1402 if (pp.symbol = sym)
1404 if ((sym->flags & SYM_KEYWORD) && (!pp.truncate || (op - tp) <= pp.truncate || (tp[pp.truncate] = '_', tp[pp.truncate + 1] = 0, pp.symbol = sym = (pp.option & NOHASH) ? ppsymref(pp.symtab, tp) : ppsymset(pp.symtab, tp), 0)))
1409 #define ADVANCE() do{if(pp.toknxt<op)pp.token=pp.toknxt;}while(0)
1415 if ((pp.option & NOISE) && ppisnoise(c))
1425 pp.toknxt = op;
1427 if (!(pp.state & SPACEOUT))
1429 pp.state |= SPACEOUT;
1432 ppcomment = pp.comment;
1433 pp.comment = 0;
1454 *--pp.toknxt = 0;
1499 s = pp.toknxt;
1500 while (s > pp.token) ungetchr(*--s);
1501 *(pp.toknxt = s) = 0;
1536 *(pp.toknxt = pp.token) = 0;
1545 pp.comment = ppcomment;
1547 pp.state &= ~SPACEOUT;
1550 op = pp.toknxt;
1553 if (pp.option & NOISEFILTER)
1562 else if ((pp.option & NOISE) && c == T_ID && strneq(tp, "__builtin_", 10))
1564 hashlook(pp.symtab, tp, HASH_DELETE, NiL);
1565 pp.symbol = sym = (struct ppsymbol*)ppkeyset(pp.symtab, tp);
1575 if (pp.level == 1)
1578 pp.in->flags |= IN_tokens;
1583 if (sym = ppsymref(pp.symtab, tp))
1591 if ((sym->flags & SYM_MULTILINE) && pp.linesync)
1594 (*pp.linesync)(error_info.line, error_info.file);
1601 if (pp.level == 1)
1610 if (pp.truncate && (op - tp) > pp.truncate)
1612 tp[pp.truncate] = 0;
1617 if (!(pp.option & NOHASH)) sym = ppsymset(pp.symtab, tp);
1618 else if (!(sym = ppsymref(pp.symtab, tp))) goto fsm_symbol;
1630 pp.in->flags |= IN_tokens;
1631 if ((st & STRICT) && pp.in->type != IN_MACRO && pp.in->type != IN_MULTILINE)
1633 if (!(pp.mode & HOSTED)) error(1, "non-standard reference to #(...)");
1671 if (!(st & NEWLINE) || !(pp.in->type & IN_TOP))
1675 pp.in->flags |= IN_tokens;
1689 if (!(st & NEWLINE) || (st & DEFINITION) || !(pp.in->type & IN_TOP))
1698 else if (pp.level == 1 && !(st & (JOINING|SPACEOUT)) && !(pp.option & PRESERVE))
1705 pp.toknxt = oop = op;
1706 pp.state |= SPACEOUT;
1707 ppcomment = pp.comment;
1708 pp.comment = 0;
1725 pp.comment = ppcomment;
1726 pp.state &= ~SPACEOUT;
1731 if (pp.pragma && !(st & NOTEXT))
1735 (*pp.pragma)(NiL, NiL, NiL, tp, 1);
1747 if (c == '#' && pp.in->type == IN_RESCAN)
1750 * pass line to pp.pragma VERBATIM
1754 s = pp.valbuf;
1757 if (pp.pragma && !(st & NOTEXT))
1761 (*pp.pragma)(NiL, NiL, NiL, pp.valbuf, 1);
1795 if (op == tp && !(st & JOINING) && pp.in->type == IN_FILE && !(pp.option & PRESERVE))
1798 pp.hidden++;
1807 else if (!(pp.in->flags & IN_noguard))
1812 pp.in->flags |= IN_tokens;
1819 if (*ip == '\n' && *(ip + 1) != '\n' && !pp.macref && !(st & (ADD|HIDDEN)))
1825 if ((st & NOTEXT) && ((pp.mode & FILEDEPS) || (pp.option & (DEFINITIONS|PREDEFINITIONS))))
1829 debug((-5, "token[%d] %03o = %s [line=%d]", pp.level, c, pptokchr(c), error_info.line));
1841 if (pp.level == 1)
1846 debug((-5, "token[%d] %03o = %s [line=%d]", pp.level, c, pptokchr(c), error_info.line));
1856 pp.hidden++;
1888 if (!(pp.in->flags & IN_noguard))
1892 pp.in->flags |= IN_tokens;
1907 if (pp.level == 1)
1960 if (!(pp.option & PRESERVE))
1978 switch (pp.in->type)
1985 if ((st & JOINING) && (!INQUOTE(rp) || quot != '"') || pp.level > 1 && (rp == fsm[START] || INQUOTE(rp)))
1987 if (pp.level > 1 && (rp == fsm[START] || INQUOTE(rp)))
2000 if (pp.macp->arg[c - ARGOFFSET][-1])
2001 PUSH_EXPAND(pp.macp->arg[c - ARGOFFSET], pp.macp->line);
2003 PUSH_COPY(pp.macp->arg[c - ARGOFFSET], pp.macp->line);
2011 if (!*(s = pp.macp->arg[c]) && (pp.in->symbol->flags & SYM_VARIADIC) && pp.in->symbol->macro->arity == (c + 1))
2019 PUSH_COPY(s, pp.macp->line);
2037 PUSH_QUOTE(pp.macp->arg[c - ARGOFFSET], pp.macp->line);
2046 PUSH_SQUOTE(pp.macp->arg[c - ARGOFFSET], pp.macp->line);
2053 if (pp.in->type != IN_COPY)
2055 if (pp.level <= 1)
2060 if (pp.in->type == IN_EXPAND)
2091 else if (pp.level > 1)
2104 if (pp.in->type == IN_FILE)
2112 if ((st & WARN) && (st & (COMPATIBILITY|TRANSITION)) && !(pp.mode & HOSTED) && !INCOMMENT(rp))
2138 if (pp.in->type == IN_FILE && (pp.option & PLUSPLUS))
2158 if ((st & WARN) && (st & (COMPATIBILITY|TRANSITION)) && !(pp.mode & HOSTED) && !INCOMMENT(rp))
2179 if (pp.in->type == IN_FILE && (!(pp.option & PLUSSPLICE) || !INCOMMENTXX(rp)))
2183 if ((pp.option & SPLICESPACE) && !INQUOTE(rp))
2200 if ((pp.option & STRINGSPLIT) && quot == '"')
2206 else if (*pp.lineid)
2214 pp.hidden++;
2225 pp.hidden++;
2229 c = (pp.option & SPLICECAT) ? '\t' : ' ';
2241 pp.hidden++;
2293 if (pp.in->type == IN_FILE)
2310 if ((pp.option & ZEOF) && pp.in->type == IN_FILE)
2312 pp.in->flags |= IN_eof;
2338 if (pp.level == 1)
2340 pp.in->flags |= IN_tokens;
2360 debug((-5, "token[%d] %03o = %s", pp.level, c, pptokstr(tp, 0)));
2362 pp.level--;
2380 error(ERROR_OUTPUT|0, pp.pool.output, "%d", error_info.errors != 0);
2394 if (!sfnew(sfstdin, NiL, SF_UNBOUND, pp.pool.input, SF_READ))
2407 pp.pool.input = 0;
2428 pp.outfile = ofile;
2432 if (pp.mode & DUMP)
2434 if (!pp.pragma)
2436 (*pp.pragma)(dirname(PRAGMA), pp.pass, keyname(X_CHECKPOINT), pp.checkpoint, 1);