Blindingly Simple Protocol Language (BSPL) Go parser.

This repository also contains interfaces for a BSPL reasoner (reason package) and an implementation of some components of that reasoner (implementation package).
This implementation is used in another project.
Modules
-
parser: Standalone BSPL parser implemented using a toy lexer I wrote a while ago.
-
proto: Go structures to form a BSPL protocol, e.g., Protocol, Role and Action.
-
reason: Interface definition for implementing a reasoner and protocol instances.
-
implementation: Draft implementation to use in another project.
Production use of this project is not advised as it is far from ready.
Other folders
Usage example
-
Define a valid protocol in a file with path path.
-
Open the file and pass the reader to bspl.Parse()
package main
import (
"fmt"
"os"
"github.com/mikelsr/bspl"
)
func main() {
source, err := os.Open(path)
if err != nil {
panic(err)
}
protocol, err := bspl.Parse(source)
if err != nil {
panic(err)
}
fmt.Println(protocol)
}
- Done!
Improvements
- Remove messages (✓)
The Message struct is redundant: the ocurred action can be derived from
the outputted values from the previous state of the instance to the current
one.