Существует ли быстрый алгоритм для определения числа Годеля терма языка без контекста?

Предположим, у нас есть простая грамматическая спецификация. Существует способ перечисления терминов этой грамматики, который гарантирует, что любой конечный член будет иметь конечную позицию,повторяя его по диагонали, Например, для следующей грамматики:

S      ::= add
add    ::= mul | add + mul
mul    ::= term | mul * term
term   ::= number | ( S )
number ::= digit | digit number
digit  ::= 0 | 1 | ... | 9

Вы можете перечислить такие термины:

0
1
0+0
0*0
0+1
(0)
1+0
0*1
0+0*0
00
... etc

У меня вопрос: есть ли способ сделать обратное? То есть, чтобы взять действительный термин этой грамматики, скажем,0+0*0и найти свою позицию по такому перечислению - в таком случае 9?

Ответы на вопрос(1)

Ваш ответ на вопрос