Как я могу отправить yileng совпадающей строки из Lex в Yacc? - PullRequest
1 голос
/ 23 декабря 2010

Пожалуйста, я пытаюсь передать значение совпадения строки из моего (.l) файла в (.y) файл.Вот пример проблемы:

В файле Lex:

<state1>.+    {   fprintf(yyout, "%d", yyleng);    } 

В файле Yacc:

/ * Мне нужно знать методологию, используемую для получения конкретного yyleng в файл yacc.Должен ли я использовать глобальные переменные?или есть конкретный способ решения этой проблемы?* /

Заранее спасибо за помощь!~ Любые предложения высоко ценятся.

Ответы [ 2 ]

3 голосов
/ 23 декабря 2010

yyleng - глобальная переменная; объявите это в своем файле грамматики и используйте это.

Flex использует:

typedef size_t yy_size_t;
extern yy_size_t yyleng;

Лекс использует:

extern int yyleng;
1 голос
/ 23 декабря 2010

Определите свой собственный yytype и передайте любые значения через него

...