Что делает return yytext[0]?

В этой части lex программы lex-yacc для чего добавляются строки

. return yytext[0];
\n return yytext[0];

Это лексическая часть

%{
#include "y.tab.h"
%}
%%
a return A;
b return B;
. return yytext[0];
\n return yytext[0];
%%

Что он возвращает, когда встречает \n ?


person Khacho    schedule 22.11.2015    source источник
comment
Возможный дубликат Что означает yytext[0]?   -  person rici    schedule 22.11.2015
comment
Спасибо за ответ, сэр, я просмотрел ответ по ссылке, которую вы дали, но все равно мне это не ясно, не могли бы вы объяснить пример? Спасибо   -  person Khacho    schedule 22.11.2015
comment
Попробуйте здесь: tldp.org/HOWTO/Lex-YACC-HOWTO-6 .html   -  person rici    schedule 22.11.2015
comment
Добавленный комментарий @VSaiNagendra yytext содержит текст, соответствующий текущему токену. Это означает, что yytext[0] возвращает первый символ совпадающего токена.   -  person Ajay2707    schedule 29.10.2018


Ответы (1)


Не уверен, почему Ajay2707 опубликовал комментарий, а не ответ, потому что он прав. Согласно http://dinosaur.compilertools.net/flex/manpage.html yytext это строка, содержащая токен, соответствующий flex. Взятие [0] принимает первый символ. Так

  • . вернуть yytext[0]; проходит через любой символ, кроме A, B и \n
  • \n вернуть yytext[0]; проходит через символ \n

Это потому, что шаблон '.' не соответствует\n

Короче говоря, этот лексер изменяет a и b на заглавные буквы и ничего больше.

person hjohanns    schedule 10.11.2018