www.lakhin.com
Инкрементальная компиляция
Хочу написать свой редактор кода

Только на Маке


Не понимает Джаву и Плюсы

Только в браузере
Редактор моей мечты
- Запускается где угодно
- Понимает любой язык
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Print the string to the console.
}
}class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Print the string to the console.
}
}Подсветка синтаксиса
Лексический парсер
function HelloWorld ( )
[a..zA..Z]+ => id
'function' => keyword
'(' | ')' => terminal
<?php
ehco "Hello world";
?>
Подсветка ошибок
ehco -> echo
Синтаксический парсер
1 * (2 + 3)
сложить => умножить ('+' умножить)*
умножить => операнд ('*' операнд)*
операнд => [0..9]+ | '(' сложить ')'
1 * (2 - 3)
1 * (2 )
Семантика
a * (b + a)
*
+
b
a
a

Скорость?

4000 строк кода на Scala за 64 секунды
Инкрементальный компилятор
a * (b + a)
*
+
b
a
a
a * (b + c)
*
+
b
a
c
Папа Карло

github.com/Eliah-Lakhin/papa-carlo

github.com/Eliah-Lakhin/papa-carlo

- в сотне наиболее популярных проектов на Github
- 3 контрибьютора
- более 150 коммитов


Sébastien Doeraene @sjrd
автор ScalaJS
Папа Карло на Scala Days 2014


Federico Tomassetti @ftomassetti
Java Incremental Parser
Martin Mauch @nightscape
Papa Carlo Aunt