antlr2返回多个值 [英] antlr2 return multiple values
本文介绍了antlr2返回多个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使规则在antlr2中返回多个值.例如:
How to make a rule return multiple values in antlr2.For example:
declSpecifiers returns [int mods]
: ( storageClassSpecifier
| typeQualifier
| typeSpecifier)+
;
除了"mods"之外,我还有其他信息要返回.
I have some other information besides 'mods' to return.What should I do?
推荐答案
在ANTLR v2.x中,您只能返回单个值,这与ANTLR v3.x不同,在该版本中,多个返回值由包含多个返回值的容器自动包装值.
In ANTLR v2.x, you can only return a single value, unlike ANTLR v3.x where multiple return values are automatically wrapped by a container containing the multiple return values.
您将必须返回某种集合或自定义对象:
You'll have to return some sort of collection, or custom object:
declSpecifiers returns [Map map]
{map = new HashMap();}
: ( storageClassSpecifier { /* populate your map here */ }
| typeQualifier { /* populate your map here */ }
| typeSpecifier { /* populate your map here */ }
)+
;
我想您知道ANTLR v2已经很老了:如果可以的话,请迁移到v3(我知道这并不总是一种选择,但仍然可以).
I presume you know ANTLR v2 is rather old: if you can, migrate to v3 (I know that's not always an option... but still).
这篇关于antlr2返回多个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文