Красивая печать C # от Python - PullRequest
1 голос
/ 09 апреля 2009

Предположим, я написал компилятор на Python или Ruby, который переводит язык в C # AST.

Как мне красиво распечатать этот AST из Python или Ruby, чтобы получить код C # с хорошим отступом?

Thanks, Joel

Ответы [ 3 ]

1 голос
/ 11 апреля 2009

Если у вас есть AST, это должно быть очень легко. Когда вы проходите AST, все, что вам нужно сделать, это отслеживать текущий уровень отступа - вы можете использовать глобальный для этого. Код, который проходит по дереву, просто должен увеличивать уровень отступа каждый раз, когда вы входите в блок, и уменьшать его, когда вы выходите из блока. Затем, когда вы печатаете строку кода, вы называете это так:

print "\t"*indentlevel + code

Вы должны получить красиво отформатированный код. Тем не менее, я немного озадачен тем, что вы задаете этот вопрос - если у вас есть навыки для синтаксического анализа C # в AST, я не могу представить, что вы не сможете написать красивую функцию вывода на печать. : -)

1 голос
/ 09 апреля 2009

В python доступен модуль pprint .

В зависимости от того, как структурированы ваши данные, они могут не вернуть желаемый результат.

0 голосов
/ 09 апреля 2009

Один из способов - просто распечатать его, а затем вызвать средство форматирования кода.

...