Так что я пишу грамматику на Ply, которая распознает базовые операторы С, такие как объявление переменной или оператор while. В настоящее время, что я хочу сделать, это быть в состоянии объединить все маркеры, а затем распечатать его или же он распространяется на дерево, как это:ply конкатенация строк на грамматике
def p_whileStmt(p):
'''whileStmt : WHILE '(' condition ')' '{' stmt '}' '''
p[0] += p[1] + p[2] + p[3] + p[4] + p[5] + p[6] + p[7]
Есть ли лучший способ объединить все маркеры (Мне нужны только значения символов, мне нужно только построить строку), чем тот, который я использую?
EDIT: В некоторых случаях мне нужно сцепить все маркеры, за исключением нескольких, как, например:
def p_whileStmt(p):
'''whileStmt : WHILE '(' condition ')' '{' stmt '}' '''
p[0] += p[1] + p[3] + p[5]
В слое, р [0] является то, что будет передаваться "вверх" для функций родительского грамматики. Обычно вы добавляете узел AST. – jjm
Upvote для показа, как использовать шаги в срезах. – jjm