用php实现词法分析器

本文介绍了如何利用编译原理知识,用PHP编写一个词法分析器。根据给定的文法,程序能识别合法的词法单元并输出其编号,对非法单元给出错误信息。文中提到,通过构建不确定的有穷自动机,使用子集构造法确定化,并通过状态转换图来指导程序编写。最后给出了程序的基本框架,并表示提供PHP源码。
摘要由CSDN通过智能技术生成

编译原理课,老师布置了一个大作业,给定一个文法,编写程序实现一个词法分析器,能够检测出给定程序的每个合法词法单元的编号,对于不合乎词法规则的词法单元则给出错误提示及类型,并显示出错的具体位置。具体文法如下:

一、 字符集定义
1. <字符集> → <字母>│<数字>│<单界符>
2. <字母> → A│B│…│Z│a│b│…│z
3. <数字> → 0│1│2│…│9
4. <单界符> → +│-│*│/│=│<│>│(│)│[│]│:│. │; │, 


二、 单词集定义
5.<单词集> → <保留字>│<双界符>│<标识符>│<常数>│<单界符>
6.<保留字> → and│array│begin│bool│call│case│char│constant│dim│do│else│end│false│for│if│input│integer│not│of│or│output│procedure│program│read│real│repeat│set│stop│then│to│true│until│var│while│write
7.<双界符> → <>│<=│>=│:= │..
8.<标识符> → <字母>│<字母><字母数字排列> 
9.<字母数字排列> → <字母>│<数字>│<字母><字母数字排列>│<数字><字母数字排列> 
10.<常数> → <整数>│<布尔常数>│<字符常数>
11.<整数> → <数字>│<数字><整数>
12.<布尔常数> → true│false
13.<字符常数> → ' 除 {'} 外的任意字符串 '
14.  <注释语句>→ /*除 {*/} 外的任意字符串*/

合法词法单元的编码如下:

单  词

种别码

 

单  词

种别码

 

单  词

种别码

and

1

 

output

21

 

*

41

array

2

 

procedure

22

 

*/

取消

begin

3

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值