Irony - 语言实现工具包/语法
外观
来自维基百科
形式语法(有时简称为语法)是一组特定类型的规则,用于在形式语言中形成字符串。这些规则描述了如何从语言的字母表中形成字符串,这些字符串根据语言的语法有效。语法不描述字符串的含义或在任何上下文中可以使用它们的方式 - 只有它们的格式。
在 Irony 中,语法是使用巴科斯-诺尔 类似的符号在继承自 Irony.Parsing.Grammar 的 C#(或 VB.NET)类中进行描述。这与大多数其他语言工具(如 lex 和 yacc)有显著的区别。 "|" 和 "+" 运算符已重载,因此您可以将终结符串在一起以定义产生式。之后,此类可用于解析语言,并与其他 Irony 功能一起用于解释它。
要创建一个新的语法,只需创建一个新的类文件并扩展 Irony.Parsing 中找到的基类 Grammar。在这里,您可以设置语言的所有标记和产生式,以及其他属性,如保留字列表或是否创建抽象语法树。
Irony 项目包含许多关于如何执行此操作的示例,以及 Grammar Explorer 项目,该项目允许您测试您的语法。
语法文件中的典型部分如下所示,但显然您可以按照自己的意愿进行结构化
- 语言属性和标志
- 终结符
- 非终结符
- 产生式
- 标点符号、运算符和关键字的注册