Bison / Flex If语句

时间:2015-12-07 00:44:50

标签: bison flex-lexer

我试图创建一个可以处理if语句的解析器。我目前为我的bison.y文件提供了以下代码:

ifstate: IF_TOKEN LPARENT compare RPARENT statement ENDIF_TOKEN
    | IF_TOKEN LPARENT compare RPARENT statement else
;

else: ELSE_TOKEN statement ENDIF_TOKEN
    | ELSEIF_TOKEN LPARENT compare RPARENT statement ENDIF_TOKEN
    | ELSEIF_TOKEN LPARENT compare RPARENT statement else
;

这里我比较返回一个true或false的字符串。和语句是任何语句(从添加到更多if语句的赋值)。但是,如果是真的话,我不知道如何只做陈述。

1 个答案:

答案 0 :(得分:0)

if语句编译成表格的伪代码:

    ; set up the condition 
    TEST
    BRANCH FALSE $1
    ; body of 'if' statement
$1: ; next statement

if/else声明:

    ; set up the condition 
    TEST
    BRANCH FALSE $1
    ; body of 'if' statement
    BRANCH $2
$1:  ; // body of 'else' statement
$2: ; next statement