我正在寻找一种在Antlr中匹配文件名的好方法。
文件名可以是DOS或Unix风格。
如果你有一个很好的解决方案,请随意忽略这个问题的其余部分,因为这只是我尝试解决问题的新手,我可能会离开。我把它包括在内是因为有些人喜欢看示例代码。
为了讨论的目的,这里有一个我正在思考的问题。这不是我的实际语法,因为我对此讨论感兴趣的是文件名解析,因此我减少了在该上下文中有意义的样本。
Lexer.g4:
lexer grammar Lexer;
K_COPY : C O P Y ;
FILEPATH: [-.a-zA-Z0-9:/\]+;
Parser.g4
parser grammar Parser;
options { tokenVocab=Lexer; }
commandfile: (statement NEWLINE)* EOF;
statement : copy_stmt
;
copy_stmt: K_COPY left=filepath right=filepath
;
// Add characters as we make rules as to what characters are valid:
filepath: FILEPATH;
这就是我的想法,但我是Antlr的新手所以我想在继续之前得到一些反馈。
我正在使用Antlr这个项目已经决定,这个项目的很大一部分已经在Antlr中工作,所以我只是在寻找基于Antlr的解决方案。