How to define a boolean in Flex

2019-09-12 02:18发布

I am building a compiler for a toy Java language (Decaf) and I am having trouble with defining a bool. When I try to analyze a boolean, it always returns false, whether or not I wrote false.

Flex code:

true|false  {
            yylval.boolConstant = yytext;
            return T_BoolConstant;
        }

Input code:

bool x = true;
bool y = false;

Output:

true         T_BoolConstant (value = false)
false        T_BoolConstant (value = false)

I tried searching on SO but this was the closest I could get to a proper answer:

Simulating Booleans in Bison with C

Thank you!

EDIT: The output is coded in a separate c file that prints the string found in the test code, what kind of value it is (in this case it is a boolean or BooleanConstant) and then the value of the token that was saved. Sorry for any confusion.

标签: c flex-lexer
2条回答
叼着烟拽天下
2楼-- · 2019-09-12 02:53

I believe you need to convert the strings "true" and "false" into the boolean constants true and false. Otherwise you're just storing strings.

true {
    yylval.boolConstant = true;
    return T_BoolConstant;
}

false {
    yylval.boolConstant = false;
    return T_BoolConstant;
}

Here is a similar question with a different approach.

查看更多
Melony?
3楼-- · 2019-09-12 02:57
**Uson for the web services**   
 private var IsCity:Boolean = true;
    private function button_click():void {
        //dg.dataProvider= countrys
        webService.getCountries.send(1,0);

    }

    private function getCountries_result(evt:ResultEvent):void {

        //var countryList:ArrayCollection=evt.result as ArrayCollection;
                    dg.dataProvider=evt.result as ArrayCollection;

    }
    private function dgridclick():void{
    IsCity=false;
                webService.getSubLocationsByMultipleParameters.send(1,2,true,dg.selectedItem.id,dg.selectedItem.targetCode)

    }
    private function getState_result(evt:ResultEvent):void{

        if(IsCity)
            dg2.dataProvider=evt.result as ArrayCollection;
        else
            dg1.dataProvider=evt.result as ArrayCollection;

    }

    private function d1click():void{
      IsCity=true
    webService.getSubLocationsByMultipleParameters.send(1[4,3],false,dg1.selectedItem.id,dg1.selectedItem.targetCode);
    }
查看更多
登录 后发表回答