ProPaintMobile
 Полезное
 Общение
 

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


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

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

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

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

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

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

Первое приложение на Kotlin (JavaFX)


Цель этой статьи - разобраться как работать с JavaFX в Kotlin.

Итак устанавливаем Intellij Idea, если еще не установили, и создаем новый проект.
(Предполагается что плагин для Kotlin уже установлен)
  Знімок екрана з 2016-02-06 21:32:39.png

Далее вводим имя проекта и выбираем рантайм библиотеку (я выбрал встроенную в плагин)
  Знімок екрана з 2016-02-06 21:33:15.png

Теперь создаем класс Kotlin в папке src, назовем его Main, и вводим необходимый минимум
  1. import javafx.application.Application
  2. import javafx.fxml.FXMLLoader.load
  3. import javafx.scene.Parent
  4. import javafx.scene.Scene
  5. import javafx.stage.Stage
  6.  
  7. /**
  8.  * Created by naik on 06.02.16.
  9.  */
  10. class Main : Application()
...
Продолжить

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

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

Mockito и Behavior Driven Development


Когда разработчик только начинает изучать принципы тестирования, он, как правило, знакомится в первую очередь с тестированием, основывающемся на проверке данных. То есть, чтобы протестировать функцию сложения чисел разработчик пишет, например, такой тест: “Заданы числа 2 и 3, в качестве результата ожидается 5”, и по тому, выполнилось ли это утверждение или нет, он делает вывод о верной или неверной реализации тестируемой функции.
Такой подход хорошо работает, когда код достаточно прост, результат предсказуем, и его проверка не займёт относительно много времени. Но на практике часто функции сложные, тяжело покрыть тестами каждый возможный исход, либо подготовка исходных или проверка конечных данных для теста занимает много времени. Можно, конечно, подумать: “Это сложно тестировать...
Продолжить

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

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

Многопоточность в Java. Основы


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

Существуют понятия процесс и поток. Процессу выделяется память, какие-то ресурсы, а также он содержит по крайней мере один поток. У потока же есть набор инструкций для выполнения кода.
Поскольку у одного процесса может быть несколько потоков, а ресурсы у процесса одни, то все эти потоки будут работать с этими одними ресурсами, причём почти одновременно. Здесь и кроется вся сложность создания многопоточных приложений.


Преимущества многопоточности
Не смотря на множество проблем, многопоточность очень полезна в пользовательских интерфейсах. Пока один поток занимается обработкой данных, второй преспокойно...
Продолжить

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

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

Графическое поле ввода


Возьмем проще, что нам надо для того, чтоб сделать подобный трюк?
1. Смена дисплеев — Canvas-TextBox
2. Обработка команды для TextBox
3. Класс для курсора
4. Класс для графического поля ввода


     Начнем с класса для поля ввода. Назовем его GInput.java
  1. //GInput.java
  2. import // упускаю, это азы и каждый должен сам уметь это делать
  3.  
  4. public class GInput {
  5.  
  6.   public int x, y, //точка расположения поля на дисплее
  7.                   width, height; // размеры (ширина, высота)
  8.  
  9.   public String text = "Нажми для ввода"; // текст поля
  10.  
  11.   public GInput(int x, int y, int width, int height) {
  12.     this.x = x ;
  13.     this.y = y;
  14.     this.width = width;
  15.     this.height = height;
  16.   }
  17.  
  18.   //рисование поля, нарисуем рамку и внутри пусть будет текст (можешь здесь
...
Продолжить

Рейтинг:  6  (За: 7 | Против: 1)
Добавил: vl@volk

Комментарии (9)
Всего: 28
<< 1 2 3 4 5 6 >>
Категории

Онлайн: 17 (2/15)

Telegram
 

Аноним2800 р.
NaruTrey800 р.
vlavolk522 р.
Freddy500 р.
mr-demiurg200 р.
  © aNNiMON (Melnik Software)
 
Яндекс.Метрика