Antlr4解决布尔函数

时间:2014-03-24 13:30:56

标签: c# visual-studio-2010 antlr4

我想解决布尔函数,如:

(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?

1 个答案:

答案 0 :(得分:0)

您无法使用bool.Parse将数字转换为布尔值。它在C#(.Net框架)中不起作用,bool.Parse用于解析TrueFalse的字符串值。

您可以将比较整数值用于0并相应返回,如:

public override bool VisitInt(Combined2Parser.IntContext context)
{
  return context.Int() != 0; //true for anything other than 0, false for 0
}