状态机生成规则

Posted 月夜魂归

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了状态机生成规则相关的知识,希望对你有一定的参考价值。

笔记软件在2023/3/29 20:57:13推送该笔记

状态机生成规则

//状态机
BTState:
    \'state\' name=ID \'\' states+=State* \'\';
//状态
State:
    name=ID;
//条款
Term:
    \'term\' ElementName? description=STRING? ;
//条款约束  约束[当事人约束,状态约束,时间约束]等...
InlineStyles:
    (propertyA+=PropertyA|propertyB=PropertyB)*;
// 行为处理
ImportNestingElement:
    (\'handle\' \'[\' (classesNames+=[Behavior:ID](\',\' classesNames+=[Behavior:ID])*)? \']\')?;
//处理约束------------------
PropertyA:
    propertyA=(\'party\') \'is\' valueA=[SingleElement:ID](\',\' valueA=[SingleElement:ID])*;
// 约束分为简单约束和复杂约束
PropertyB:
    (\'restrict\' (\'[\' (properties+=ChindProperty(\',\' properties+=ChindProperty)*)? \']\')?)?;
// 条件约束
ChindProperty:
    propertyB=Expression (AttributeSymbol attr=ID)? comparisonSymbol=ComparisonSymbol valueB=Expression;

语法规则

主要规则如下【条款规则、行为规则】

条款规则
term State
restrict [当事人约束,时间约束,基于内置函数的一般约束]
handle[behavior+]

行为规则
behavior Behavior
IF [CONDITION] Then [结果表达式]

主要的约束如下

当事人约束
party is [person*]

时间约束
after|before [表达式]

基于内置函数的一般约束
[内置函数] [symbol] [表达式]

以上是关于状态机生成规则的主要内容,如果未能解决你的问题,请参考以下文章

自己动手写编译器:从正则表达式到NFA状态机

虚拟机配置与系统安装

自己动手写编译器:代码实现正则表达式到NFA状态机

自己动手写编译器:代码实现正则表达式到NFA状态机

如何根据C中的状态机生成单个脉冲?

FPGA状态机跑飞问题记录