状态转换表和语义操作表求救

smileme 2001-07-29 06:41:36
状态转换表和语义操作表
小弟在复习中程是遇到这样一个问题
用一个语义识别字符串。将程序可能接受的字符按其作用分类,为记录程序的识别过程引入状态变量,并给所
可能的状态顺序编号,然后建立两个表,一个是状态转换表,反映在某个状态下遇某字符后程序应转入的新状
态。一个是语义操作表,反映在某状态下遇某类字符后程序应执行的识别语义动作。
引入状态变量status表示识别程序所处的状态
status=0时,处理字符列的前导空白字符类,
=1时,处理非空白字符后的空白字符类
=2时,处理非空白字符
=3时,遇到字符串结束符,识别过程结束
/*状态转换表*/
int statbl[][3]={{0,2,3}, //初始状态
{1,2,3}, //中间空白符状态
{1,2,3}}; //非空白符状态
/*语义操作表*/
void(* funtbl[][3])(char * *,char)={NULL,copyach,NULL},//copyach 复制一个非空白字符
{NULL,copybach,NULL},//copybach 复制一个空白符和一个非空白符
{NULL,copyach,NULL}};

提问:1状态转换表看不懂,例如初始状态为什么是0,2,3,后面两个状态为什么是一样
2 void(* funtbl[][3])(char * *,char)到底定义了一个数组还是定义了一个函数还是两个都定义了
怎么结合状态表看这个语义操作表。
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
林仪明 2001-08-18
  • 打赏
  • 举报
回复
初始状态当然是023,在刚刚开始只能是023这三种情况,不可能是1的状态,是吧!!在处理完处理字符列的前导空白字符类后,无论中间空白符状态或是中间空白符状态,其对应的状态都是123。
osee2000 2001-07-31
  • 打赏
  • 举报
回复
funtbl 定义了一个函数指针数组,方便调用
林仪明 2001-07-30
  • 打赏
  • 举报
回复
关注!!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧