November 26th, 2012

with Cat The Cat

К вопросу о простоте лексера языка программирования Си.

В одной библиотеке нашёл вот такое:
#define BODY <clc/integer/abs.inc>
#include <clc/integer/gentype.inc>
И ведь наверняка где-то используется в виде #include BODY.

В GNU C используется преобразование содержимого определения в лексемы и простая подстановка списка лексем по месту. Это означает, что #include должна уметь собирать имя файла из лексем. Второй вариант - мы храним строку определения вместе со списком лексем, специально для такого случая.

Какой-то ужас.