https://github.com/nickng/sesstype
Parser and library for the sesstype type language in Go
https://github.com/nickng/sesstype
development session-types
Last synced: 8 months ago
JSON representation
Parser and library for the sesstype type language in Go
- Host: GitHub
- URL: https://github.com/nickng/sesstype
- Owner: nickng
- License: apache-2.0
- Created: 2017-12-08T16:31:43.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-18T01:37:03.000Z (over 8 years ago)
- Last Synced: 2025-04-09T10:50:32.474Z (about 1 year ago)
- Topics: development, session-types
- Language: Go
- Homepage:
- Size: 38.1 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sesstype [](https://travis-ci.org/nickng/sesstype) [](http://godoc.org/go.nickng.io/sesstype)
`sesstype` is a parser and library for the `sesstype` type language.
The `sesstype` type language for Multiparty Session Types is defined in
[sesstype](https://github.com/nickng/sesstype.rs#parser).
To get:
go get -u go.nickng.io/sesstype/...
By default the `parse-sesstype` command will also be installed.
## Syntax
The basic syntax of `sesstype` language is given below, for details see
[godoc](https://godoc.org/go.nickng.io/sesstype)
### Global Types
G ::= P->Q: { l(U).G , ... } Interaction between P and Q with message l(U)
| *T.G Recursion with label T, body G
| T Type variable
| end End type
### Local Types
L ::= Q &{ ?l(U).L, ... } Branching, receive l(U) from role Q
| P +{ !l(U).L, ... } Selection, send l(U) to role P
| *T.L Recursion with label T, body L
| T Type variable
| end End type
## License
`sesstype` is licensed under the [Apache License](http://www.apache.org/licenses/LICENSE-2.0).