我们可以使用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

我们可以使用Notepad ++解码URL吗?

来自分类Dev

QWidget我们可以获取/修改小部件的现有上下文菜单吗

来自分类Dev

如何创建上下文无关的语法?

来自分类Dev

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

来自分类Dev

我们可以编写自定义检查以使用Data Dog监视过程吗

来自分类Dev

元音上下文无关语法定义YACC

来自分类Dev

非上下文无关语言的子集是否有可能是上下文无关的?

来自分类Dev

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

来自分类Dev

设计上下文无关的语法

来自分类Dev

我们可以使用Dart中的箭头语法以级联符号设置多个回调吗?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

我们可以使用尾随返回类型语法编写构造函数/析构函数吗?

来自分类Dev

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

来自分类Dev

上下文无关的语法帮助

来自分类Dev

上下文无关语法中的歧义

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

我可以使用C#BerConverter.Encode()指定应用程序或特定于上下文的标记吗?

来自分类Dev

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

来自分类Dev

我们可以在不显示在层次结构窗口的上下文菜单中的游戏对象菜单中添加菜单项吗?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

我们如何使用java设置watson助手的上下文变量的值?

Related 相关文章

  1. 1

    我们可以使用Notepad ++解码URL吗?

  2. 2

    QWidget我们可以获取/修改小部件的现有上下文菜单吗

  3. 3

    如何创建上下文无关的语法?

  4. 4

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

  5. 5

    我们可以编写自定义检查以使用Data Dog监视过程吗

  6. 6

    元音上下文无关语法定义YACC

  7. 7

    非上下文无关语言的子集是否有可能是上下文无关的?

  8. 8

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

  9. 9

    设计上下文无关的语法

  10. 10

    我们可以使用Dart中的箭头语法以级联符号设置多个回调吗?

  11. 11

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

  12. 12

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

  13. 13

    我们可以使用尾随返回类型语法编写构造函数/析构函数吗?

  14. 14

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

  15. 15

    上下文无关的语法帮助

  16. 16

    上下文无关语法中的歧义

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    我可以使用C#BerConverter.Encode()指定应用程序或特定于上下文的标记吗?

  25. 25

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

  26. 26

    我们可以在不显示在层次结构窗口的上下文菜单中的游戏对象菜单中添加菜单项吗?

  27. 27

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

  28. 28

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

  29. 29

    我们如何使用java设置watson助手的上下文变量的值?

热门标签

归档