Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.
/ bspl Public archive

Blindingly Simple Protocol Language (BSPL) Go parser

License

Notifications You must be signed in to change notification settings

mikelsr/bspl

Repository files navigation

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.

About

Blindingly Simple Protocol Language (BSPL) Go parser

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages