标签: antlr

词法分析者与解析者

词法分析器和解析器在理论上真的有那么不同吗?

讨厌正则表达式似乎很时髦:编码恐怖,另一篇博客文章.

然而,流行的基于乐兴的工具:pygments,geshi或者美化,都使用正则表达式.他们好像有什么东西......

什么时候足够兴奋,什么时候需要EBNF?

有没有人使用这些词法分析器生成的令牌与野牛或antlr解析器生成器?

parsing antlr lexer pygments

299
推荐指数
6
解决办法
10万
查看次数

ANTLR:有一个简单的例子吗?

我想开始使用ANTLR,但是在antlr.org网站上花了几个小时回顾一下这些例子之后,我仍然无法清楚地理解Java进程的语法.

是否有一些简单的例子,比如使用ANTLR实现的四操作计算器,通过解析器定义并一直到Java源代码?

java antlr antlr3 antlr4

223
推荐指数
3
解决办法
13万
查看次数

如何将String转换为其等效的LINQ表达式树?

这是原始问题的简化版本.

我有一个名为Person的类:

public class Person {
  public string Name { get; set; }
  public int Age { get; set; }
  public int Weight { get; set; }
  public DateTime FavouriteDay { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

......然后说一个例子:

var bob = new Person {
  Name = "Bob",
  Age = 30,
  Weight = 213,
  FavouriteDay = '1/1/2000'
}
Run Code Online (Sandbox Code Playgroud)

我想在我最喜欢的文本编辑器中将以下内容写成字符串 ....

(Person.Age > 3 AND Person.Weight > 50) OR Person.Age < 3
Run Code Online (Sandbox Code Playgroud)

我想取这个字符串和我的对象实例并评估一个TRUE或FALSE - 即在对象实例上评估一个Func <Person,bool>.

这是我目前的想法:

  1. 在ANTLR中实现基本语法以支持基本比较和逻辑运算符.我想在这里复制Visual Basic优先级和一些功能集:http://msdn.microsoft.com/en-us/library/fw84t893(VS.80).aspx
  2. 让ANTLR从提供的字符串中创建合适的AST. …

c# dsl lambda antlr predicate

164
推荐指数
4
解决办法
8万
查看次数

Antlr的优势(相比之下,lex/yacc/bison)

我过去曾经使用过lex和yacc(更常见的是bison)用于各种项目,通常是翻译(例如EDIF的子集流入EDA应用程序).另外,我必须支持基于几十年前的lex/yacc语法的代码.所以我知道我的工具,虽然我不是专家.

我在过去的各种论坛上看过关于Antlr的积极评论,我很好奇我可能会缺少什么.因此,如果您同时使用了两者,请告诉我Antlr中哪些更好或更先进.我目前的限制是我在C++商店工作,我们发布的任何产品都不包含Java,因此生成的解析器必须遵循该规则.

c++ yacc antlr bison

134
推荐指数
5
解决办法
4万
查看次数

100
推荐指数
2
解决办法
2万
查看次数

"片段"在ANTLR中意味着什么?

片段在ANTLR中意味着什么?

我见过这两条规则:

fragment DIGIT : '0'..'9';
Run Code Online (Sandbox Code Playgroud)

DIGIT : '0'..'9';
Run Code Online (Sandbox Code Playgroud)

有什么不同?

antlr

89
推荐指数
4
解决办法
2万
查看次数

使用ANTLR 3.3?

我正在尝试使用ANTLR和C#,但由于缺少文档/教程,我发现它非常困难.我找到了几个旧版本的半心半意的教程,但似乎从那时起对API进行了一些重大改动.

谁能给我一个简单的例子来说明如何创建语法并在短程序中使用它?

我终于设法将我的语法文件编译成词法分析器和解析器了,我可以在Visual Studio中编译和运行那些(在重新编译ANTLR源之后,因为C#二进制文件似乎也已经过时了! - 更不用说在没有一些修复的情况下源不会编译),但我仍然不知道如何处理我的解析器/词法分析器类.据说它可以在给出一些输入的情况下产生AST ......然后我应该可以做一些喜欢它的东西.

c# parsing antlr

72
推荐指数
3
解决办法
2万
查看次数

如何用ANTLR4创建AST?

我一直在寻找很多关于这一点,我找不到任何有用的,真正帮助我建立一个AST.我已经知道ANTLR4不像以前的ANTLR3那样构建AST.每个人都说:"嘿,使用访客!",但我找不到任何示例或更详细的解释如何我这样做...

我的语法必须像C一样,但每个命令都用葡萄牙语(portuga编程语言)编写.我可以使用ANTLR4轻松生成解析树.我的问题是:现在我需要做些什么才能创建AST?

顺便说一下,我正在使用Java和IntelliJ ......

EDIT1:我能得到的最接近的是使用本主题的答案:是否有一个使用antlr4从java源代码创建AST并提取方法,变量和注释的简单示例? 但它只打印访问过的方法的名称..

由于第一次尝试对我不起作用,我试图使用ANTLR3中的这个教程,但我无法弄清楚如何使用StringTamplate而不是ST ...

阅读本书The Definitive ANTLR 4 Reference我也找不到任何与AST有关的内容.

EDIT2:现在我有一个类来创建DOT文件,我只需要弄清楚如何正确使用访问者

java compiler-construction antlr abstract-syntax-tree antlr4

58
推荐指数
2
解决办法
3万
查看次数

如何为ANTLR指定目标包?

如果我打电话:

java org.antlr.Tool -o outdir sources/com/example/Java5.g
Run Code Online (Sandbox Code Playgroud)

...使用antlr-3.1.3将在目录中生成解析器和词法分析器代码outdir/sources/com/example.但是生成的类没有任何package语句.我需要他们在包装中生活com.example.

有没有办法指定目标包?

java antlr

46
推荐指数
2
解决办法
2万
查看次数

什么更好,ANTLR或JavaCC?

关注的是文档/可学习性,eclipse集成,工具,社区支持和性能(大致按此顺序).

antlr javacc

45
推荐指数
6
解决办法
2万
查看次数