Я использую YACC впервые и привыкаю к использованию грамматики BNF.
В настоящее время я создаю list
из type
из списка, разделенного запятыми (например, int
, float
, string
):
def p_type(p):
'''type : primitive_type
| array
| generic_type
| ID'''
p[0] = p[1]
def p_type_list(p):
'''type_list : type
| type COMMA type_list'''
if not isinstance(p[0], list):
p[0] = list()
p[0].append(p[1])
if len(p) == 4:
p[0] += p[3]
Правила работают, но я чувствую, что моя логика p_type_list
немного запутана и может быть упрощена до однострочника.
Я не нашел конкретных примеров PLY в Интернете. Любая помощь будет принята с благодарностью!