Парсер с ply - Парсер управляет простой цитатой - PullRequest
0 голосов
/ 20 сентября 2018

Я разрабатываю парсер на python с ply.Но у меня есть вопрос о правилах разбора, потому что у меня есть что-то вроде этого:

def p_main(p):
main : PROGRAMA ID declaraciones declaracion_funcion bloque

, но я видел, что правила используют простую цитату, почему ?, для чего она используется?

Например:

def p_expression_binop(p):
    '''expression : expression PLUS expression
                  | expression MINUS expression
                  | expression TIMES expression
                  | expression DIVIDE expression'''
    if p[2] == '+'  : p[0] = p[1] + p[3]
    elif p[2] == '-': p[0] = p[1] - p[3]
    elif p[2] == '*': p[0] = p[1] * p[3]
    elif p[2] == '/': p[0] = p[1] / p[3]

почему 3 простые кавычки?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вы уже пробовали запустить свою программу?Я ожидаю, что если вы это сделаете, вы получите SyntaxErrors, потому что ваше определение правил синтаксического анализа, хотя BNF и допустимый, не является допустимым Python.PLY анализирует строки документации методов "p_xxx", чтобы прочитать BNF, который соответствует правилам синтаксического анализа этого выражения, поскольку нет ограничений на содержимое строк в кавычках.Тройная кавычка - это то, как мы определяем многострочную строку в Python, поэтому она идеально подходит для захвата правила разбора, соответствующего методу разбора.

0 голосов
/ 20 сентября 2018

Три кавычки (двойные или одинарные) - это многострочная строка в Python.

https://www.digitalocean.com/community/tutorials/how-to-format-text-in-python-3#multiple-lines

...