есть регулярка
{B}*"namespace"{BN}*/[^a-z_A-Z0-9]
где {B} это символы отступов вроде пробелов или табов, а {BN} это пробелы табы и переход на новую строку.
Мне не понятно что делает символ / перед [^a-z_A-Z0-9]
.
пользователь @Wiktor Stribiżew оказался прав. Этот символ нечто иное как символ завершающего контекста. О нём можно прочитать тут. В результате должно вернуться значение {B}*"namespace"{BN}*
, за которым следует [^a-z_A-Z0-9]
Для обработки ситуаций, требующих опережающего просмотра, используется символ / (не путать с символом ), который обозначает, что следующая за ним последовательность является завершающим контекстом и ее не следует сохранять в yytext[], поскольку она не входит в саму лексему. Правило для распознавания DO в Фортране можно записать так:
DO/[0-9 ]*[a-zA-Z0-9 ]+=[a-zA-Z0-9 ]+, printf("нашли DO");
То есть это аналог (?=...)
в PCRE.
Написал программу, которая считывает информацию о студентах (имя фамилию и баллы за три проверочных теста)Работает, в принципе