首页 > 其他分享 >一键生成`ABB`文法解析器

一键生成`ABB`文法解析器

时间:2023-05-13 17:35:02浏览次数:36  
标签:解析器 syntaxState1 ABB syntaxState3 syntaxState4 一键 classDef stroke syntaxState2

Compiler of ABB

The C# source code of the compiler ABB is generated by bitzhuwei.GrammarFormat.

Grammar

// 3 VnRegulations:
A : A '+' B // [0]
  | 'a' ; // [1]
B : 'b' ; // [2]
// 0 VtPatterns:

Lexical Analyzer States

flowchart classDef c0001 color:#FF0000; classDef c0010 stroke-dasharray: 10 10; classDef c0011 stroke-dasharray: 10 10,color:#FF0000; classDef c0100 fill:#BB66EE; classDef c0101 fill:#BB66EE,color:#FF0000; classDef c0110 fill:#BB66EE,stroke-dasharray: 10 10; classDef c0111 fill:#BB66EE,stroke-dasharray: 10 10,color:#FF0000; classDef c1000 stroke:#333,stroke-width:4px; classDef c1001 stroke:#333,stroke-width:4px,color:#FF0000; classDef c1010 stroke:#333,stroke-width:4px,stroke-dasharray: 10 10; classDef c1011 stroke:#333,stroke-width:4px,stroke-dasharray: 10 10,color:#FF0000; classDef c1100 stroke:#333,stroke-width:4px,fill:#BB66EE; classDef c1101 stroke:#333,stroke-width:4px,fill:#BB66EE,color:#FF0000; classDef c1110 stroke:#333,stroke-width:4px,fill:#BB66EE,stroke-dasharray: 10 10; classDef c1111 stroke:#333,stroke-width:4px,fill:#BB66EE,stroke-dasharray: 10 10,color:#FF0000; DFA0_1303046169{{"DFA0 wholeStart"}} class DFA0_1303046169 c1000; DFA1_642929875[\"DFA1 {1}"/] class DFA1_642929875 c0101; DFA2_1083584447[\"DFA2 {1}"/] class DFA2_1083584447 c0101; DFA3_924445311[\"DFA3 {1}"/] class DFA3_924445311 c0101; DFA0_1303046169 -->|"+ BeginToken '+' ExtendToken '+'"|DFA1_642929875 DFA0_1303046169 -->|"a BeginToken 'a' ExtendToken 'a'"|DFA2_1083584447 DFA0_1303046169 -->|"b BeginToken 'b' ExtendToken 'b'"|DFA3_924445311

FIRST

[0]: FIRST( A ) = { 'a' }
[1]: FIRST( B ) = { 'b' }
[2]: FIRST( '+' ) = { '+' }
[3]: FIRST( 'a' ) = { 'a' }
[4]: FIRST( 'b' ) = { 'b' }
[5]: FIRST(  ) = { empty }
[6]: FIRST( A '+' B ) = { 'a' }

FOLLOW

[0]: FOLLOW( A ) = { '+' }
[1]: FOLLOW( B ) = { '+' }

LL(1) Syntax Machine

状态 '+' 'a' 'b'
A R[0] R[1]
B R[2]

LR(0) Syntax Machine

状态 '+' 'a' 'b' '¥' A B
0 S2 G1
1 S3 完成
2 R[1] R[1] R[1] R[1]
3 S5 G4
4 R[0] R[0] R[0] R[0]
5 R[2] R[2] R[2] R[2]
flowchart classDef default fill:#C7EDCC,stroke:#993399,stroke-width:0px,text-align:left; classDef titlebarStyle fill:gold; titlebar>"LR(1) syntax states"] class titlebar titlebarStyle syntaxState0("syntaxState0 [-1] BCounter> : ⏳ A ; [0] A : ⏳ A '+' B ; [1] A : ⏳ 'a' ; ") syntaxState1("syntaxState1 [-1] BCounter> : A ⏳ ; [0] A : A ⏳ '+' B ; ") syntaxState2("syntaxState2 [1] A : 'a' ⏳ ; ") syntaxState3("syntaxState3 [0] A : A '+' ⏳ B ; [2] B : ⏳ 'b' ; ") syntaxState4("syntaxState4 [0] A : A '+' B ⏳ ; ") syntaxState5("syntaxState5 [2] B : 'b' ⏳ ; ") syntaxState0 -.-> |"A"| syntaxState1 syntaxState0 --> |"'a'"| syntaxState2 syntaxState1 --> |"'+'"| syntaxState3 syntaxState3 -.-> |"B"| syntaxState4 syntaxState3 --> |"'b'"| syntaxState5 syntaxState1 o--o |"'¥'"| syntaxState1 syntaxState2 x==x |"'+' 'a' 'b' '¥' R[1]= A : 'a' ;"| syntaxState2 syntaxState4 x==x |"'+' 'a' 'b' '¥' R[0]= A : A '+' B ;"| syntaxState4 syntaxState5 x==x |"'+' 'a' 'b' '¥' R[2]= B : 'b' ;"| syntaxState5

SLR(1) Syntax Machine

状态 '+' 'a' 'b' '¥' A B
0 S2 G1
1 S3 完成
2 R[1] R[1]
3 S5 G4
4 R[0] R[0]
5 R[2]
flowchart classDef default fill:#C7EDCC,stroke:#993399,stroke-width:0px,text-align:left; classDef titlebarStyle fill:gold; titlebar>"LR(1) syntax states"] class titlebar titlebarStyle syntaxState0("syntaxState0 [-1] BCounter> : ⏳ A ; [0] A : ⏳ A '+' B ; [1] A : ⏳ 'a' ; ") syntaxState1("syntaxState1 [-1] BCounter> : A ⏳ ; [0] A : A ⏳ '+' B ; ") syntaxState2("syntaxState2 [1] A : 'a' ⏳ ; ") syntaxState3("syntaxState3 [0] A : A '+' ⏳ B ; [2] B : ⏳ 'b' ; ") syntaxState4("syntaxState4 [0] A : A '+' B ⏳ ; ") syntaxState5("syntaxState5 [2] B : 'b' ⏳ ; ") syntaxState0 -.-> |"A"| syntaxState1 syntaxState0 --> |"'a'"| syntaxState2 syntaxState1 --> |"'+'"| syntaxState3 syntaxState3 -.-> |"B"| syntaxState4 syntaxState3 --> |"'b'"| syntaxState5 syntaxState1 o--o |"'¥'"| syntaxState1 syntaxState2 x==x |"'+' '¥' R[1]= A : 'a' ;"| syntaxState2 syntaxState4 x==x |"'+' '¥' R[0]= A : A '+' B ;"| syntaxState4 syntaxState5 x==x |"'+' R[2]= B : 'b' ;"| syntaxState5

LALR(1) Syntax Machine

状态 '+' 'a' 'b' '¥' A B
0 S2 G1
1 S3 完成
2 R[1] R[1]
3 S5 G4
4 R[0] R[0]
5 R[2] R[2]
flowchart classDef default fill:#C7EDCC,stroke:#993399,stroke-width:0px,text-align:left; classDef titlebarStyle fill:gold; titlebar>"LR(1) syntax states"] class titlebar titlebarStyle syntaxState0("syntaxState0 [-1] BCounter> : ⏳ A ; '¥' [0] A : ⏳ A '+' B ; '¥' '+' [1] A : ⏳ 'a' ; '¥' '+' ") syntaxState1("syntaxState1 [-1] BCounter> : A ⏳ ; '¥' [0] A : A ⏳ '+' B ; '¥' '+' ") syntaxState2("syntaxState2 [1] A : 'a' ⏳ ; '¥' '+' ") syntaxState3("syntaxState3 [0] A : A '+' ⏳ B ; '¥' '+' [2] B : ⏳ 'b' ; '¥' '+' ") syntaxState4("syntaxState4 [0] A : A '+' B ⏳ ; '¥' '+' ") syntaxState5("syntaxState5 [2] B : 'b' ⏳ ; '¥' '+' ") syntaxState0 -.-> |"A"| syntaxState1 syntaxState0 --> |"'a'"| syntaxState2 syntaxState1 --> |"'+'"| syntaxState3 syntaxState3 -.-> |"B"| syntaxState4 syntaxState3 --> |"'b'"| syntaxState5 syntaxState1 o--o |"'¥'"| syntaxState1 syntaxState2 x==x |"'¥' '+' R[1]= A : 'a' ;"| syntaxState2 syntaxState4 x==x |"'¥' '+' R[0]= A : A '+' B ;"| syntaxState4 syntaxState5 x==x |"'¥' '+' R[2]= B : 'b' ;"| syntaxState5

LR(1) Syntax Machine

状态 '+' 'a' 'b' '¥' A B
0 S2 G1
1 S3 完成
2 R[1] R[1]
3 S5 G4
4 R[0] R[0]
5 R[2] R[2]
flowchart classDef default fill:#C7EDCC,stroke:#993399,stroke-width:0px,text-align:left; classDef titlebarStyle fill:gold; titlebar>"LR(1) syntax states"] class titlebar titlebarStyle syntaxState0("syntaxState0 [-1] BCounter> : ⏳ A ; '¥' [0] A : ⏳ A '+' B ; '¥' '+' [1] A : ⏳ 'a' ; '¥' '+' ") syntaxState1("syntaxState1 [-1] BCounter> : A ⏳ ; '¥' [0] A : A ⏳ '+' B ; '¥' '+' ") syntaxState2("syntaxState2 [1] A : 'a' ⏳ ; '¥' '+' ") syntaxState3("syntaxState3 [0] A : A '+' ⏳ B ; '¥' '+' [2] B : ⏳ 'b' ; '¥' '+' ") syntaxState4("syntaxState4 [0] A : A '+' B ⏳ ; '¥' '+' ") syntaxState5("syntaxState5 [2] B : 'b' ⏳ ; '¥' '+' ") syntaxState0 -.-> |"A"| syntaxState1 syntaxState0 --> |"'a'"| syntaxState2 syntaxState1 --> |"'+'"| syntaxState3 syntaxState3 -.-> |"B"| syntaxState4 syntaxState3 --> |"'b'"| syntaxState5 syntaxState1 o--o |"'¥'"| syntaxState1 syntaxState2 x==x |"'¥' '+' R[1]= A : 'a' ;"| syntaxState2 syntaxState4 x==x |"'¥' '+' R[0]= A : A '+' B ;"| syntaxState4 syntaxState5 x==x |"'¥' '+' R[2]= B : 'b' ;"| syntaxState5

End

标签:解析器,syntaxState1,ABB,syntaxState3,syntaxState4,一键,classDef,stroke,syntaxState2
From: https://www.cnblogs.com/bitzhuwei/p/ABB-readme-full.html

相关文章

  • ABB ACS510变频器恒压供水 ABB变频器恒压供水触摸屏通
    ABBACS510变频器恒压供水ABB变频器恒压供水触摸屏通讯程序1.采用ABB变频器Acs510自带恒压供水功能;2.用昆仑通态触摸屏直接通讯变频器;3.变频器自身自带供水功能,省去plc,节约成本,稳定,可靠;4.里面含有部分通讯协议,本程序只读取部分变频器参数,其他参数需要变频器调节;ID:81786024......
  • ABB ACS510变频器恒压供水昆仑通态直接通讯一拖二 ABB变频器恒压供水
    ABBACS510变频器恒压供水昆仑通态直接通讯一拖二ABB变频器恒压供水触摸屏通讯程序1.采用ABB变频器Acs510自带恒压供水功能;2.用昆仑通态触摸屏直接通讯变频器;3.变频器自身自带供水功能,省去plc,节约成本,稳定,可靠;4.里面含有大部分通讯协议,参数只需一键填入,避免变频器参数调试的......
  • JeecgBoot低代码平台—多租户SAAS解决方案,实现一键切换
    JeecgBoot免费低代码平台,提供一键切换多租户模式机制!快速实现全系统的saas租户方案,通过租户ID进行数据隔离。租户设计思路1、开启全系统租户隔离开启方法将org.jeecg.config.mybatis.MybatisPlusSaasConfig#OPEN_SYSTEM_TENANT_CONTROL改成true开启实现功能:系统管......
  • SwitchHosts 一款管理本地 host 文件配置的工具,支持一键切换不同环境配置的 host 文件
    简介Hosts相关的小工具着实不少,大家需求最多的肯定是hosts切换工具了。SwitchHosts!是一款可以方便你管理和一键切换多个hosts方案的免费开源工具,跨平台支持Windows、macOS和Linux系统。软件获取➤https://www.hereitis.cn/articleDetails/1269功能介绍SwitchHos......
  • RabbitMQ Shovel使用
    页面概览创建ShovelVirtualhost:虚拟主机Name:创建Shovel名称Source:源protocol:协议,默认AMQP0.9.1,在AMQP1.0中增加address参数url:源broker的URI。此参数指定要从哪个broker拉取消息queue:要复制的队列名称/exchange:要复制的交换机prefetch-count-消费者应获取的每个请......
  • Mac打印机一键安装
    1、创建文件夹创建文件夹主要是为了后面东西打包方便。名字随意。我这里创建名为:Macos2、下载打印机驱动打印机驱动格式一般是pkg格式,其他格式的暂未测试,如果是其他格式的可以直接看我的代码怎么写的参考一下我的逻辑。3、创建配置文件注意‼️:在刚才创建的文件夹下午创建......
  • 如何用 Serverless 一键部署 Stable Diffusion?
    思路其实很简单,我们只需要将镜像里面的动态路径映射到NAS文件存储里面即可,利用NAS独立存储文件模型,扩展,语言包等,并且我们可以为管理NAS单独配置一个可视化的后台,用简单的文件上传删除的方式管理我们的文件,为此我们需要展开打镜像的脚本,为了完成全套的流程我们接下来盘一下......
  • Grafana系列-统一展示-6-Zabbix仪表板
    系列文章Grafana系列文章......
  • Centos环境下部分中间件“rabbitmq、rocketmq、clickhouse”部署
    部分中间件部署目录部分中间件部署docker部署rabbitmqdocker部署rocketmq单机部署clickhousedocker部署rabbitmq#拉镜像dockerpullrabbitmq:3.8-management#启动dockerrun\-eRABBITMQ_DEFAULT_USER=guest\-eRABBITMQ_DEFAULT_PASS=guest\-v/data/rabbitmq/ra......
  • ABB机器人做EIP从站配置
    1机器人需要有选项841-1EthernetIPscanner/adapter选项,此时可以连接LAN3或者WAN口,或者使用840-1Ethernet/ipAnybusadapter,使用anybus网口 以下举例为841-1选项 2控制面板-配置,主题选择communication 3进入IPSETTING,编辑已有Ethernet/ip网络ip地址,并选择网口,此处......