我想解决布尔函数,如:
(2and2)OR0
(真假)和真实等。
我为一些简单的计算器做了这个教程: http://programming-pages.com/2013/12/14/antlr-4-with-c-and-visual-studio-2012/
当我尝试解决像"真实和错误",我得到了正确的结果。 对于我的项目,我需要用"等整数来解决函数。 2和0"。 结果我想要"对错!"。
所以我试图将输入的整数转换为布尔值(0 =假,其他都是真的)然后将表达式与&&进行比较。或|| 。
你能告诉我为什么不能解决这个问题:
public override bool VisitInt(Combined2Parser.IntContext context)
{
return bool.Parse(context.INT().GetText());
}
在我看来,这应该将Inputstring中找到的所有整数转换为Bool,但它不会像这样工作。
(对于整个代码,请查看教程,我的代码几乎相同)
谢谢你的帮助。
我的下一步是,每当Parser发现一些信件时, 它应将其转换为浮点变量,并用输入值替换P / T.
但如果我的expr是数字或字母,我需要分开。
像:
IF(expr(0)!=" Number"&& expr(1)!=" Number")
然后问我想要使用什么价值
我如何编写这个if-function?
答案 0 :(得分:0)
您无法使用bool.Parse
将数字转换为布尔值。它在C#(.Net框架)中不起作用,bool.Parse
用于解析True
和False
的字符串值。
您可以将比较整数值用于0
并相应返回,如:
public override bool VisitInt(Combined2Parser.IntContext context)
{
return context.Int() != 0; //true for anything other than 0, false for 0
}