Ragel (6.10) 文档插图中的 DEF 状态是什么
What is the DEF state in the Ragel (6.10) document illustrations
Ragel 6.10 手册中有很多关于它生成的 FSM 的插图。其中一些显示状态 DEF。
据我所知,这绝不是 defined/discussed.
DEF
状态是什么?
- 它的含义是什么?例如如果它出现在你的 FSM abc 应该完成
提前致谢
问题 1 的答案:
DEF
表示默认转换,如果无法进行其他转换,则进行默认转换。
问题 2 的答案:
这取决于您使用 Ragel 的目的。
- 使用常规语言定义 FSM:
您要在
any
个角色上从 A 州转移到 B 州吗?
- 使用状态图定义 FSM:
你想在任何事件中从状态 A 移动到状态 B 吗?您有 'default' 过渡的概念吗?
通过使用手册(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
图示为:
Ragel 6.10 手册中有很多关于它生成的 FSM 的插图。其中一些显示状态 DEF。 据我所知,这绝不是 defined/discussed.
DEF
状态是什么?- 它的含义是什么?例如如果它出现在你的 FSM abc 应该完成
提前致谢
问题 1 的答案:
DEF
表示默认转换,如果无法进行其他转换,则进行默认转换。
问题 2 的答案:
这取决于您使用 Ragel 的目的。
- 使用常规语言定义 FSM:
您要在
any
个角色上从 A 州转移到 B 州吗? - 使用状态图定义 FSM: 你想在任何事件中从状态 A 移动到状态 B 吗?您有 'default' 过渡的概念吗?
通过使用手册(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
图示为: