2016-09-06 2 views
1

Я хочу, чтобы генерировать строки, подобные этим:Regex в ANTLR4

tablename(attr1, attr2)  
tablename(attr1, attr2, attr3) 
tablename(attr1, attr2, attr3, attr4) 

Проблема заключается в том, что с операторами подстановочные знаки (*, +?) Я не могу контролировать мощность, я хочу, потому что мне нужно по крайней мере, два. Так, строки, подобные этому, не принимаются:

tablename(attr1) 
tablename() 

Кроме того, я хочу, чтобы воспроизвести и запятые, но не для последнего атрибута. Есть ли способ сделать это ANTLR4?

ответ

1

Сформулировать возможные варианты явно. Например:

table: id OPEN_PAR attribute CLOSE_PAR 
     | id OPEN_PAR attribute COMMA attribute CLOSE_PAR 
     | id OPEN_PAR attribute COMMA attribute COMMA attribute CLOSE_PAR 
     | id OPEN_PAR attribute COMMA attribute COMMA attribute COMMA attribute CLOSE_PAR 
     ... etc. 
; 
Смежные вопросы