如何确定用户的输入是否为空?

时间:2016-03-30 11:30:31

标签: parsing compiler-construction javacc

我正在编写代码来生成一个JavaCC解析器,它将读取用户的输入并检查它是否在我的代码中定义的一组语言中。

允许输入的一个条件是它不能为空 - 即,用户必须输入除空格" "以外的某些字符块(长度大于或等于1)。

我希望能够确定用户的输入是否为空,以便在这种情况下可以在屏幕上打印出错误消息。

我写了一个获取用户输入的作品(a.k.a规则);它被称为Input()并被宣布为无效。 在main方法中,我尝试编写代码来确定用户的输入是否为空,通过编写:

if parser.Input() == null {
  // print error message onto the screen
}

但是,当我尝试编译时,我在终端上收到一条错误消息,说明这里不允许'void'类型(我确定这是指输入)。

我可以提供一些提示/提示来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

像这样编写输入作品

boolean Input() : {
} {
    <EOF>
    {return true;}
|
   ... // other possibilities here
   {return false;}
}

然后,在main方法中,您可以编写

if( parser.Input() ) {
    ... // report error
}

这解决了报告错误的问题。

但是,您可能还想报告找到的语言。为此,您可以创建枚举类型并让Input返回枚举的成员。 EMPTY可能是其中一种可能性。

Language lang = parser.Input() ;
switch( lang ) {
    case EMPTY:
        ... // report error
    break ;
    case LANGA:
        ...
    break ; 
    ... // etc.
}

答案 1 :(得分:1)

更改您的类型方法,这样可以返回一个值,您可以在执行此操作时验证结果,但更改比较如下:

if null==parser.Input(){ //print error message on screen }

另一种选择是验证Input方法中的数据,以便将其保持为void。