Ragel 6.10手册中有许多关于它生成的FSM的插图。其中一些显示状态DEF。 最好的我可以告诉它从未被定义/讨论过。
DEF
州? 提前致谢
答案 0 :(得分:1)
回答Q1:
DEF
表示默认转换,如果不能进行其他转换,则采用此转换。
回答Q2:
这取决于您使用Ragel的目的。
any
角色上从州A移动到州B吗? 通过使用手册(版本6.10)的第6.4.5节中的示例可以最清楚地理解这个问题,其中使用了解析和状态图。
当您明确使用any
作为状态时,有时会出现这种情况。
示例:
%%{
machine def_eg;
action to_action_1 {}
action to_action_2 {}
action from_action_1 {}
eg = (
start: (
any -> s1
),
s1: (
any -> s2
)>to(to_action_1) >from(from_action_1),
s2: (
any -> final
)>to(to_action_2)
);
main := ( eg ) ;
}%%
%% write data
graphviz(ragel -Vp -o def_eg.dot def_eg.rl
):
现在,表达式从任何字符更改为单个字符。并使用这些单个字符来表示状态。
%%{
machine def_eg;
event_1='1';
event_2='2';
event_3='3';
action to_action_1 {}
action to_action_2 {}
action from_action_1 {}
eg = (
start: (
event_1 -> s1
),
s1: (
event_2 -> s2
)>to(to_action_1) >from(from_action_1),
s2: (
event_3 -> final
)>to(to_action_2)
);
main := ( eg ) ;
}%%
%% write data
如图所示: