java - ANTLR 4 会允许我为 boolean 表达式创建解析器吗?

标签 java antlr

我有一个程序,用户希望能够使用格式过滤掉某些字符串条件

(someType != 'a' AND someType != 'b') OR (anotherType = 'abc' AND somethingElse = 'cns')

我们正在研究使用 ANTLR 4 来解析它。每个组将始终由 OR 分隔,每个内部组将始终由 AND 分隔。

我是一名初级开发人员,如果这是我们想要进入的路线,我将通过阅读本书来学习 ANTLR4。我只是想确保 ANTLR4 能够解决这个问题。

我们本质上想知道根据此语法表达式的计算结果是真还是假。

最佳答案

Antlr 不计算表达式。它解析它们。

解析结果的“评价”由你决定。通常,您将节点构建操作附加到语法规则;这样,ANTLR 将帮助您构建一棵树,然后您走到树旁对其进行评估。

如果你真的很狡猾,你可能会在语义 Action 中进行表达式评估。向上传递值有点像向上传递创建的节点。 向下传递值需要更多的努力,我不是描述如何用 ANTLR 做到这一点的人。

关于java - ANTLR 4 会允许我为 boolean 表达式创建解析器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389579/

相关文章:

java - 如何使 Wicket 7 与 Java 8 中的 java.time 一起工作?

c - 使用 ANTLR C 目标,如何在 Lexer 中获取先前匹配的标记?

java - 构建Antlr时,Visual Studio在未命名文件的情况下给出错误 "cannot find the file specified"

解析上下文相关语言

java - 历史 GWT 演示 - 不起作用

java - Apache 吊索 s3 桶

java - JSP 呈现在 Spring 4 和 Tomcat 8.0.20 中不起作用

java.lang.OutOfMemory错误: Java heap space Exception while Parsing of Large file using ANTLR

gradle - IntelliJ 找不到 ANTLR 生成的源

java - Spark Streaming 中的 Kafka 消费者