/bspl

Blindingly Simple Protocol Language (BSPL) Go parser

Primary LanguageGoMozilla Public License 2.0MPL-2.0

Blindingly Simple Protocol Language (BSPL) Go parser.

Build Status codecov License: MPL 2.0 Go Version GoDoc Reference

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

  • config: Contains the automaton fed to the lexer to process a BSPL protocol.

  • test: Test resources.

Usage example

  1. Define a valid protocol in a file with path path.

  2. 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)
}
  1. Done!

Improvements

  1. 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.