我如何解析perl(if,else if,else)语句到数据库

时间:2015-07-30 12:09:25

标签: perl-data-structures

我想用一个Perl文件解析语句(if,else if,else)到数据库,如下所示:

if(expression) {  
    command1  
    command2  
if(expression2){  
    command3}}

并且解析器将生成哈希:

%hash=  {expression=>{command1,command2,expression2=>{command3}}

我尝试过使用parse rec。体面,但我没有成功。有人想知道更好的解决方案吗?或者可以帮我写这个语法? 祝你有愉快的一天。

1 个答案:

答案 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]}}

};