Nov. 1st, 2012

Чтобы упростить разработку симулятора нашей системы слепой перезаписи графов, мы подготовили проект нового языка программирования на основе нотации Lafont с описанием побочных действий на языке Си. По аналогии с 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

Profile

Anton Salikhmetov

November 2018

S M T W T F S
    123
45678 910
11121314151617
18192021222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 6th, 2025 09:59 am
Powered by Dreamwidth Studios