BNF与有限状态自动机

STEM版,合并数学,物理,化学,科学,工程,机械。不包括生物、医学相关,和计算机相关内容。

版主: verdeliteTheMatrix

头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#21 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

TheMatrix 写了: 2025年 3月 20日 16:10 bnf (f: state --> state) 作为状态空间上的自变换,美则美矣,因为它简单,但是丧失了一些信息。

自变量是一个state,这是没问题的。但是函数值不仅仅是一个新的state,还包括很多信息。比如path,从起始的state怎么一步一步到达新的state。如果加上这些,就变成:f: state --> path, where path is a list of state。这就不再是state空间上的自变换了。

自变换的好处是可以有composition。但是也没必要执着于它。它是什么就是什么。f: state --> state 这个抽象对于识别一个语法true/false是够了。但是没有更多的信息。

从 f: state --> (state, X) 出发,seq要做的,是把这样的一些函数串在一起,函数结果也要串在一起。结果要串在一起的话,说明X必须是一个list。list of what? 为了保持最大的通用性,就不明确的说list of what了,可以是list of anything,可以是list of list。

所以这两天我想来想去,又回到我之前给出的函数signature了:
f: state --> (state, [])
其实在
{ f: state --> (state, []) }
空间上,seq和par仍然构成一个algebra。seq是乘法,par是加法。结合律和分配律仍然成立,没有交换律。

seq和par也构成图灵完备的程序结构。seq是顺序执行,par是分支。loop不需要,因为可以用递归。

所以这可以叫“程序algebra”。

我原来用的函数signature是 f: p --> (p, []),其中p是文本cursor位置。在parser的问题下,等价于state。这次我把p换成state,在一般的状态空间中考虑,state的编号可以不连续。
上次由 TheMatrix 在 2025年 3月 20日 22:11 修改。
原因: 未提供修改原因

标签/Tags:
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#22 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

TheMatrix 写了: 2025年 3月 16日 12:05 BNF item作为路径这个思路,我一直觉得还可以深挖。

因为BNF的功能就是识别一个文本属于某种语法,比如这个是SQL,那个是Python,等等。

这和识别一个图片其实是类似的:这个图片是一只猫,那个图片是一只狗。

也就是在一个语法图(概念图)所描述的地图(状态图)上找一条路径。

当然现在看不可能是手写的语法图,也就是不可能是传统意义上rule based。

还要再往上走一层抽象。
猫的parser 和 狗的parser:

图片

图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#23 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

TheMatrix 写了: 2025年 3月 20日 16:10 图片
图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#24 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

some more utility functions:

图片
上次由 TheMatrix 在 2025年 3月 22日 12:49 修改。
原因: 未提供修改原因
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#25 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

这是我的lex:

图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#26 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

这是我的yacc:

图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#27 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

这是我的main:

图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#28 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

写这个东西上瘾。其实我写过很多次了。

下一步应该是某种智能的语法图。

图片

图片

图片

图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13311
注册时间: 2022年 7月 26日 00:35

#29 Re: BNF与有限状态自动机

帖子 TheMatrix楼主 »

formatting:

图片

图片

图片
上次由 TheMatrix 在 2025年 3月 23日 15:43 修改。
原因: 未提供修改原因
回复

回到 “STEM”