我正在构建一个玩具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文件中,该文件打印在测试代码中找到的字符串,它是什么类型的值(在这种情况下它是布尔值或布尔值常量)然后是值已保存的令牌。抱歉有任何困惑。
答案 0 :(得分:0)
我认为您需要将字符串"true"
和"false"
转换为布尔常量true
和false
。否则你只是存储字符串。
true {
yylval.boolConstant = true;
return T_BoolConstant;
}
false {
yylval.boolConstant = false;
return T_BoolConstant;
}
答案 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);
}