我是Marpa的新手.我已经尝试了几种方法来描述我的语法中的0个或更多个术语的列表,我想避免使用多个解析树.
我的语言将只有1个组件,后跟0 +子组件:
package => component-rule [subcomponent-rule ...]
Run Code Online (Sandbox Code Playgroud)
我首先尝试的是这样的:
{ lhs => 'Package', rhs => [qw/component-rule subcomponents/] },
{ lhs => 'subcomponents', rhs => [qw/subcomponent-list/] },
{ lhs => 'subcomponent-list', rhs => [qw/subcomponent-rule/], action => 'do_subcomponent_list' },
{ lhs => 'subcomponent-list', rhs => [qw/subcomponent-list subcomponent-rule/], action => 'do_subcomponent_list' },
{ lhs => 'subcomponent-list', rhs => [qw//], action => 'do_subcomponent_empty_list' },
{ lhs => 'subcomponent-rule', rhs => [qw/subcomponent subcomponent-name/], action => 'do_subcomponent' },
Run Code Online (Sandbox Code Playgroud)
(帖子末尾的完整代码.)
这是我的意见:
$recce->read( 'component', );
$recce->read( 'String', 'MO …Run Code Online (Sandbox Code Playgroud) 我在Perl中有两个1000+行程序,每个程序在主文件中有大约20个子程序.一个是前一段时间从另一个分叉的,我想要分解公共部分(在向后移植特征之前).是否有一个diff工具将子例程(和前面的注释)视为单位,并将公共单位提取为新文件?(如果子程序的一行不同,则单位不匹配.)
如果有帮助,我的SCM目前是Subversion.处理代码的Perl脚本很酷.