ANTLR解析Java属性
|
我正在尝试学习ANTLR并为Java属性编写语法。我在这里遇到了一个问题,将不胜感激。
在Java属性中,它具有一些奇怪的转义处理。例如,
key1=1=Key1
key\\=2==
导致Java运行时中的键值对为
KEY VALUE
=== =====
key1 1=Key1
key=2 =
到目前为止,这是我可以模仿的最好方法。通过将\'= \'和值折叠到一个令牌中。
grammar Prop;
file : (pair | LINE_COMMENT)* ;
pair : ID VALUE ;
ID : (~(\'=\'|\'\\r\'|\'\\n\') | \'\\\\=\')* ;
VALUE : \'=\' (~(\'\\r\'|\'\\n\'))*;
CARRIAGE_RETURN
: (\'\\r\'|\'\\n\') + {$channel=HIDDEN;}
;
LINE_COMMENT
: \'#\' ~(\'\\r\'|\'\\n\')* (\'\\r\'|\'\\n\'|EOF)
;
如果可以实施更好的建议,有什么好的建议?
非常感谢
没有找到相关结果
已邀请:
1 个回复
誓猎贰
上面的语法可以通过以下类进行测试: Main.java
和输入文件: test.properties
产生以下输出:
意识到我的语法只是一个例子:它不能说明所有有效的属性文件(有时反斜杠应被忽略,没有Unicode转义符,键和值中缺少许多字符)。有关属性文件的完整规范,请参见: http://download.oracle.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.Reader%29