За прошедшую неделю в думах над моим проектом в голове накопилось несколько мыслей, о которых мне хотелось бы сейчас написать:
стоит ли стремиться к строгой работе с GDB/MI?
окоченевшие строки, или в поисках Лиспа;
как заблудиться в исходниках GNU Emacs;
Special: Java-ад расширения Eclipse CDT.
Много думал, много расстраивался, но в итоге что-то, кажется, понял. Закрепляю мысли сей заметкой.
Читать далееGDB/MI выводит информацию в весьма структурированном виде.
Например, информация от фреймах, возвращаемая командой
-stack-list-frames, выглядит так:
(gdb)
-stack-list-frames
^done,stack=[frame={level="0",addr="0x0804868f",func="hello",file="hello.c",fullname="/home/sphinx/projects/gsoc/hello.c",line="6"},frame={level="1",addr="0xb7faa900",func="start_thread",from="/lib/libpthread.so.0"}]
Выглядит хорошо! Как с этим работать?
Читать далееSemantic — часть CEDET, унифицированный API в Emacs для работы с исходными
текстами. Semantic предоставляет прослойку высокого уровня над низкими
процедурами лексического анализа исходников. В составе Semantic есть
написанные на Emacs Lisp подобия lex(1) и yacc(1), так что чтобы
добавить поддержку нового языка к Semantic, требуется описать его
грамматику и определить некоторые специфичные для разбора сорцов на
этом языке процедуры (документация по Semantic содержит всю
необходимую информацию).
Пример:
guile> (define a 2)
guile> (define (froboz) (* a a))
guile> (define (braphat) (let ((a 3)) (froboz)))
guile> (braphat)
4
Но:
guile> (define (braphat) (let ((a 3)) (* a a)))
guile> (braphat)
9
В разводах мраморной отделки станции метро я сегодня увидел λ.
Время изучить Лисп?