Пишем компилятор — ВведениеКомпиляторы — вещь сложная, но принципы его работы достаточно просты. 1. Лексемный разбор — разбор входящего потока символов на лексемы и передача их следующему этапу в виде токенов. 2. Синтаксический разбор — разбор лексем, полученных в предыдущей стадии на синтаксические конструкции 3. Трансляция — формирование кода более низкого уровня из синтаксического дерева, полученного на предыдущей стадии В первой статье я попытаюсь ввести общие термины и описать несложный язык, для которого мы напишем простое подобие компилятора. В следующей статье я опишу разработку лексического анализатора для нашего языка. В цикле статей трансляция, скорее всего, рассматриваться не будет, хотя выполнять программы, составленные на нашем языке, мы сможем. Идентификатор Продолжить Рейтинг: 9 (Против: 1 | За: 10) Добавлено: 20.11.2014 от Oak Комментарии (14) Реализация собственных Input/Output StreamВ Java очень богатый набор классов по работе с потоками: InputStream, DataInputStream, ByteArrayOutputStream, PrintStream и т.д. Каждый из них полезен в той или иной ситуации. Поэтому важно уметь работать с ними. Например, нужно в игре защитить графику. Можно считать весь файл в массив, провести над ним операции по раскодированию и потом из массива байт создать картинку. Такой способ не очень хорош из-за повышенного потребления памяти и лишних операций. А почему бы нам сразу не читать байты уже раскодированными? Вот тут нам и поможет возможность создания своего Input/OutputStream'а. Начнём с OutputStream. Первым делом, нужно создать свой класс, наследуемый от OutputStream. На вход он будет принимать существующий OutputStream.
Продолжить Рейтинг: 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. Он умеет получать изображение с экрана, эмулировать нажатия клавиш и управлять мышью. То что нужно. Для начала решил освоить этот класс, для этого написал метод, который "набирал" переданный ему текст. Исходный код этого метода выглядит так:
Продолжить Рейтинг: 5 (Против: 0 | За: 5) Добавлено: 9.05.2014 от aNNiMON Комментарии (0) Всего: 42
|