是. (咳嗽).

我的理解是您可以在规则中添加代码.任意代码可以测试任意事物,所以答案是“是”.一般来说,我认为你不能用ANTLR很好地做到这一点,但这对于许多有趣的特殊情况非常实用(例如,接受除素数之外的所有数字字符串).

没有.

我想如果你坚持使用ANTLR允许的语法规范,答案就是“不”.实际上,有一些无上下文的语法可以用ANTLR“指定”它无法正确处理,大多数解析器生成器也是如此. (对于ANTLR,这包括具有间接左递归,歧义,任意前瞻等的语法.)我们甚至通过其“限制”的名称调用大多数这些解析器生成器,例如LL(1),LALR(k)等. .

哪些可以完全上下文?

一些解析器生成器可以处理完整的,无上下文的语法.我想到了Earley和CYK解析器,但它们并不是很快,所以人们往往会避免使用它们. GLR解析器可以做到这一点(我们在我们的工具中使用它,因为它真的有助于为真实语言编写语法[参见我的生物]但是有一些语法使它们很慢;你可以大多避免这些.显然GLL解析方案存在并且是同样完全没有上下文;我希望它们在某些钝语法中也有性能问题,但在实践中也很有用.

我听说过唯一可以执行各种上下文相关语法的解析器生成器是MetaS.我从来没有使用它,但它背后的理论非常令人印象深刻.声称它可以做任意上下文敏感的语法;对于任意讨厌的语法,它会遇到极高的成本,但实际上这并不是反对意见.

antlr 可以用java写吗_java – 我们可以用ANTLR定义一个非上下文语法吗?相关推荐

  1. /*按要求编写一个Java应用程序程序:(1)定义一个接口CanFly,描述会飞的方法public void fly();(2)分别定义类飞机和鸟,实现CanFly接口。(3)定义一个测试类,测试飞机

    /* 按要求编写一个Java应用程序程序: (1)定义一个接口CanFly,描述会飞的方法public void fly(); (2)分别定义类飞机和鸟,实现CanFly接口. (3)定义一个测试类, ...

  2. 按要求编写一个Java应用程序程序: (1)定义一个接口CanFly,描述会飞的方法public void fly(); (2)分别定义类飞机和鸟,实现CanFly接

    代码 /*第三题:按要求编写一个Java应用程序程序:(1)定义一个接口CanFly,描述会飞的方法public void fly();(2)分别定义类飞机和鸟,实现CanFly接口.(3)定义一个测 ...

  3. java写下雪_Java实现下雪场景

    1.[代码]Java实现下雪场景 import javax.swing.JFrame; /** * 首先我们来创建JFrame类,这个类我们把它称作MyStarFrame, * 包含一个主方法跟两个成 ...

  4. java写花束_Java作业 题目:16版.情人节送玫瑰花

    1.实验要求 本实验要求:以情人节送花为业务背景,体验自定义异常以及异常处理机制. 1-1. 业务说明: 1-1.1. 本实验以情人节送花为业务背景,女方提出送花需求,男方送出鲜花. 1-1.2. 当 ...

  5. java写病毒_java编写小病毒程序

    import java.io.File;//在你的桌面上创建无数个文件夹或文件,那电脑内存消耗很大了!import java.util.*;public class chuangjianwenjian ...

  6. 实验楼Java写计算器_Java版图形界面计算器

    Java 版图形界面计算器 实验说明及介绍 环境登录 无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou 环境介绍 本实验环境采用带桌面的 Ubuntu Linux 环境,实验 ...

  7. java写龟兔赛跑_Java实现龟兔赛跑

    闲极无聊,加上翻手机看到龟兔赛跑的词语,想到了可以通过java起两个线程来实现龟兔赛跑的实现. 代码实现其实很简单: 首先是乌龟类: 然后是兔子类: 最后是赛跑类: 接下里让我们看一下输出结果吧: 乌 ...

  8. java写值日表_Java知识之JVM

    类加载器 类装载器ClassLaoder负责加载class文件,class文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构,并且ClassL ...

  9. Java写析构函数_Java是否有析构函数?

    Java是否有析构函数? 我似乎无法在此找到任何文档. 如果没有,我怎么能达到同样的效果? 为了使我的问题更具体,我正在编写一个处理数据的应用程序,规范中说应该有一个"重置"按钮, ...

最新文章

  1. 接口转发和重定向区别(三)
  2. PySpider HTTP 599: SSL certificate problem错误的解决方法
  3. 【caffe】windows下vs2013+opencv3.2.0+opencv_contrib(包含dnn)+cmake3.8编译与配置
  4. 无法打开 源 文件 pch.h_outlook 客户端数据文件无法打开,如何解决?
  5. 安装安卓SDK和JDK的简便方法
  6. Memcache mutex设计模式
  7. tomcat mysql 启动顺序_linux 上配置tomcat、mysql 开机启动
  8. 【LSB】图片隐写主体函数
  9. 前端学习(2348):tabber
  10. matlab 思维数组_matlab多维数组
  11. arduino读取水位传感器的数据显示在基于i2c的1602a上_XSB-IC-S2智能水位监测仪-老友网...
  12. 【C语言】在线OJ题 BC72-BC87-牛客网编程初学者入门训练
  13. Homebrew 更换阿里云镜像源
  14. jQuery--checkbox全选/取消全选 及checkbox遍历
  15. STM8S与IAR程序常用错误
  16. 电子邮件--详解SMTP和POP3协议
  17. ICP(Iterative Closest Point)算法和Umeyama算法
  18. [精简]托福核心词汇66
  19. 百度天眼android,百度天眼下载|百度天眼安卓版 v1.2.0.20423_手机天堂
  20. 华为鸿蒙系统什么架构,你知道华为鸿蒙到底是什么吗?

热门文章

  1. 两个局域网如何互联_如何申请使用三大航司的机上wifi服务?
  2. Oracle/云MySQL/MsSQL“大迁移”真相及最优方案
  3. THOR:MindSpore 自研高阶优化器源码分析和实践应用
  4. 一文教会你认识Vuex状态机
  5. 简化业务代码开发:看Lambda表达式如何将代码封装为数据
  6. 中小企业上云首选,华为云全新云服务器S6性能评测分析
  7. 【华为敏捷/DevOps实践】4. 如何从Excel做项目管理的方式中走出来
  8. Python引用任意位置模块方法总结
  9. VScode使用gitbash的配置方法
  10. ctype库中关于字符串的常用函数汇总