我已经为 DSL 构建了语法,并且想以某些颜色显示一些元素(表名称)。我从 Java 输出 HTML。
columnIdentifier :
columnName=Identifier
| tableName=Identifier '.' columnName=Identifier
;
Identifier : Letter LetterOrDigit* ;
fragment Letter : [a-zA-Z_];
fragment LetterOrDigit : [a-zA-Z0-9_];
WS : [ \t\r\n\u000C]+ -> skip ;
Run Code Online (Sandbox Code Playgroud)
我考虑过使用 AbstractParseTreeVisitor 按原样返回所有元素,除了那些我想突出显示的将作为<span class="tablename" >theoriginaltext</span>. 这是一个好方法吗?
请注意,空格在发送到解析器之前会被消除,对吗?因此,如果我使用 AbstractParseTreeVisitor 重建输出,我将无法重建空间。
我认为有一种使用 ANTLR4 进行语法突出显示的规范方法。很难找到这方面的信息,因为搜索经常返回有关在 Eclipse/IDEA 中突出显示 Antlr4 文件的结果。
为什么需要访客?或者甚至是解析器?纯粹的词法分析器不足以进行词法分类吗?
当我使用代码缩进工具时,我必须
PS:只有当 AST 构造从不切换子节点的顺序时,这才有效。