单DSL开发与测试及DSL开发中的可变性支持
1. 单DSL开发
在开发单DSL时,使用NX可以实现基于VISITOR的C代码生成。以下是相关代码示例:
:method "convert Add" {e} {
:opnds [lassign ${:opnds} a b]
:opnds "($a + $b)"
}
:method "convert Lit" {e} {
:opnds ["(${:promoteTo})[$e value get]" {*}${:opnds}]
}
上述代码实现了一个基于VISITOR的C代码生成器,用于处理LEA表达式。
另外,还有一个LEA表达式实现为Tcl/C过程的示例:
critcl::cproc cexpr {} {
(( )1 + (( )2 + ( )4));
}
要实例化一个VISITOR来评估LEA表达式并得到结果值,可以使用以下代码:
visitor [CExprVisitor new]
$visitor evaluate $expr2
这里的 $expr2 是通过 ExternalBuilder 从外部LEA脚本获得的语言模型实例。
2. DSL测试
测试DSL,无论是内部还是外部
超级会员免费看
订阅专栏 解锁全文
1578

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



