pitogo
TypeScript icon, indicating that this package has built-in type declarations

0.2.7 • Public • Published

PiTOGo

PiTOGo is a compiler from $\pi$-calculus expressions into golang code written in typescript.

Usage

Requires nodejs, npm and pnpm installed on your machine.

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.

Syntax

The syntax of processes is that of $\pi$-calculus, where the following constructs can be written in this way (where p is a process, a and b are channel names, x is a message, and P is a process identifier):

Construct $\pi$-calculus Syntax PiTOGo Syntax
Nil process $nil$ nil
Parallel composition $p \mid p$ p | p
Choice $p + p$ p + p
Restriction $(a) p$ (a)p
Matching $[a =b].p$ [a=b].p
Input $a(x).p$ a(x).p
Output $\overline{a}x.p$ a<x>.p
Process definition $P(a) \triangleq p$ P(a) = p;
Process invocation $P\langle a \rangle$ P<a>
Replication $!p$ !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;

Project structure

The project is structured as follows:

  • __tests__/ contains example code for all the components;
  • src/common/ and src/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;

Readme

Keywords

none

Package Sidebar

Install

npm i pitogo

Weekly Downloads

0

Version

0.2.7

License

Apache-2.0

Unpacked Size

144 kB

Total Files

51

Last publish

Collaborators

  • jfet97