您如何编写Perl语句$ age = 25;在BNF或EBNF中

时间:2018-09-07 15:19:14

标签: perl bnf ebnf

如何转换Perl语句$ age = 25; BNF或EBNF语法?

1 个答案:

答案 0 :(得分:3)

我可能会写一个语法

<statement> ::= <assignment> ";"
<assignment> ::= <lhs> "=" <rhs>
<lhs> ::= <var>
<rhs> ::= <expr>
<var> ::= ("@" | "$" | "%" | "*") <name>
<expr> ::= <var> | <number>

这将匹配一系列Perl-ish分配(为<name><number>提供了适当的定义);不只是您写的那个,还有

$age = 25;
@foo = $bar;
%baz = 9999999;

Perl具有一些语法上的复杂性,因此很难在此级别进行全面检查(考虑表达式$foo$foo{bar}$foo->{bar}之间的差异),但是如果您愿意的话进行第二次类型检查,而不是典型的声明和表达语法。