Pull to refresh
406
-16
Роман @Ariman

ML-исследователь

Send message

Компиляция. 2: грамматики

Reading time11 min
Views40K
В предыдущем посте было много кода и, по некоторым мнениям, недостаточно объяснений. Будем чередовать: в этот раз будет много теории, а до практики почти не дойдёт.

Далее в посте:

  1. Магазинный автомат
  2. Формальные грамматики
  3. LR-парсинг
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments22

Компиляция. 3: бизон

Reading time13 min
Views47K
Это единственный пост в серии, в центре внимания которого — старообрядный сишный бизон, так надоевший некоторым. Тем, кто пишет не на Си, пост всё равно должен быть интересен, потому что похожие по принципу работы генераторы LR-парсеров существуют для очень многих языков. Тех же, кто идеологически не приемлет LR-парсеры, мне сегодня привлечь нечем.

Далее в посте:

  1. Компиляция грамматики
  2. Двухступенчатый парсер
  3. Что у него внутри?
  4. Конфликты в грамматике
  5. Как это работает?
Читать дальше →
Total votes 73: ↑71 and ↓2+69
Comments15

Компиляция. 4: игрушечный ЯП

Reading time18 min
Views20K
С грамматиками калькуляторов поиграли достаточно, переходим к языкам программирования. Бета-тестеры статьи подали идею писать JavaScript-подобный язык: начнём с простейшего скобчатого скелета, и будем его постепенно обращивать наворотами — синтаксическим сахаром, типами данных, поддержкой функций, и т.д.

Чтобы неполноценность нашего языка была понятна уже из названия, назовём его JSkrip.

Далее в посте


  1. Синтаксис
  2. Грамматика
  3. Парсер
  4. Синтаксическое дерево
  5. Pretty-printing

Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments13

Создание языка программирования с использованием LLVM. Часть 3: Генерация кода LLVM IR

Reading time22 min
Views15K
Добро пожаловать в Главу 3 учебника «Создание языка программирования с LLVM». В этой главе мы рассмотрим, как преобразовать AST (Абстрактное Синтаксическое дерево), построенное в Главе 2, в LLVM IR. Она расскажет вам о некоторых аспектах работы LLVM, а также продемонстрирует, насколько он прост в использовании. Вы увидите, что гораздо больше труда потребовалось на лексический и синтаксический анализ, чем на непосредственное создание кода LLVM IR.

Обратите внимание: код из этой главы требует наличия LLVM 2.2 или более поздней версии. С версиями по LLVM 2.1 включительно этот код работать не будет. Также стоит отметить, что вам стоит использовать версию этого учебника, которая соответствует вашему релизу LLVM: вы можете использовать документацию, которая прилагается к официальным выпускам или посетить страницу с релизами на llvm.org.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments11

Жадные алгоритмы

Reading time4 min
Views185K
ДеньгиДоброго времени суток, хабр! Сегодня я бы хотел рассказать про жадные алгоритмы.

Есть много методов решения тех или иных задач: динамическое программирование, перебор. Не менее известными и довольно распространенными являются жадные алгоритмы.

Думаю, каждый программист в своей жизни хотя бы раз написал жадину, может быть, даже не задумываясь об этом. Что же это такое? Добро пожаловать под кат.
Читать дальше →
Total votes 106: ↑100 and ↓6+94
Comments17

Знакомство с .Net Micro Framework

Reading time3 min
Views16K


Первый раз о .Net Micro Framework мы услышали около года назад на одной из конференций по встраиваемым технологиям. На тот момент мы с коллегой размышляли на тему новой платформы для наших встраиваемых разработок и потому решили присмотреться к .Net Micro Framework более внимательно. С тех пор мы довольно глубоко изучили эту платформу. И хотя не все там так гладко, все-таки платформа .Net Micro Framework оказалась очень удобной и полезной в нашей работе. В этой статье я расскажу почему.
Читать дальше →
Total votes 96: ↑76 and ↓20+56
Comments46

Фильтр Калмана — !cложно?

Reading time7 min
Views84K
Недавно прочитал пост из «Дополненной реальности», в котором упоминается Фильтр Калмана в сравнении с более простым «альфа-бета» фильтром. Давно собирался сочинить нечто вроде сниппета по составлению ФК, и вот думаю самое время. В статье я вам расскажу как на практике можно составить расширенный ФК не особо утруждая себя высоконаучными размышлениями и глубокими теоретическими изысканиями.
Под катом попытка рассказать по-простому о сложном
Total votes 73: ↑69 and ↓4+65
Comments14

Создание языка программирования с использованием LLVM. Часть 1: Введение и лексический анализ

Reading time7 min
Views58K
Добро пожаловать в учебник «Создание языка программирования с LLVM». Этот учебник знакомит вас с созданием простейшего языка программирования, и при этом показывает, каким оно может быть легким и интересным, а также даёт вам начальные знания, которые вы затем сможете применить на других языках программирования. Код в этом учебнике также может быть использован в качестве стартовой площадки для ваших творений с помощью LLVM.

Целью данного учебника является постепенное представление нашего языка, описание его пошагового создания. Это позволит нам охватить достаточно широкий спектр вопросов проектирования языков и использования LLVM, попутно показывая и объясняя код без огромного количества ненужных деталей.
Читать дальше →
Total votes 65: ↑61 and ↓4+57
Comments28

Создание языка программирования с использованием LLVM. Часть 2: Реализация парсера и AST

Reading time20 min
Views35K
Добро пожаловать в Главу 2 учебника «Создание языка программирования с LLVM». В этой главе мы увидим, как использовать лексический анализатор, созданный в Главе 1, чтобы построить полный синтаксический анализатор для нашего языка Kaleidoscope. После того, как у нас будет готов парсер, мы будем строить Abstract Syntax Tree (AST) (Абстрактное синтаксическое дерево).
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments6

Неортогональная БИНС для малых БПЛА

Reading time7 min
Views32K
БИНС
По правилам сокращений в заголовке не должно быть, но расписав сокращения я превратил бы заголовок в аннотацию. Так что вот…
  • БИНС — бесплатформенная инерциальная навигационная система
  • БПЛА — беспилотный летательный аппарат
  • ОЧ — ось чувствительности датчика

Речь в статье пойдет о навигационной системе, в которой ОЧ датчиков ориентированы неортогонально, т.е. расположены под некоторым, ненулевым, углом к осям системы координат, связанной с БПЛА. Особенность таких БИНС в том, что по информации от каждого из датчиков можно получить значения всех трех компонент угловой скорости (для гироскопов) и линейного ускорения (для линейных акселерометров) объекта.
Статья написана как дополнение к Строим мультикоптер, часть вторая. Целью является описание одного из способов борьбы с дрейфом нуля в дешевых датчиках.
Для чего нужна избыточность читать тут...
Total votes 67: ↑63 and ↓4+59
Comments45
12 ...
16

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity