PiTOGo is a compiler from
First, in the root directory of the project, run the following command to install dependencies:
pnpm i
Then, run the following command to compile the typescript code:
npx tsx path/to/file/.ts
Example usage can be seen in the file __tests__/transpiler.test.ts
.
Running
npx tsx __tests__/transpiler.test.ts
will 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;