我对 ANTLR 语法还不太熟悉。以下是我的 g4 文件中的内容:
tptp_file : tptp_input* EOF;
tptp_input : annotated_formula | include;
annotated_formula : fof_annotated | cnf_annotated;
fof_annotated : 'fof('name','formula_role','fof_formula annotations').';
name : atomic_word | integer;
atomic_word : lower_word | single_quoted;
lower_word : lower_alpha alpha_numeric'*';
lower_alpha : '[a-z]';
upper_alpha : '[A-Z]';
numeric : '[0-9]';
alpha_numeric : '('lower_alpha | upper_alpha | numeric | '[_])';
...
我尝试在这个包含以下内容的测试文件上使用 ANTLR 解析器:
fof(an,axiom,p).
但我收到一条错误消息:
line 1:4 token recognition error at: 'a'
line 1:5 token recognition error at: 'n'
line 1:7 token recognition error at: 'a'
line 1:8 token recognition error at: 'x'
line 1:9 token recognition error at: 'io'
line 1:11 token recognition error at: 'm'
line 1:13 token recognition error at: 'p'
line 1:6 mismatched input ',' expecting {'(', ''', '[1-9]', '[a-z]'}
line 1:12 mismatched input ',' expecting '[a-z]'
line 1:14 mismatched input ').' expecting {'(', '[', '[]', '!', '~', '?', '#', '["]', ''', '[1-9]', '[a-z]', '[A-Z]', '[$]'}
有人能帮我了解我做错了什么以及如何解决吗?谢谢。
我将 lower_alpha 声明为一个片段。