При компиляции (обработки с использованием re2c) образца Recognizing integers: the sentinel method я получаю:Синтаксическая ошибка из правила по умолчанию «*»
re2c : error : line 16, column 9: syntax error
кажется, жаловаться на «*». Ниже мой 01_recognizing_integers.re файл (за исключением без комментариев по линии 16):
#include <stdio.h>
static const char *lex(const char *YYCURSOR)
{
const char *YYMARKER;
/*!re2c
re2c:define:YYCTYPE = char;
re2c:yyfill:enable = 0;
end = "\x00";
bin = '0b' [01]+;
oct = "0" [0-7]*;
dec = [1-9][0-9]*;
hex = '0x' [0-9a-fA-F]+;
* { return "err"; } // line 16
bin end { return "bin"; }
oct end { return "oct"; }
dec end { return "dec"; }
hex end { return "hex"; }
*/
}
int main(int argc, char **argv)
{
for (int i = 1; i < argc; ++i) {
printf ("%s: %s\n", lex(argv[i]), argv[i]);
}
return 0;
}
Если удалить эту строку с звездочками, то нет никакой ошибки, выход генерируется и компилятор компилирует его, и (за исключением того, что я удалил образцы ошибок из тестов). Является ли образец неправильным? Как я могу исправить это для работы по назначению?
Почему я получаю вниз голос? Я не могу улучшить будущие вопросы, если не знаю, что не так. – user34660
При публикации ошибок вы всегда должны предоставлять информацию (платформа, версия программы, способ вызова программы, точное сообщение об ошибке и т. Д.). Таким образом, у людей есть шанс помочь. Обратите внимание, что это не я, который был ниспослан. – skvadrik
Спасибо, @skvadrik. Я верю тебе, что это не ты. Ваше объяснение помогает. Я хочу сказать, что я подозреваю, что кто-то голосует все, что я делаю, потому что это я. Я не могу быть уверен, что это происходит. – user34660