Пишем компилятор — Введение


Компиляторы — вещь сложная, но принципы его работы достаточно просты.
1. Лексемный разбор — разбор входящего потока символов на лексемы и передача их следующему этапу в виде токенов.
2. Синтаксический разбор — разбор лексем, полученных в предыдущей стадии на синтаксические конструкции
3. Трансляция — формирование кода более низкого уровня из синтаксического дерева, полученного на предыдущей стадии

В первой статье я попытаюсь ввести общие термины и описать несложный язык, для которого мы напишем простое подобие компилятора.
В следующей статье я опишу разработку лексического анализатора для нашего языка.

В цикле статей трансляция, скорее всего, рассматриваться не будет, хотя выполнять программы, составленные на нашем языке, мы сможем.

Идентификатор
Продолжить

Рейтинг:  9  (Против: 1 | За: 10)
Добавлено: 20.11.2014 от Oak

Комментарии (14)

Реализация собственных Input/Output Stream


В Java очень богатый набор классов по работе с потоками: InputStream, DataInputStream, ByteArrayOutputStream, PrintStream и т.д. Каждый из них полезен в той или иной ситуации. Поэтому важно уметь работать с ними.

Например, нужно в игре защитить графику. Можно считать весь файл в массив, провести над ним операции по раскодированию и потом из массива байт создать картинку. Такой способ не очень хорош из-за повышенного потребления памяти и лишних операций. А почему бы нам сразу не читать байты уже раскодированными? Вот тут нам и поможет возможность создания своего Input/OutputStream'а.

Начнём с OutputStream. Первым делом, нужно создать свой класс, наследуемый от OutputStream. На вход он будет принимать существующий OutputStream.
  1. public

Продолжить

Рейтинг:  9  (Против: 0 | За: 9)
Добавлено: 1.11.2014 от heavenzip

Комментарии (2)

Структура мидлета [Java 2 ME]


В статье мы подробно разберём один из вариантов построения структуры мидлета.
Для удобства я не стану приводить полный код (полные исходники вы можете скачать по ссылке ниже).


Представим себе следующую ситуацию

У нас есть 3 экрана:
1. Экран "Сплэш" (который будет отображаться первым)
2. Экран "Меню"
3. Экран "Игра"

Для примера я не буду писать игры и меню с анимацией, так что каждый из экранов будет выполнять следующие действия:
   Экран "Сплэш" - выводит на 10 секунд текст "SPLASH"
   Экран "Меню" - выводит на 10 секунд текст "MENU"
   Экран "Игра" - выводит текст "GAME"

Итак, имея уже эти сведения, для наших экранов можно подобрать общий абстрактный класс, и имя ему - "Screen"
Что
Продолжить

Рейтинг:  14  (Против: 0 | За: 14)
Добавлено: 17.08.2014 от Kalter

Комментарии (22)

Бэкап сообщений Вконтакте с использованием VK API и Java 8


За время использования vk.com накопилось немало диалогов, которые хотелось бы куда-то сохранить и изредка перечитывать. К тому же всегда интересно вспомнить с чего начиналась переписка с другом или подругой. Поэтому я решил написать для себя приложение, которое будет делать бэкап диалогов в html со всеми фотографиями, ссылками на видео и репостами.

Задачу можно разбить на два пункта:
1. Получение бэкапа диалогов.
2. Парсинг и вывод в нужный формат.
Цитата 16-фев-2017:
По многочисленным просьбам добавил скомпилированное приложение с текстовым файлом настроек.

Получение бэкапа диалогов
Вконтакте предоставляет свой API для работы приложений. Именно его мы и будем использовать
Продолжить

Рейтинг:  13  (Против: 0 | За: 13)
Добавлено: 23.06.2014 от aNNiMON

Комментарии (6)

Написание бота для Diamond Dash


Не так давно, просматривая ленту на Хабре, наткнулся на такую вот статью. Бегло просмотрев её, я решил сделать подобное на своём родном языке Java. Сейчас постараюсь в точности описать ход своих мыслей и идей. Приступим.
Первым делом нужно было узнать, умеет ли Java работать с мышкой? Интуиция выдала стопроцентный положительный результат, затем, через десять секунд был введён запрос в Google и получено подтверждение - в таких делах наш помощник это класс java.awt.Robot. Он умеет получать изображение с экрана, эмулировать нажатия клавиш и управлять мышью. То что нужно. Для начала решил освоить этот класс, для этого написал метод, который "набирал" переданный ему текст. Исходный код этого метода выглядит так:
  1. /**
  2.  * Автоматическое

Продолжить

Рейтинг:  5  (Против: 0 | За: 5)
Добавлено: 9.05.2014 от aNNiMON

Комментарии (0)
Всего: 42
<< 1 ... 6 7 8 9 >>

Мы в соцсетях

tw tg yt gt