实际上,也许不完全成熟的Lex/Yacc.我执行了命令翻译的前端管理网络应用程序.我在找一些东西,将采取一种语的定义,并把它变成一个分析器,直接调用的方法上我的对象。类似于如何ASP.NET 视可以找出哪些控制方法的援用,以及如何小马达的论点。

因此,如果用户类型的"创建foo"在我的命令-提示,它应该透明地调用的方法:

private void Create(string id) { /* ... */ }

哦,如果它可能产生的帮助文本由(例如)属性上的那些控制方法,那会是真棒,太。

有帮助吗?

解决方案

我不知道莱克斯/ Yacc的将是任何帮助。你只需要一个基本的标记生成器和解释器是更快手工编写。如果你还在为解析路径看反讽

作为一个旁注

:你有没有考虑PowerShell和命令行开关及其

其他提示

我已经做了一些小的项目与比斯米拉赫电话/GPPG,这是非常简单的reimplementations的LEX/YACC。我已经不用的任何其他工具的上面,所以我真的不能比较它们,但这些工作得很好。

GPPG可以找到 在这里, 和比斯米拉赫电话 在这里,.

这就是说,我同意,全LEX/YACC解决方案可能被矫枉过正的为你的问题。我建议产生一组绑定使用IronPython:它接口很容易。净码,非程序员似乎找到基本的语法相当有用,它给你一个很大的灵活性/力如果你选择来使用它。

也期待在的Antlr ,该具有C#的支持。

还早CTP所以不能在生产应用中使用,但你可能有兴趣在奥斯陆/ MGrammar: http://msdn.microsoft.com/en-us/oslo/

Jison近来得到了很多的牵引力。它是一种野牛端口的JavaScript。因为这是非常简单的性质,我已经移植了jison解析/词法模板,PHP,现在为C#。它仍然是非常新的,但如果你得到一个机会,看看这里吧:的 https://github.com/robertleeplummerjr/jison/tree/master/ports/csharp/Jison

如果你不害怕阿尔法软件并想创建自己的语言莱克斯/ Yacc的替代方案,你可能会考虑的奥斯陆。我建议你通过从过去几年PDC 会议TL27和TL31的会话记录坐。 TL31直接解决使用奥斯陆领域专用语言的创建。

可可/ R是一个编译器生成与.NET实现。你可以尝试了这一点,但我不知道,如果让这样的图书馆管理员的工作会比写自己的分词速度更快。

HTTP://www.ssw.uni-linz。 ac.at/Research/Projects/Coco/

我会建议 csflex - C#柔性的端口 - 最著名的UNIX扫描程序生成

相信法/ yacc是在已经在软件开发工具包(即RTM)中的一个。 Windows或.NET框架SDK。

花园点解析器生成器此处提供的Yacc /野牛功能为C#。它可以donwloaded 这里。提供了一种使用GPPG一个有用示例此处

安东说,PowerShell是可能的路要走。如果你想有一个法/ yacc的实现,那么马尔科姆·克劳具有良好的集。

修改 直接链接到编译器工具

为了记录,实施在C#词法分析器和LALR解析器为C#:

http://code.google.com/p/naive-language-tools /

这应该是在使用莱克斯/ Yacc的相似,但是这些工具(NLT)不是发电机!因此,忘记速度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top