如何为语法的动作类添加默认方法?
发布时间:2020-12-15 21:42:31 所属栏目:大数据 来源:网络整理
导读:最近,我尝试了一些语法修改a的小部分 文件.在那些测试用例中,我会保留很多 文件原样,只在这里和那里修改小块,看看 this回顾问题的一个例子. 所以我需要一个(或几个)动作方法(即动作类中的方法) 语法)我将文件的修改部分附加到 使用它匹配对象 制作方法.问题
最近,我尝试了一些语法修改a的小部分
文件.在那些测试用例中,我会保留很多 文件原样,只在这里和那里修改小块,看看 this回顾问题的一个例子. 所以我需要一个(或几个)动作方法(即动作类中的方法) 因此,除了一个之外,动作类中的所有方法都采用完全相同的形式: method make-data ($match-data) { $match-data.make( [~] $match-data.chunks.map: {$_.value.?made // $_.value} ); } 现在,似乎对所有动作方法显式重复相同的代码 有没有办法告诉语法类,如果一个动作方法 所以在这种情况下,我设想动作类中的DEFAULT()方法: method DEFAULT ($match-data) { $match-data.make( [~] $match-data.chunks.map: {$_.value.?made // $_.value} ); } 如果语法类中的标记没有,则调用 解决方法
Perl 6的Type系统将调用
FALLBACK方法,如果它存在于类中并且进行了未知的方法调用.
以下解决方案将默认构造方法添加到Calculations操作类. grammar Calculator { token TOP { [ <add> | <sub> ] } rule add { <num> '+' <num> } rule sub { <num> '-' <num> } token num { d+ } } class Calculations { method ws($) {} method FALLBACK($token,$match-data) { $match-data.make( [~] $match-data.chunks.map: { $_.value.?made // $_.value; } ); } } say Calculator.parse('2 + 3',actions => Calculations).made; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |