Initial revision
This commit is contained in:
77
lang/cem/cpp.ansi/skip.c
Normal file
77
lang/cem/cpp.ansi/skip.c
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Header$ */
|
||||
/* PREPROCESSOR: INPUT SKIP FUNCTIONS */
|
||||
|
||||
#include "arith.h"
|
||||
#include "LLlex.h"
|
||||
#include "class.h"
|
||||
#include "input.h"
|
||||
|
||||
extern int InputLevel;
|
||||
|
||||
int
|
||||
skipspaces(ch, skipnl)
|
||||
register int ch;
|
||||
{
|
||||
/* skipspaces() skips any white space and returns the first
|
||||
non-space character.
|
||||
*/
|
||||
register int nlseen = 0;
|
||||
|
||||
for (;;) {
|
||||
while (class(ch) == STSKIP)
|
||||
ch = GetChar();
|
||||
if (skipnl && class(ch) == STNL) {
|
||||
ch = GetChar();
|
||||
LineNumber++;
|
||||
nlseen++;
|
||||
continue;
|
||||
}
|
||||
if (ch == TOKSEP && InputLevel) {
|
||||
ch = GetChar();
|
||||
continue;
|
||||
}
|
||||
|
||||
/* \\\n are handled by trigraph */
|
||||
|
||||
if (ch == '/') {
|
||||
ch = GetChar();
|
||||
if (ch == '*' && !InputLevel) {
|
||||
skipcomment();
|
||||
ch = GetChar();
|
||||
}
|
||||
else {
|
||||
UnGetChar();
|
||||
return '/';
|
||||
}
|
||||
}
|
||||
else if (nlseen && ch == '#') {
|
||||
domacro();
|
||||
ch = GetChar();
|
||||
} else
|
||||
return ch;
|
||||
}
|
||||
}
|
||||
|
||||
SkipToNewLine(garbage)
|
||||
int garbage;
|
||||
{
|
||||
register int ch;
|
||||
register int pstrict = 0;
|
||||
|
||||
while ((ch = GetChar()) != '\n') {
|
||||
if (ch == '/') {
|
||||
if ((ch = GetChar()) == '*' && !InputLevel) {
|
||||
skipcomment();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (garbage && !is_wsp(ch))
|
||||
pstrict = 1;
|
||||
}
|
||||
++LineNumber;
|
||||
return pstrict;
|
||||
}
|
||||
Reference in New Issue
Block a user