Анонс нового языка программирования
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