Разбор псевдокода / языка в Python - PullRequest
0 голосов
/ 15 февраля 2011

Так что мне нужно написать парсер (или симулятор), который бы взял входной файл с простым кодом, написанным на моем собственном псевдокоде, таком как язык, например:

a = 5
b = 5 * a
[FOR 10]
    b = b * 5
[ENDFOR]
[IF b>30]
    a = a + 3
[ENDIF]

Таким образом, псевдоязык поддерживает только целочисленные переменные, базовые операции с ними (+, -, /, *), базовый цикл for и базовый оператор if. Мне нужно создать синтаксический анализатор, который в конечном итоге доставит окончательные значения a и b (или любые другие переменные, используемые в коде).

Я думал о том, чтобы попытаться сделать это в XML, чтобы смоделировать цикл и тег if, но я не совсем уверен, является ли это правильным (или наиболее эффективным) подходом. Есть предложения?

Быстрое редактирование ^^: Речь идет не о моем собственном языке программирования ... это часть более крупного проекта ... Мне нужен простой способ оценки небольших фрагментов кода, написанного, как в примере, и получения состояний переменных, используемых после его моделирования ... вот почему Я хотел использовать XML ... это не предназначено для программирования любого рода ...

Ответы [ 2 ]

0 голосов
/ 15 февраля 2011

Многое из этого уже может быть реализовано с помощью примеров из pyparsing wiki, таких как this или this , который использует более актуальный вспомогательный метод operatorPrecedence.

РЕДАКТИРОВАТЬ Ссылки на PyParsing Wikispace мертвы, но вы можете найти другую вики в репозитории github отсюда: https://github.com/pyparsing/pyparsing/wiki

0 голосов
/ 15 февраля 2011

Взгляните на PLY .Реализация великолепного LEX / YACC в Python.С помощью этого инструмента вы можете определенно написать компилятор или интерпретатор для вашего языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...