我正在尝试组织一个C程序,然后生成一个lex文件。但是代码中还有最后一个我不明白的错误
我从来没有用过C。
错误代码的第一部分:
/* addChar - a function to add nextChar to lexeme */
void addChar() {
if (lexLen <= 98) {
lexeme[lexLen++] = nextChar;
lexeme[lexLen] = 0;
}
else
printf("Error - lexeme is too long n");
}
/* getChar - a function to get the next character of
input and determine its character class */
void getChar() {
if ((nextChar = getc(in_fp)) = EOF) {
if (isalpha(nextChar))
charClass = LETTER;
else if (isdigit(nextChar))
charClass = DIGIT;
else charClass = UNKNOWN;
}
else
charClass = EOF;
}
错误是:
program.c: In function ‘getChar’:
program.c:96:34: error: lvalue required as left operand of assignment
if ((nextChar = getc(in_fp)) = EOF) {```
This:
if ((nextChar = getc(in_fp)) = EOF) {
应该
if ((nextChar = getc(in_fp)) == EOF) {
^^
这将表达式从赋值变为求值,从而不需要lvalue