访问规则中的字段 - ANtlr4

时间:2013-09-04 01:54:09

标签: field antlr4

我有一个规则,我有一个声明返回

tablename
    returns [String fieldString, TableObj obj]

TableObj是我在同一个g4文件中声明的自定义类

class TableObj {
    public String realName;
    public String aliasName;
    public List<String> fields;
    public List<Relation> relations;

    public TableObj(){
       fields = new ArrayList<String>();
       relations = new ArrayList<Relation>();
    }
}

但是当我必须尝试使用​​$ obj.field访问obj字段时,生成的代码是:

_localCtx.field

而不是

_localCtx.obj.field

如何获取第二个表单而不是第一个表单?

如果它需要,或者它将有助于遵循我的规则片段

tablename
returns [String fieldString, TableObj obj]
:
    (tablePrefix=ID { 
                        $obj.aliasName = $tablePrefix.text;
                        System.out.println( "Alias = " + $tablePrefix.text + " " + $obj.aliasName );
                    }
;

1 个答案:

答案 0 :(得分:0)

这是ANTLR中的一个错误,您应该向项目问题跟踪器报告: https://github.com/antlr/antlr4/issues