runaway action

Manfred_Nowak svv1... at
Fri Aug 8 19:12:09 UTC 2008

On 8 Aug., 18:32, Adrian Thurston <thurs... at> wrote:
> some code and the expected result?

The ragel source is in the second post, except, that the closing curly
bracket is dropped somehow. Please insert '}' at the end of the ragel

If you save the source as "fsm.rl", then the commands

  ragel -D fsm.rl
  dmd  fsm
  fsm <arg>

should be ececutable, where <arg> should be replaced by arguments like
`aa' , `bc' or `bca'.

In the source the action `clr' is defined but not used. The goal is to
attribute the FSM in such a way, that whenever the start state is
entered a `clr' action is executed. Because the `clr' action simply
writes the string "clr", this means that:
`fsm aa' should produce 2 times "clr",
`fsm bc' should prdouce 1 "clr" and
`fsm bca' should produce 2 times "clr".

In the definition of the machine `all' the state labelled `start'
corresponds via epsilon production `''->l1' with the state labelled
`l1'. In principle this means, that whenever a transition `-> l1' is
followed a `clr' action should be executed.

But all I managed to get is a "clr" for every character read or no
"clr" at all.

More information about the ragel-users mailing list