coco/r генератор компиляторов и трансляторов, который по атрибутной грамматике генерирует сканер (лексический анализатор) и парсер (синтаксичсекий анализатор). Сканер строится как детерминированный конечный автомат, а парсер — рекурсивным спуском.
Машина Тьюринга и ассемблер
Есть такая штука — машина Тьюринга. Представляет собой простейший компьютер, однако писать под него хуже, чем на brainfuck'е. Решил я тут на днях побаловаться, но делать интерпретатор — не спортивно, да интерпретаторов этих — вагон. Потом меня посетила еще более странная идея — а чего бы не сделать это на Асме? (я его знаю паршиво, как раз решил потренироваться, так что сильно не пинайтесь).
STM32CubeMX — продвинутый генератор проектов для STM32
Пару недель назад STMicroelectronics выкатили обновление своей программы MicroXplorer, которая позволяла графически настроить инициализацию портов в конкретном STM32 для своих нужд, в том числе и делать ремап портов и визуально видеть что занято\свободно на текущий момент.
Выглядела эта программа следующим образом:

И позволяла на выходе получить *.c, *.h файлы в которых содержались функции по инициализации портов в соотвествии с заданными требованиями с использованием Standard Peripheral Library.
Что же решили изменить на этот раз?
Выглядела эта программа следующим образом:

И позволяла на выходе получить *.c, *.h файлы в которых содержались функции по инициализации портов в соотвествии с заданными требованиями с использованием Standard Peripheral Library.
Что же решили изменить на этот раз?
Заполнение текстовых шаблонов данными на основе модели. Реализация на .NET с использованием динамических функций в байт-коде (IL)
Туториал
Пролог
Недавно возникла задача массовой рассылки писем, текст которых формируется на основе шаблона, в котором помимо статического содержимого есть информация о получателе и фрагменты текста. В моем случае это шаблон автоматического оповещения подписчиков о публикации новых статей, соответственно в нем есть обращение к адресату и красиво оформленная ссылка на публикацию.
Сразу возник вопрос — как это реализовать? На ум приходили различные решения, начиная от задания в шаблоне неких константных значений, которые бы заменялись на данные модели, и заканчивая полноценными вьюхами Razor (сайт построен на MVC 5).
После непродолжительной битвы с самим собой, я пришел к выводу, что эту достаточно распространенную задачу пора решить раз и навсегда, и что ее решение должно быть не очень сложным (т.е. не должно зависеть от библиотек, не входящих в состав .NET Framework 4), но при этом достаточно функциональным, чтобы решать поставленную задачу и иметь запас по расширяемости.
В данной статье я расскажу о решении на основе генератора байт-кода, которое удовлетворяет этим требованиям, а также прокомментирую наиболее интересные фрагменты кода.
Если вас интересует только шаблонизатор, ссылочки ниже:
Исходные коды шаблонизатора (Genesis.Patternizer) и тестовой консоли в проекте на SourceForge: https://sourceforge.net/projects/open-genesis/?source=navbar
Или в архиве одним файлом: Patternizer.zip