antlr2返回多个值 [英] antlr2 return multiple values

查看:101
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆