PiTOGo is a compiler from
First, in the root directory of the project, run the following command to install dependencies:
pnpm iThen, run the following command to compile the typescript code:
npx tsx path/to/file/.tsExample usage can be seen in the file __tests__/transpiler.test.ts.
Running
npx tsx __tests__/transpiler.test.tswill generate a file __tests__/program.go containing the golang code.
The syntax of processes is that of
| Construct |
|
PiTOGo Syntax |
|---|---|---|
| Nil process | nil |
|
| Parallel composition | p | p |
|
| Choice | p + p |
|
| Restriction | (a)p |
|
| Matching | [a=b]p |
|
| Input | a(x).p |
|
| Output | a<x>.p |
|
| Process definition | P(a) = p; |
|
| Process invocation | P<a> |
|
| Replication | !p |
A special write-only channel log is provided to print messages to the console.
A program is a list of process definitions terminated by semicolons, where the last process definition is the main process:
P1(a) = p1;
P2(b) = p2;
...
main = p3;
The project is structured as follows:
-
__tests__/contains example code for all the components; -
src/common/andsrc/utils/contain utility code; -
src/scanner/contains the code for scanning and lexing strings into tokens that will be consumed by the parser; -
src/parser/contains the code for parsing tokens generated by the tokenizer and building the abstract syntax tree of$\pi$ -calculus expressions; -
src/transpiler/contains the code for generating golang code starting from the abstract syntax tree;