编译原理问题

5年前 (2020-09-10)阅读801回复0
隔岸觀火
隔岸觀火
  • 管理员
  • 发消息
  • 注册排名221
  • 经验值190
  • 级别管理员
  • 主题38
  • 回复0
楼主

你可以用堆栈来处理。

1、首先堆栈为空。

不断fgetc():

2、如果遇到“{”就入堆栈(Push),并记录这个“{”的位置(第几行第几列),如果遇到“}”就从堆栈里面出一个(Pop)。

3、如果堆栈已空但还遇到“}”,证明当前的“}”多余,报错;

4、如果已经到达文件末尾,堆栈非空,证明“{”多余,把堆栈中“{”的位置逐个Pop出来,报错。

分别对“{”“}”计数。

不匹配只有两种情况:

(一)在计数过程中,“{”的计数值少于“}”的计数值。

(二)计数结束时,“{”的计数值不等于“}”的计数值。

0
0
收藏0
回帖

编译原理问题 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息