我们可以使用ANTLR定义非上下文无关的语法吗?

圣安东尼奥

我对ANTLR4还是很陌生,现在我想了解我们可能会用它定义哪种语法。

据我所知,ANTLR中有两种规则:解析器规则(小写单词)和词法分析器规则(大写单词)。例子:

grammar Test;

init: prog(','prog)*;

prog: A
     | prog
     ;

A: [a-z]+;

从语法生成规则的角度来看,我要说的是解析器规则是NON-TERMINAL符号,可以用词法分析器规则定义的一系列标记替换。

因此,很明显,语法根据定义是上下文无关语法生成的语言的字母缩写包含所有由小写拉丁字母组成的单词。

问题:我们可以使用定义非上下文无关的语法ANTLR4吗?

艾拉·巴克斯特(Ira Baxter)

是的。(咳嗽)。

据我了解,您可以将代码添加到规则中。任意代码可以测试任意事物,因此答案为“是”。通常,我认为您无法使用ANTLR做到这一点,但是对于许多有趣的特殊情况(例如,接受除质数之外的所有数字字符串),这是非常实用的。

不。

我认为,如果您遵守ANTLR允许的语法规范,答案是“否”。实际上,您可以使用ANTLR“指定”上下文无关的语法来说明它不能正确处理,这对于大多数解析器生成器都是如此。(对于ANTLR,这包括具有间接左递归,歧义,任意先行等的语法。)我们甚至甚至将大多数此类解析器生成器称为其“限制”,例如LL(1),LALR(k)等。 。

哪些可以完全释放上下文?

一些解析器生成器可以处理完全上下文无关的语法。Earley和CYK解析器浮现在脑海,但它们的速度不是很快,因此人们倾向于避免使用它们。GLR解析器可以做到这一点(我们之所以在工具中使用它,是因为它确实有助于编写真实语言的语法(请参阅我的简历),但是有些语法会使它们变得非常慢;您大都可以避免使用这些语法。显然,GLL解析方案存在且存在也完全没有上下文;我希望它们在使用一些过时的语法时也会遇到性能问题,但在实践中也非常有用。

我听说过的唯一可以执行多种上下文相关语法的解析器生成器是MetaS我从未使用过它,但是其背后的理论令人印象深刻。声称它可以执行任意上下文相关的语法;对于任意讨厌的语法,这将花费极高的成本,但是实际上这并不是反对。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我是否使上下文无关的语法上下文敏感,这有关系吗?

来自分类Dev

我们可以在React Context API中创建多个上下文吗?

来自分类Dev

我们可以在dialogflow中添加超过5个输入上下文吗?

来自分类Dev

我们可以在不同的任务中同时使用多少个“上下文”?

来自分类Dev

我们如何区分常规语言和上下文无关语言?

来自分类Dev

我们可以在MobileFirst Platform 7.0 Operational Analytics中使用“上下文搜索”吗?(可以通过最小限度限制客户端日志吗?)

来自分类Dev

我们可以将jaxb上下文绑定保存到oxm元数据文件吗?

来自分类Dev

我们可以像在python中一样在Go中创建上下文管理器吗

来自分类Dev

我们可以在不涉及UI的情况下使用Dialogflow的Node履行库以编程方式设置和删除上下文吗?

来自分类Dev

我可以使用asyncio.wait_for()作为上下文管理器吗?

来自分类Dev

我可以使用cl_context比较OpenCL上下文吗?

来自分类Dev

我可以使用直观的显示上下文和 i18n 标签吗?

来自分类Dev

我可以使用 React 中的函数提供上下文值吗?

来自分类Dev

我可以使用数组来引用分层画布的上下文吗?

来自分类Dev

HTML在当前上下文中不存在。我可以使用Web View语法在Web表单中使用html类吗?

来自分类Dev

为什么不能使用上下文无关的语法来定义类似XML的元素?

来自分类Dev

我们可以使用 BigQuery 中的函数自定义我们的字段名称吗?

来自分类Java

我们如何在FXML中定义上下文菜单?

来自分类Dev

我们可以使用Cloudformation为Cognito UserPool定义社交提供程序吗?

来自分类Dev

上下文无关的语法帮助

来自分类Dev

证明上下文无关语法是规则的

来自分类Dev

上下文无关语法中的歧义

来自分类Dev

从语言生成上下文无关的语法

来自分类Dev

设计上下文无关的语法

来自分类Dev

我们可以使用动态管道吗?

来自分类Dev

我们可以使用 23 端口吗?

来自分类Dev

我们可以使用无条件循环吗?

来自分类Dev

我们可以使用类作为标题吗

来自分类Dev

在所有符号都无用的情况下,可以存在上下文无关的语法吗?

Related 相关文章

  1. 1

    我是否使上下文无关的语法上下文敏感,这有关系吗?

  2. 2

    我们可以在React Context API中创建多个上下文吗?

  3. 3

    我们可以在dialogflow中添加超过5个输入上下文吗?

  4. 4

    我们可以在不同的任务中同时使用多少个“上下文”?

  5. 5

    我们如何区分常规语言和上下文无关语言?

  6. 6

    我们可以在MobileFirst Platform 7.0 Operational Analytics中使用“上下文搜索”吗?(可以通过最小限度限制客户端日志吗?)

  7. 7

    我们可以将jaxb上下文绑定保存到oxm元数据文件吗?

  8. 8

    我们可以像在python中一样在Go中创建上下文管理器吗

  9. 9

    我们可以在不涉及UI的情况下使用Dialogflow的Node履行库以编程方式设置和删除上下文吗?

  10. 10

    我可以使用asyncio.wait_for()作为上下文管理器吗?

  11. 11

    我可以使用cl_context比较OpenCL上下文吗?

  12. 12

    我可以使用直观的显示上下文和 i18n 标签吗?

  13. 13

    我可以使用 React 中的函数提供上下文值吗?

  14. 14

    我可以使用数组来引用分层画布的上下文吗?

  15. 15

    HTML在当前上下文中不存在。我可以使用Web View语法在Web表单中使用html类吗?

  16. 16

    为什么不能使用上下文无关的语法来定义类似XML的元素?

  17. 17

    我们可以使用 BigQuery 中的函数自定义我们的字段名称吗?

  18. 18

    我们如何在FXML中定义上下文菜单?

  19. 19

    我们可以使用Cloudformation为Cognito UserPool定义社交提供程序吗?

  20. 20

    上下文无关的语法帮助

  21. 21

    证明上下文无关语法是规则的

  22. 22

    上下文无关语法中的歧义

  23. 23

    从语言生成上下文无关的语法

  24. 24

    设计上下文无关的语法

  25. 25

    我们可以使用动态管道吗?

  26. 26

    我们可以使用 23 端口吗?

  27. 27

    我们可以使用无条件循环吗?

  28. 28

    我们可以使用类作为标题吗

  29. 29

    在所有符号都无用的情况下,可以存在上下文无关的语法吗?

热门标签

归档