2015-06-30 73 views
0

我使用以下摘录的语法为我的DSL:的Xtext解析规则uncomplete

SelectDml: 
    'select' columnList+=FieldColumn (',' columns+=FieldColumn)* from=FromClause; 

FromClause: 
    'from' value=ID (alias=ID)?; 

FieldColumn hidden(): 
    fieldName=ID ('.' ID)?; 

如果我分析下我的DSL线路,那么在列清单是精美绝伦一个FieldColumn。但FieldColumn的字段名称为a,而不是期望值:a.col

select a.col from a 

我的语法有问题吗?有什么遗漏?

回答

1

每本规则

FieldColumn hidden(): 
     fieldName=ID ('.' ID)?; 

第一ID值分配给fieldName。任何进一步的ID值只是略过。

+0

为什么会跳过更多的“ID”值?我怎样才能防止这一点? –

+0

该规则消耗多个令牌,但只处理第一个令牌。添加一些代码来处理其他问题。 – Gunther

+0

我已经添加了另一个规则:'FieldColumnName:ID('。'ID)?;'并将其分配给'fieldName'。感谢您的暗示:) –