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