Re: Syntax of transitions

Frank Ellermann <> Thu, 11 January 2007 20:06 UTC

Received: from [] ( by with esmtp (Exim 4.43) id 1H56C7-0006pC-AK; Thu, 11 Jan 2007 15:06:39 -0500
Received: from [] ( by with esmtp (Exim 4.43) id 1H56C5-0006lz-Ix for; Thu, 11 Jan 2007 15:06:37 -0500
Received: from ([] by with esmtp (Exim 4.43) id 1H56C4-0004cM-5S for; Thu, 11 Jan 2007 15:06:37 -0500
Received: from list by with local (Exim 4.43) id 1H56C0-0003xK-NU for; Thu, 11 Jan 2007 21:06:32 +0100
Received: from ([]) by with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for <>; Thu, 11 Jan 2007 21:06:32 +0100
Received: from nobody by with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for <>; Thu, 11 Jan 2007 21:06:32 +0100
From: Frank Ellermann <>
Date: Thu, 11 Jan 2007 21:00:54 +0100
Organization: <URL:>
Lines: 61
Message-ID: <>
References: <> <> <> <>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 3.0 (OS/2; U)
X-Spam-Score: 1.6 (+)
X-Scan-Signature: 082a9cbf4d599f360ac7f815372a6a15
Subject: Re: Syntax of transitions
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: DIscussion on state machine specification in IETF protocols <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>

Clive D.W. Feather wrote:

>> you want the states written into lines with 69 characters.

> Non-sequitor.

The RFC line length is 72 minus 3 for the left margin.  It's
difficult to squeeze formal languages into these limits, and
if you fold longer lines the result can be hard to read.

But we want folks to read and understand state machines in
RFCs - if they'd be forced to extract the source and feed it
into some presentation tool it's a lost battle because no
casual reader or reviewer will do this.

Maybe authors could write something like...

messageABC @    state1,
                state46 ->      state47 :       action101,

...if messageX1 or messageABC in one the three listed states
cause action101 and actionconnect with next state state47.

But they could as well identify the corresponding action(s)
with a single name "do101", and mention the details in a
comment of the declaration:

actions:        foo,            # do the foo thing
                bar,            # do the bar stuff
                do101;          # signal 101 and connect

The actions in a state machine can be mere identifiers, what
it really means would be anyway in prose (comment or similar).

The states, the messages, and the next states are the core of
a state machine, the "actions" only connect this abstraction
with something real in a protocol.

> I want to be able to write:

>     Signal1 @ IDLE -> BUSY : "Send 101", connectSubscriber ;

> without having to invent a set just to contain these two actions.

Okay, for readability reasons I'd want to be able to define
and use a "do101" set of actions.  If it's in some "artwork"
(69 characters) of an RFC that could be better.

So I guess we need comma-separated lists of messages, actions,
and states (excl. next states after "->").

And maybe we need named sets as shorthands for such lists.  But
above all we need KISS, not a convoluted syntax with tons of
different ways to express the same idea.  It should be intuitive,
readers must get the point without ever looking into the manual.


Cosmogol mailing list