首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图理解解析和扫描( reg的不同)。语文和参考语文)

试图理解解析和扫描( reg的不同)。语文和参考语文)
EN

Stack Overflow用户
提问于 2015-03-31 12:16:26
回答 1查看 88关注 0票数 1

首先,我不学习计算机科学,我只是对这门学科感兴趣。

解析器基本上是这样做的:

  1. 读取输入
  2. 创建令牌
  3. 实际上解析令牌并创建一个AST

因此,我认为,为了确定一个单词是否在一种常规语言中,您可以使用FSM,对于CF语言,您需要一个解析器,因为可能存在递归结构。因此,常规语言存在扫描器生成器,CF语言存在解析器生成器。

但现在我读到,您可以为正则表达式构建一个递归的、体面的解析器:

http://matt.might.net/articles/parsing-regex-with-recursive-descent/

那么,这一切是如何进行的呢?

为什么我需要解析常规语言?我以为有限状态机就够了?

例如,如果我想识别java程序中的块注释(即/* .. */),我只需要编写一个FSM,所以基本上是一个开关-case语句。我不需要解析器.

感谢您的帮助和澄清!

EN

回答 1

Stack Overflow用户

发布于 2015-03-31 12:50:25

正则表达式可以匹配的内容与解析正则表达式所需的内容之间存在差异。例如,正则表达式可以包含嵌套组,因此不能解析带有正则表达式的组。例如,您必须“计数”嵌套的括号对,这超出了常规语言的能力。

另见:Is there a regular language to represent regular expressions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29368463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档