Redy词法识别--变量,字符串,注释的识别

本文档介绍了Redy语言的词法分析,包括变量的命名规则、BNF文法和状态机,字符串的识别以及注释的处理。详细讲解了每个部分的状态矩阵和程序数据,并提供了驱动程序的实现。测试程序展示了识别效果。
摘要由CSDN通过智能技术生成

返回文档首页


(一)简介

代码下载: git clone git://git.code.sf.net/p/redy/code redy-code


当我们需要识别文本时,通常分析步骤为:

  1. 根据文本内容的规律推导一个上下文无关文法,但最好是正则文法。
  2. 根据文法画出状态机。
  3. 把状态机转化为状态矩阵。

这一章的内容有:

  1. 变量识别
  2. 字符串识别
  3. 注释的识别

(二)变量识别

1)命名规则

 Redy中变量的命名规则为:首字符必须为字母,下划线或者字符'@',后面紧接数字,字母,下划线。

2)BNF文法

identifier ::=(letter|'_'|'@')(letter|digit|"_")*
digit ::='0'..'9'
letter ::=lowercase|uppercase
lowercase ::='a'..'z'
uppercase ::='A'..'Z'

3)状态机



4)状态矩阵

对于变量来说,可以把字符分为这么几类:
  1. 数字(digit)
  2. 字母(letter)
  3. 下划线(underline)
  4. 符号@(s_at)
  5. 除上面字符以外其它字符(other)

状态有两个,一个为 identifier_begin,一个为identifier。其中开始状态为identifier_begin,结束状态为identifier

状态矩阵为:

状态\输入

Other

Digit

Letter

Underline

s_at

identifier_begin



identifier

identifier

identifier

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值