bspl

package module
v0.0.0-...-50b84e0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2020 License: MPL-2.0 Imports: 5 Imported by: 7

README

Blindingly Simple Protocol Language (BSPL) Go parser.

Build Status codecov 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.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Compare

func Compare(a, b Protocol) bool

Compare two BSPL protocols

Types

type Action

type Action = proto.Action

Action is an alias for proto.Action

type IO

type IO = proto.IO

IO is an alias for proto.IO

const (
	// In defines a local scope
	In IO = proto.In
	// Out defines a global scope
	Out IO = proto.Out
	// Nil defines a parameter missing from a protocol instance
	Nil IO = proto.Nil
)

type Instance

type Instance = reason.Instance

Instance is an alias for reason.Instance

type Parameter

type Parameter = proto.Parameter

Parameter is an alias for proto.Parameter

type Protocol

type Protocol = proto.Protocol

Protocol is an alias for proto.Protocol

func Parse

func Parse(in io.Reader) (Protocol, error)

Parse a BSPL protocol

type Reasoner

type Reasoner = reason.Reasoner

Reasoner is an alias for reason.Reasoner

type Role

type Role = proto.Role

Role is an alias for proto.Role

type Roles

type Roles = reason.Roles

Roles is an alias for reason.Roles

type Values

type Values = reason.Values

Values is an alias for reason.Values

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL