小编Pre*_*eti的帖子

如何在antlr中找到令牌的长度?

我试图创建一个接受任何字符或数字或几乎任何东西的语法,只要它的长度等于1.

有检查长度的功能吗?

编辑

让我用一个例子更清楚地说明我的问题.我写了以下代码:

grammar first;

tokens {
    SET =   'set';
    VAL =   'val';
    UND =   'und';
    CON =   'con';
    ON  =   'on';
    OFF =   'off';
}

@parser::members {
  private boolean inbounds(Token t, int min, int max) {
    int n = Integer.parseInt(t.getText());
    return n >= min && n <= max;
  }
}

parse   :   SET expr;

expr    :   VAL('u'('e')?)? String |
        UND('e'('r'('l'('i'('n'('e')?)?)?)?)?)? (ON | OFF) |
        CON('n'('e'('c'('t')?)?)?)? oneChar
    ;

CHAR    :   'a'..'z';

DIGIT   :   '0'..'9';

String  :   (CHAR | DIGIT)+; …
Run Code Online (Sandbox Code Playgroud)

antlr

2
推荐指数
1
解决办法
1663
查看次数

标签 统计

antlr ×1