属性文法的模块化定义良好性分析
引言
在属性文法的开发中,确保其定义良好性至关重要。为了实现这一目标,我们对 Agf 语言进行了扩展,主要包括引入模块系统和其他一些特性,以支持模块化分析。本文将详细介绍这些扩展以及相关分析的实现和评估。
扩展分析
模块系统
为了更好地适应大型属性文法的开发,我们为 Agf 引入了模块系统。每个文法都有一个名称,由一组模块语句和一组属性文法声明组成。模块语句主要包括以下几种:
1. 导入(import ng) :明确模块标准环境中可用的信息。在模块化分析中,每个文法都被视为其导入的所有文法组合的“扩展”。一个不导入任何内容的文法满足所有模块化规则。这种方式不仅允许将宿主语言拆分为多个文法,还允许扩展使用其他扩展。
2. 导出(export ng) :允许将文法任意拆分为不同部分,在分析时可将其视为单个文法。例如,可将类型检查从宿主语言中分离出来,通过宿主语言文法导出类型检查文法,将其指定为宿主的一部分。
3. 选项(option ng) :用于支持宿主语言的多种潜在配置。在计算第 3 节规定的任何要求时,选项声明的行为与导出相同,但对标准环境没有影响。这允许在非宿主语言的文法中引入新的非转发产生式,同时确保扩展考虑到它们的存在。
4. 条件导出(export ng with ntg) :如果导入模块也导入了触发文法(ntg),则条件导出与普通导出 ng 相同;否则,条件导出将被忽略。
为了处理导入循环,我们采用全
超级会员免费看
订阅专栏 解锁全文

7149

被折叠的 条评论
为什么被折叠?



