题
实际上,也许不完全成熟的Lex/Yacc.我执行了命令翻译的前端管理网络应用程序.我在找一些东西,将采取一种语的定义,并把它变成一个分析器,直接调用的方法上我的对象。类似于如何ASP.NET 视可以找出哪些控制方法的援用,以及如何小马达的论点。
因此,如果用户类型的"创建foo"在我的命令-提示,它应该透明地调用的方法:
private void Create(string id) { /* ... */ }
哦,如果它可能产生的帮助文本由(例如)属性上的那些控制方法,那会是真棒,太。
解决方案
我不知道莱克斯/ Yacc的将是任何帮助。你只需要一个基本的标记生成器和解释器是更快手工编写。如果你还在为解析路径看反讽。
作为一个旁注:你有没有考虑PowerShell和命令行开关及其
?其他提示
也期待在的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
可可/ R是一个编译器生成与.NET实现。你可以尝试了这一点,但我不知道,如果让这样的图书馆管理员的工作会比写自己的分词速度更快。
我会建议 csflex - C#柔性的端口 - 最著名的UNIX扫描程序生成
相信法/ yacc是在已经在软件开发工具包(即RTM)中的一个。 Windows或.NET框架SDK。
安东说,PowerShell是可能的路要走。如果你想有一个法/ yacc的实现,那么马尔科姆·克劳具有良好的集。
修改强> 直接链接到编译器工具
为了记录,实施在C#词法分析器和LALR解析器为C#:
http://code.google.com/p/naive-language-tools /
这应该是在使用莱克斯/ Yacc的相似,但是这些工具(NLT)不是发电机!因此,忘记速度。