Главная » Файлы » Выполненные работы » Разное [ Добавить материал ]

Регулярное выражение: определение (инициализация) массива на языке Си (пример)

Данное регулярное выражения находит в коде программы на языке СИ место объявления (инициализации) массива, но без учёта того, что оно может быть закоммечено или быть частью строковой константы.

В данном случае нам нужно учесть, что может быть объявлен не только простой массив, но и массив указателей (или указателей на указатели и т.п.), а также то, что может быть создан массив указателей на тип void, но массив типа void создать невозможно.

И например такого объявления тоже быть не может: int arr[10][0];

В итоге получаем вот такое регулярное выражение:

Code
(void([\s\t]*\*[\t\s]*)+|short +int|int|long +int|float|short|double|char|bool|long)[\s\t\*]*[a-zA-Z_]([a-zA-Z0-9_]){0,63}(([ \t]*\[[\s\t]*([1-9]|([0-9]{2,}))[\s\t]*\])+)[\s\t]*\;

как видите не взято во внимание разнообразие возможных типов (например unsigned int, long long и т.п.), что сделано намерено. Данный вопрос является отдельной задачей)


Добавил: COBA (16.09.2010) | Категория: Разное
Просмотров: 1817 | Загрузок: 1 | Рейтинг: 0.0/0 |
Комментарии (0)

Имя *:
Email *:
Код *: