【问题标题】:How to define a boolean in Flex如何在 Flex 中定义布尔值
【发布时间】:2016-02-02 01:08:18
【问题描述】:

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

弹性代码:

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

谢谢!

EDIT:输出被编码在一个单独的 c 文件中,该文件打印在测试代码中找到的字符串,它是什么类型的值(在这种情况下它是布尔值或 BooleanConstant),然后是值已保存的令牌。如有任何混淆,请见谅。

【问题讨论】:

  • boolConstant 是什么类型?你是如何展示东西的?您显示的代码不显示任何内容。
  • yylval.boolConstant 是什么类型?那是我问的另一件事。
  • yylval.boolConstant 是一个布尔值
  • @GabeB-David:在 C(和 C++)中,任何指针都可以转换为布尔值; NULL 转换为false,任何其他指针都转换为trueyytext 是一个指针(指向一个字符串,它是当前标记),保证不是NULL。所以得出你自己的结论:-)

标签: c flex-lexer


【解决方案1】:

我相信您需要将字符串"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.

【讨论】:

    【解决方案2】:
    **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);
        }
    

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 1970-01-01
      • 2022-01-08
      • 2013-04-13
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2013-09-07
      • 2020-06-25
      相关资源
      最近更新 更多