import anltr4.*;
public class MyListener extends ANTLRBaseListener { @Override public void enterInteger(ANTLRParser.IntegerContext ctx) { int value = Integer.parseInt(ctx.getText()); System.out.println("Integer value: " + value); }
@Override
public void enterFloat(ANTLRParser.FloatContext ctx) {
float value = Float.parseFloat(ctx.getText());
System.out.println("Float value: " + value);
}
}
public class Main { public static void main(String[] args) { String input = "1234 3.14"; ANTLRInputStream inputStream = new ANTLRInputStream(input); ANTLRLexer lexer = new ANTLRLexer(inputStream); CommonTokenStream tokenStream = new CommonTokenStream(lexer); ANTLRParser parser = new ANTLRParser(tokenStream); ParseTreeWalker walker = new ParseTreeWalker(); MyListener listener = new MyListener(); walker.walk(listener, parser.number()); } }
注意:上述代码示例假定已经定义了 `ANTLRParser` 和 `ANTLRLexer` 类来处理整数和浮点数的语法规则。请根据实际情况替换为正确的类名。
在示例中,我们创建了一个 `MyListener` 类,继承自 `ANTLRBaseListener`,并重写了 `enterInteger` 和 `enterFloat` 方法来处理整数和浮点数的解析结果。然后,在 `Main` 类中,我们创建了必要的输入流、词法分析器、语法分析器等对象,并使用 `ParseTreeWalker` 类来遍历语法树,并将 `MyListener` 实例传递给 `walk` 方法来触发相应的解析方法。
最后,我们运行 `Main` 类,输入字符串 "1234 3.14",程序将解析出整数值和浮点数值,并打印出结果。
上一篇:ANLTR4不匹配的输入
下一篇:按路径获取类别记录的SQL