Анонс нового языка программирования
Nov. 1st, 2012 11:52 amЧтобы упростить разработку симулятора нашей системы слепой перезаписи графов, мы подготовили проект нового языка программирования на основе нотации Lafont с описанием побочных действий на языке Си. По аналогии с
Ниже пример программы на этом языке. Как видно по данному "Hello World", программы похожи по структуре к описанию парсеров и лексических анализаторов на
https://github.com/codedot/inet
yacc(1) и lex(1) выходными данными нашего компилятора будет модуль на языке Си. Синтаксис нашего языка программирования выбран близким к тому, как записываются правила взаимодействия в LaTeX. 1 text: '$' CODE '$' rest
2 rest: rule ';' rest
3 | rule '.'
4 rule: side CODE side
5 side: cell
6 | cell '[' list ']'
7 tree: leaf
8 | cell '(' list ')'
9 list: tree
10 | tree ',' list
11 leaf: cell
12 | NAME
13 cell: '\\' NAME
14 | '\\' NAME '_' CODE
Ниже пример программы на этом языке. Как видно по данному "Hello World", программы похожи по структуре к описанию парсеров и лексических анализаторов на
yacc(1) и lex(1), с помощью которых и будет реализован компилятор нашего языка.${
/* An example interaction system. */
#include <stdio.h>
}$
\fan_{i}[x, y] {
printf("fan_%d >< fan_%d\n", i, j);
} \fan_{i}[x, y];
\fan_{i}[\fan_{i + j}(a, b), \fan_{i + j}(c, d)] {
IFF(i != j);
printf("fan_%d >< fan_%d\n", i, j);
} \fan_{j}[\fan_{i + j}(a, c), \fan_{i + j}(b, d)];
\erase {
printf("erase >< fan_%d\n", j);
} \fan_{j}[\erase, \erase];
\erase {
printf("erase >< erase\n");
} \erase.
https://github.com/codedot/inet