【发布时间】:2016-12-11 21:46:01
【问题描述】:
我有以下语法。
meta : '<' TAG attribute* '>';
attribute : NAME '=' VAL;
TAG : [A-Z0-9]+;
NAME : [A-Z_-]+;
VAL : '"'.*?'"';
我想匹配下面的字符串。
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
但我收到以下错误。
ParseError extraneous input 'CONTENT' expecting {'>', NAME} clj-antlr.common/parse-error (common.clj:146)
我能够解析一个属性。
<META HTTP-EQUIV="Content-Type">
如何解析重复的属性?给attribute* 无效。
更新:其实是词法分析器造成的。如果我将TAG 和NAME 结合起来,那么它可以工作。
meta : '<' NAME attribute* '>';
NAME : [A-Z0-9_-]+;
但我不想让NAME 包含数字。有没有办法让这个工作?
【问题讨论】: