有限状态自动机java实现_基于有限状态自动机的数据类型识别功能(1)

本文介绍了有限状态自动机(FSM)的概念及其在编程中的应用,特别是用于字符输入判断和词法分析。作者计划使用Java实现一个FSM,以识别字符串中的整型、浮点型和科学计数法数据类型。文章详细描述了状态转换图,并展示了如何使用二维数组来表示状态转换,简化后的数组将用于下一步的代码实现。
摘要由CSDN通过智能技术生成

有限状态自动机(FSM):是一种表达某一状态到另一状态发生转化的数学模型。

例如:在长跑比赛开始时 我处于等待的状态下,待裁判喊 预备 时,我就会从等待状态转换到预备状态。听到裁判的枪声时,我就从预备状态转换到奔跑状态 。

这个过程就相当于有限状态自动机。

cf61cab9de35ef5eca2497764c8304a1.png

FSM的状态就是一个事件当前所处于的情况。

有限状态自动机在编程中的应用十分广泛

例如:对输入的字符进行判断 判断字符串组成的数字属于整型还是浮点型。 同时它也是词法分析的核心 可用于分析一串字符中给的组成词的含义。

因为最近在学习编译原理,所以想实现一个简单的FSM。 计划使用java语言。希望能做一个分析所输入的字符串,解析出字符串组成的字串属于什么数据类型。

准备

在编写FSM程序之前需要先画出状态转化图,在我的构想里:

1.整数是只由0~9的数字组成。

2.浮点数比整数多了一个小数点,并且小数点不能出现在数字的第一位和最后一位。

3.增加科学计数法数字,例如:1.2e2   其中用e2代替10的二次方 e的左边必须是小数,并且小数点只能出现在紧跟着第一位数字的后面。

4.可以对一行字符串进行解析。

基于上面4点,我大致画了一下状态转换图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值