SAL аннотации.
В последнее время я немного забросил Win32.Utf8 – на работе завал, так что, приходя домой, делать ничего особенного не хочется. Тем не менее, проект потихоньку движется и, на сегодняшний день, я добрался до разбора SAL аннотаций.
Not a kernel guy… in the Windows kernel team |
||||||||||||||||||||||||||||||||||||||||||||||||||
Wednesday, October 31, 2007SAL аннотации.В последнее время я немного забросил Win32.Utf8 – на работе завал, так что, приходя домой, делать ничего особенного не хочется. Тем не менее, проект потихоньку движется и, на сегодняшний день, я добрался до разбора SAL аннотаций. Sunday, September 23, 2007Навигация по AST.Продолжаю возиться с синтаксическим анализом. Основное преимущество, которое даёт использование AST по сравнению с техникой разбора снизу вверх (bottom-up parsing) – это возможность отложить анализ разобранного текста «на потом». Это может быть удобно по разным причинам. В случае Win32.Utf8 это удобно тем, что требования к анализатору формируются прямо в процессе работы над проектом. По большому счёту я понятия не имею, что получиться в конечном итоге. Sunday, September 16, 2007Отладка абстрактного синтаксического дерева (AST).Во время работы над парсером постоянно возникала необходимость посмотреть как выглядит тот или иной кусок дерева или все дерево целиком. Недолго думая, я попробовал выводить его в виде XML, - получилось довольно неплохо. Исходный код на C:
Дерево, полученное после синтаксического разбора:
Sunday, September 2, 2007Построение абстрактного синтаксического дерева.Алгоритм работы Win32.Utf8 состоит из трех основных шагов:
На данный момент я работаю над вторым этапом. Цель – построенное дерево должно быть компактным, его структура должна облегчать последующий анализ во время генерации кода. В тоже время дерево должно включать всю информацию необходимую для генерации корректного кода. Tuesday, August 28, 2007Как собрать DParser for Python с помощью Visual C++ 2005?Существует два способа собрать DParser for Python под Windows:
Естественно, что я выбрал второй вариант. (На самом деле причина довольно прозаична – не хотелось собирать один проект двумя разными компиляторами). Wednesday, August 22, 2007Регулярное выражение. Симпатишное :-).Стандартный обработчик пробелов в DParser распознаёт пробелы, табуляцию, переводы строк, C-подобные комментарии и директивы “#line”. Мне нужно было отсеивать ещё и “#pragma” директивы, которые препроцессор от Visual C++ любезно оставляет в коде. Для этого понадобилось определить свой обработчик пробельных символов:
Из интересного тут только само регулярное выражение. Мне понадобилось н-дцать попыток, чтобы довести его до ума. Tuesday, August 21, 2007DParser vs. PLYПеределал разбор С заголовков на DParser – получил ускорение в 10 раз. Мелочь, а приятно. ![]() PS. Под профайлером разница меньше, - раз шесть всего, но тоже впечатляет. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Powered by WordPress