相关疑难解决方法(0)

如果输入无效,是否可以抛出异常?

我有一个简单的ANLTR语法和随附的访问者.除非输入无效,否则一切都很好.如果输入无效,则吞下错误并且我的计算器输出错误.

我已经尝试实现一个错误监听器,而不是Recover使用词法分析器的方法,而且......好吧......今天还有其他几十件事情.有人可以告诉我如何简单地抛出错误而不是吞下坏的"令牌"吗?(我使用引号,因为它们根本不是令牌.我的语法中的字符未定义.)

有效输入:

1 + 2*3 - 4

输入无效:

1 + 2 + 3(4)

ArgumentException如果解析器/词法分析器遇到括号(或任何其他未定义的字符),我想抛出一个.目前,无效字符似乎只是消失在以太中,解析器就像没有错一样.

如果我使用grun命令在控制台中运行它,我会得到以下输出,因此它会在某个级别识别无效的标记.

第1:9行令牌识别错误:'('

第1:11行令牌识别错误:')'

这个结果解析树.

在此输入图像描述

BasicMath.g4

grammar BasicMath;

/*
 * Parser Rules
 */

compileUnit : expression+ EOF;

expression :
    expression MULTIPLY expression #Multiplication
    | expression DIVIDE expression #Division
    | expression ADD expression #Addition
    | expression SUBTRACT expression #Subtraction
    | NUMBER #Number
    ; 

/*
 * Lexer Rules
 */

NUMBER : INT; //Leave room to extend what kind of math we …
Run Code Online (Sandbox Code Playgroud)

c# exception antlr4

12
推荐指数
2
解决办法
1324
查看次数

标签 统计

antlr4 ×1

c# ×1

exception ×1