我想用一个Perl文件解析语句(if,else if,else)到数据库,如下所示:
if(expression) {
command1
command2
if(expression2){
command3}}
并且解析器将生成哈希:
%hash= {expression=>{command1,command2,expression2=>{command3}}
我尝试过使用parse rec。体面,但我没有成功。有人想知道更好的解决方案吗?或者可以帮我写这个语法? 祝你有愉快的一天。
答案 0 :(得分:0)
首先是你的帮助,这就是我一直想做的事情
my $grammar = q{
startrule : expression
expression : ifstatement(s?) statement(s?)
{$return = {'if' => $item[1]}}
codeblock : /[a-zA-Z]\w*/
{$return = {$item[1]}}
code : '{' codeblock(s?) ifstatement(s?) '}'
{$return = {$item[2]}}
statement : /[a-zA-Z]\w*/
elseifstatement : 'else' 'if' '(' expression ')' code
{[@item]}
elsestatement : 'else' code
{[@item]}
ifstatement : 'if' '(' statement ')' code(s?)
elseifstatement(s?) elsestatement(?)
{ $return = { 'statement' => $item[3], 'expression' => $item[5]}}
};