Tag: antlr

用于计算class级计数的部分语法

我需要计算正确的C#源文件中的类数。 我写了下面的语法: grammar CSharpClassGrammar; options { language=CSharp2; } @parser::namespace { CSharpClassGrammar.Generated } @lexer::namespace { CSharpClassGrammar.Generated } @header { using System; using System.Collections.Generic; } @members { private List _classCollector = new List(); public List ClassCollector { get { return _classCollector; } } } /*—————————————————————— * PARSER RULES *——————————————————————*/ csfile : class_declaration* EOF ; class_declaration : (ACCESSLEVEL […]

解析SQL查询并提取列名和表名

我有一个像这样的查询脚本: SELECT View1.OrderDate,View1.Email,SUM(View1.TotalPayments)FROM dbo.View1 WHERE(View1.OrderStatus =’Completed’)GROUP BY View1.OrderDate,View1.Email HAVING(SUM(View1.TotalPayments)> 75); 有没有什么方法可以从SQL查询中提取一些关键信息? 如表名和列名,我有2个问题: 我做了搜索我发现了一些解析器,如ANTLR,但我找不到解释在C#语言中使用这个解析器的文档。 我们有什么办法可以使用Entity Frame Work来解析sql查询吗? 我的查询是完全动态的,它们是在运行时创建的

如何使用ANTLR获取Lexer和Parser for C#?

似乎ANTLR支持C#语言,但我不知道如何生成相关的类。 我搜索并看到存在Visual Studio的扩展,但我不支持2015 那么如何使用ANTLR手动为C#生成Lexer和Parser?

解释自定义语言

我需要开发一个应用程序,它将读取和理解文本文件,在其中我将找到描述操作列表的自定义语言(即烹饪配方)。 此语言尚未定义,但可能采用以下forms之一: 像代码一样的C ++ (此代码是随机生成的,仅用于示例目的): begin repeat(10) { bar(toto, 10, 1999, xxx); } result = foo(xxxx, 10); if(foo == ok) { … } else { … } end XML代码 (此代码是随机生成的,仅用于示例目的): … … 无论选择哪种语言,都必须处理简单的条件,循环。 我从来没有做过这样的事情,但初看起来,我认为将这些操作描述为XML将更简单但function更少。 在浏览StackOverFlow之后,我发现了一个名为“ANTLR”的工具的聊天…我开始阅读“The Definitive ANTLR Reference”,但由于我从未做过那种东西,我发现很难知道它是不是真的那种我需要的工具…… 换句话说,我需要读取文本文件,正确解释它并在我的C#代码中执行操作。 这些操作将通过以下简单条件进行交互: 如果operation1失败,我执行operation2 else operation3。 重复操作4次10次。 什么是最好的语言来描述那些文本文件(XML,我自己的)? 这些发展过程中的关键点是什么? 我希望我很清楚:) 非常感谢您的帮助和建议!

我们什么时候使用ANTLR

任何人都可以指导我在ASP.Net,C#项目中使用ANTLR dll的目的。 我刚刚注意到某个项目中引用了antlr.runtime , Antlr3.Runtime , Antlr3.Utlility程序集。 如果可以引用一些真实世界的示例或任何网页链接将是有用的将是伟大的。

使用ANTLR构建自己的C#编译器:编译单元

//创建一个扫描程序,从传递给我们的输入流中读取CSLexer lexer = new CSLexer(new ANTLRFileStream(f)); tokens.TokenSource = lexer; // Create a parser that reads from the scanner CSParser parser = new CSParser(tokens); // start parsing at the compilationUnit rule CSParser.compilation_unit_return x = parser.compilation_unit(); object ast = x.Tree; 我怎么能用compilation_unit_return类型的x来提取它的根,它的类,它的方法等? 我必须提取其适配器吗? 我怎么做? 请注意,compilation_unit_return在我的CSParser中定义(由ANTLR自动生成): public class compilation_unit_return : ParserRuleReturnScope { private object tree; override public object Tree […]

使用ANTLR用C#解析C ++

我正在尝试使用ANTLR来获取C ++ AST,如果可能的话,从我的C#代码库中获取。 现在,基本的工作流程对我来说似乎很清楚:使用ANTLRWorks生成.cs lexer和解析器,将它们和ANTLR引用添加到C#项目,给它一个C ++源代码,使用结果数据结构。 但是,我已经在第二步失败了。 我从http://www.antlr.org/grammar/list下载了C ++语法(我试过Aurelian Melinte的“C ++语法”和Ramin Zaghi的“C ++语法和ANTLR 3.2代码跟踪器”)并生成了词法分析器和解析器C#设置“language = CSharp3;” 在语法的选项中。 但是,我无法编译包含解析器和词法分析器文件的C#项目。 一个问题是我不知道这是我使用的语法问题还是可用的版本问题……有很多不同版本的ANTLR,C#运行时和C#目标试图尝试每一个组合似乎是一个相当无望的任务。 但是,当前组合似乎工作正常,一个小例子语法只出现一个错误(c#lexer中的“HIDDEN”需要更改为“Hidden”,就是这样),但C ++解析器/词法分析器仍然给了我许多编译器错误,主要处理预处理程序指令和数组声明。 有没有人设法用ANTLR生成的C#文件解析C ++? 有谁知道这应该如何工作?

为什么antlr3 c#解析器方法是私有的?

我正在构建一个antlr中的解析器,它可以编译为一个可用的java目标。 当我重新定位c#2时,它产生一个解析器,其中所有的解析方法都是私有的,但标有[GrammarRule(“rulename”)]属性。 实际调用解析器的批准方法是什么? 我正在使用ANTLR 3.3 2010年11月30日12:45:30 谢谢,安迪

可视化使用ANTLR创建的AST(在.Net环境中)

对于一个宠物项目,我开始摆弄ANTLR。 在完成一些教程之后,我现在正在尝试为我自己的语言创建语法并生成AST。 现在我主要在ANTLRWorks中乱搞,但现在我已经validation了解析树看起来很好我想(迭代地,因为我还在学习并且仍然需要对最终结构做出一些决定树)创建AST。 似乎antlrworks不会将其可视化(或者至少不使用“Interpreter”function,Debug不能在我的任何机器上运行)。 底线:是以手动方式可视化AST的唯一方法,遍历/显示它还是以字符串表示forms将树打印到控制台? 我正在寻找的是从输入,语法 – >视觉AST表示到ANTLRWorks的“解释器”function的简单方法。 有任何想法吗?