首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将perl6语法转换为perl5

将perl6语法转换为perl5
EN

Stack Overflow用户
提问于 2019-02-14 04:57:31
回答 1查看 116关注 0票数 4

我正在将Perl6语法转换为Perl5。下面的语法代码不起作用,我使用的是Regexp::Perl5模块。请帮我举一个有效的例子。

我在发帖时遇到了这个错误--看起来你的帖子大部分都是代码;请添加更多细节。所以我重复它来添加一些文本

perl6代码

代码语言:javascript
复制
my $program = 'my $x = 23; say $x;';

grammar G {
  rule TOP {
    <statement>* %% ';'
  }
  rule statement {
    | <variable-declaration>
    | <function-call>
  }
  rule variable-declaration {
    'my' <variable-name> '=' <value>
  }
  token variable-name {
    '$' <alpha>+
  }
  token value {
    <digit>+
  }
  rule function-call {
    <function-name> <variable-name>
  }
  token function-name {
    'say'
  }
}

say G.parse($program);

perl5代码

代码语言:javascript
复制
my $text = q[my $x = 23; say $x;];

my $parser = qr {
    <nocontext:>
    <Statements>
    <rule: Statements>    <[Statement]>* % <Separator>
    <rule: Statement>     <Var-Decl> | <Fun-Call>
    <rule: Var-Decl>      my <Var-Name> = <Value>
    <rule: Var-Name>      $ [a-zA-z]+
    <token: Value>        \d+
    <rule: Fun-Call>      <Fun-Name> <Var-Name>
    <token: Fun-Name>     say
    <token: Separator>    ;
}xms;

if( $text =~ $parser ) {
    my %res = %/;
    print Dumper \%res;
}
EN

回答 1

Stack Overflow用户

发布于 2019-02-14 18:52:46

<debug: on>非常有用。几处改动后,它就能正常工作了

perl5代码

代码语言:javascript
复制
my $text = q[my $x = 23; say $x;];

my $parser = qr {
    <nocontext:>
    #<debug: on>
    <Statements>
    <rule: Statements>    <[Statement]>+ % <Separator>
    <rule: Statement>     <VarDecl> | <FunCall>
    <rule: VarDecl>       my <VarName> = <Value>
    <rule: VarName>       \$ [a-zA-Z]+
    <token: Value>        \d+
    <rule: FunCall>       <FunName> <VarName>
    <token: FunName>      say
    <token: Separator>    ;
}xms;


if( $text =~ $parser ) {
    my %res = %/;
    print Dumper \%res;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54679296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档