метод рекурсивного спуска сверху вниз Python
В чем разница между этими предложениями ниже:
<stmt-list> ::= empty | <stmt> { <stmt> }
and
<stmt-list> ::= empty | <stmt> <stmt-list>
Каким было бы решение для грамматики крошечного языка в python?
<stmt-list> ::= empty | <stmt> { <stmt> }
<stmt> ::= id = <expr> ; |
print <expr> ;
<expr> ::= <term> { + <term> | - <term> }
<term> ::= <factor> { * <factor> | / <factor> }
<factor> ::= id | intnum | ( <expr> )
Я должен использовать входной файл (sample.tiny) для получения вывода.
образец.крошечный
print 2 + 3 * 4 ;
s = 2 + 3 ;
t = 9 - 2 ;
print s * t ;
print ( s + t ) * ( s - t ) ;
выход
print 2 + 3 * 4 ;
>>> 14
s = 2 + 3 ;
t = 9 - 2 ;
print s * t ;
>>> 35
print ( s + t ) * ( s - t ) ;
>>> -24