Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Тут, на самом деле, можно было обойтись регулярным выражением, но тогда не получится верно определить номер строки — мы не сможем узнать количество съеденных регэкспом строк (или сможем? если да — пишите способ).
static void updateLocation()
{
// Начало токена
yylloc.first_line = line_number;
yylloc.first_column = column_number;
// Новое смещение
for( int i = 0; i < yyleng; i++ ) {
if( yytext[i] == '\n' ) {
line_number++;
column_number = 1;
} else {
column_number++;
}
}
// Конец токена
yylloc.last_line = line_number;
yylloc.last_column = column_number;
printf( "%s", yytext );
}
Парсим Python код с помощью Flex и Bison