gol*_*lyb 3 python parsing exception syntax-error python-3.x
我正在为特定于域的语言实现解析器,并希望能够引发SyntaxError.在引发此异常时如何设置文件名,lineno和offset?
异常 SyntaxError
解析器遇到语法错误时引发.这可能发生在import语句,exec语句,内置函数eval()或input()的调用中,或者在读取初始脚本或标准输入时(也是交互式).
此类的实例具有filename,lineno,offset和text属性,以便于访问详细信息.异常实例的str()仅返回消息.
资料来源:https://docs.python.org/3.2/library/exceptions.html#SyntaxError
答案是:
>>> raise SyntaxError('End quote missing', ("test.py", 1000, 11, "print 'bar"))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test.py", line 1000
print 'bar
^
SyntaxError: End quote missing
Run Code Online (Sandbox Code Playgroud)
第二个参数需要是一个4元组.