Flex / Bison: разбирать независимо объединенное целое число и строку (например, «1мин») - PullRequest
0 голосов
/ 28 сентября 2019

Короче говоря, я хочу, чтобы мой язык принимал inpyut, который имеет такую ​​форму: "1min" или "15min" или "1day".Я пытаюсь сделать так, чтобы синтаксический анализатор мог напрямую возвращать значение time_t следующим образом (в моем файле Parser.yxx:

timeframe:
    INTEGER min
    { $$ = ($1 * 60); }
;

где %type <time_t> timeframe. Для примера я толькопоказать с "min".

Имеющийся параметр min: %token <std::string> min и определен в моем файле сканера как токен "STRING":

"min"  STRING_TOKEN(min)

, где STRING_TOKENмакрос заканчивается так: std::string(yytext, yyleng).

Выше не работает, если я введу «1мин», как на входе, я всегда получаю:

Ошибка: синтаксическая ошибканеожиданная STRING, ожидая INTEGER на уровне 1.66-69

Конечно, я здесь что-то не так делаю, но кажется логичным, что я смогу сделать это с Flex / Bison?

Заранее всем спасибо!

...