如何在Flex中定义布尔值

时间:2016-02-02 01:08:18

标签: c flex-lexer

我正在构建一个玩具Java语言(Decaf)的编译器,我在定义bool时遇到了麻烦。当我尝试分析一个布尔值时,它总是返回false,无论我是否写入false。

Flex代码:

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

输入代码:

bool x = true;
bool y = false;

输出:

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

我尝试搜索SO,但这是我能得到正确答案的最接近的:

Simulating Booleans in Bison with C

谢谢!

编辑:输出编码在一个单独的c文件中,该文件打印在测试代码中找到的字符串,它是什么类型的值(在这种情况下它是布尔值或布尔值常量)然后是值已保存的令牌。抱歉有任何困惑。

2 个答案:

答案 0 :(得分:0)

我认为您需要将字符串"true""false"转换为布尔常量truefalse。否则你只是存储字符串。

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

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

Here is a similar question with a different approach

答案 1 :(得分:-1)

**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);
    }