Core components for the Scribble Java tools
Java GAP Other
Latest commit 6e9892d Jun 27, 2017 @rhu1 rhu1 committed on GitHub Merge pull request #121 from rhu1/rhu1-research
Merged core changes from rhu1-statetypegen.  And minor class renaming.
Failed to load latest commit information.
scribble-demos Source file format fixing. Jun 27, 2017
scribble-runtime Source file format fixing. Jun 27, 2017
mvnw Implement continuous integration Jun 5, 2017

Build Status Released Version

Java Tooling for Scribble

This project provides Java tooling/libraries for the Scribble multi-party protocol definition language.

Building from source

First step is to clone this git repository locally. Once available, run the following maven command to build the project:

mvn [clean] install

The distribution will be available from the folder scribble-dist/target. The contents of the zip is:

  • lib jars needed to run the scribble-java tool
  • script for running the command line tool

Command line usage:

List command line options.

./ --help

Check well-formedness of global protocols in, e.g., Test.scr.

./ Test.scr


  • Use the -oldwf command line flag to use the simpler syntactic protocol well-formedness from the previous version of Scribble.
  • Use the -V command line flag to obtain full traces for errors according to the new protocol validation (and other details).

Project local protocol for role "C" of protocol "Proto" in Test.scr

./ Test.scr -project Proto C

Print (a dot representation of) the Endpoint FSM for role "C" of protocol "Proto" in Test.scr

./ Test.scr -fsm Proto C

Generate Java Endpoint API for role "C" of protocol "Proto" in Test.scr

./ -d . Test.scr -api Proto C


To write a HelloWorld protocol in Test.scr (e.g., for the commands listed above):

echo 'module Test; global protocol Proto(role C, role S) { Hello() from C to S; }' > Test.scr

Further examples can be found in:

The distribution zip does not include these examples. They can be obtained as part of the source repository, or separately via the above link.

E.g. To generate the Java Endpoint API for role "C" in the "Adder" protocol from the Scribble-Java tutorial (

./ scribble-demos/scrib/tutorial/src/tutorial/adder/Adder.scr 
    -d scribble-demos/scrib/tutorial/src/ -api Adder C 

Alternative command line usage:

To run the Scribble tool directly via java, try

./ --verbose [args]

to see the underlying java command with main class, classpath and other args.

Or try (from Nick Ng):

mvn dependency:build-classpath -Dmdep.outputFile=classpath

java -cp $(cat dist/classpath) org.scribble.cli.CommandLine [args] MyModule.scr

Issue reporting

Bugs and issues can be reported via the github Issues facility.

Or email rhu1234 [at] excluding the 1234.