mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-17 09:02:25 +00:00
Lexer fixes
This commit is contained in:
parent
bdb238b705
commit
7a81848d88
2 changed files with 5 additions and 25 deletions
2
gmqcc.h
2
gmqcc.h
|
@ -271,8 +271,6 @@ uint32_t util_crc32(const char *, int, register const short);
|
|||
#define VECTOR_MAKE(T,N) \
|
||||
VECTOR_TYPE(T,N); \
|
||||
VECTOR_CORE(T,N)
|
||||
/* Builds a vector add function pointer for inside structures */
|
||||
#define VECTOR_IMPL(T,N) int (*N##_add)(T)
|
||||
|
||||
//===================================================================
|
||||
//=========================== code.c ================================
|
||||
|
|
28
lex.c
28
lex.c
|
@ -139,22 +139,10 @@ static int lex_digraph(lex_file *file, int first) {
|
|||
|
||||
static int lex_getch(lex_file *file) {
|
||||
int ch = lex_inget(file);
|
||||
|
||||
static int str = 0;
|
||||
switch (ch) {
|
||||
case '?' :
|
||||
return lex_trigraph(file);
|
||||
case '<' :
|
||||
case ':' :
|
||||
case '%' :
|
||||
case '"' : str = !str; if (str) { file->line ++; }
|
||||
return lex_digraph(file, ch);
|
||||
|
||||
case '\n':
|
||||
if (!str)
|
||||
file->line++;
|
||||
}
|
||||
|
||||
if (ch == '?')
|
||||
return lex_trigraph(file);
|
||||
if (ch == '<' || ch == ':' || ch == '%')
|
||||
return lex_digraph(file, ch);
|
||||
return ch;
|
||||
}
|
||||
|
||||
|
@ -283,13 +271,7 @@ int lex_token(lex_file *file) {
|
|||
if (ch > 0 && (ch == '_' || isalpha(ch))) {
|
||||
lex_clear(file);
|
||||
|
||||
/*
|
||||
* Yes this is dirty, but there is no other _sane_ easy
|
||||
* way to do it, this is what I call defensive programming
|
||||
* if something breaks, add more defense :-)
|
||||
*/
|
||||
while (ch > 0 && ch != ' ' && ch != '(' &&
|
||||
ch != '\n' && ch != ';' && ch != ')') {
|
||||
while (ch > 0 && (ch == '_' || isalpha(ch))) {
|
||||
lex_addch(ch, file);
|
||||
ch = lex_getsource(file);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue