![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Juster~ |
|
|||
Unregistered |
Решил я написать анализатор выражений на c++ в качестве экзамена по нему же. Задуманный анализатор должен понимать:
- Унарные и бинарные основные операторы - Функции, в том числе вложенные (например cos(x^2+1)) - Переменные (x, y и тп) Сейчас продумываю алгоритмы и классы. Собственно вопрос: вы писали свои анализаторы? как вы реализовали сам процесс интерпретации? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Нужно сконструировать несколько этапов...
1) lexer 2) parser 3) interpretator Первый отвечает за то чтобы файл был написан в формате самого языка...тут можно конечно помучиться на C++, но умные люди придумали едакую штучку ...YACC называется и его аналог Bison...пишешь маленький скриптик, то бишь говоришь программе как должен выглядеть твой скрипт или язык программирования, и запускаешь...программа генерирует код на С который проверит на наличии ошибок...с этим вроде все, потом второй этап который пройдется уже по правильному тексту и запихнет весь скрипт в соответствующие переменные, массивы..итд итп... и наконец третий этап который уже готовые данные переработает и сделает с ними то что должен сделать собственно говоря... |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
--------------------
|
|||
|
||||
ufo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
можно еще загляюнуть в книгу Страуструпа, там есть пример калькулятора. Задача весьма схожа, так что думаю будет полезно почитать
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |