Класс TParser
От: Александр Шаргин Россия RSDN.ru
Дата: 13.06.01 18:26
Оценка: 241 (13) +2
Статья:
Класс TParser
Автор(ы): Александр Шаргин
Дата: 9.04.2001


Авторы:
Александр Шаргин

Аннотация:
Класс TParser занимается разбором математических выражений. Его можно применять в любых программах, в которых требуется расчёт значений функций, задаваемых пользователем. Класс написан на Visual C++, но может практически без изменений применяться с любыми другими компиляторами языка C++.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
А как же строки?
От: potap  
Дата: 22.04.03 09:55
Оценка:
А почему только числовые значения. Со строками тоже хочется иметь дело. Складывать, вырезать и т.п.
Добавочка
От: Pushkin Россия www.linkbit.com
Дата: 05.12.02 06:15
Оценка:
Странно, что не реализованы операции сравнения (<>=#) и операция условного присвоения (?:). Это нетрудно, а может быть полезно.
TParser
От: andrewga  
Дата: 19.01.02 06:51
Оценка:
An alternative to this could be loading VBScript or JScript engine (see ActiveX script hosting) and asking the engine to calculate an expression. Advantage is that you can add your or other COM libraries to the engine to participate in the calculation.
TParser
От: Аноним  
Дата: 14.06.01 18:26
Оценка:
Это просто расширенный пример из книги Б. Страуструпа Язык программирования С++
Re: А как же строки?
От: Alex_Kobzhev  
Дата: 30.10.03 18:01
Оценка:
P>А почему только числовые значения. Со строками тоже хочется иметь дело. Складывать, вырезать и т.п.

Это то что действительно нужно.
Можно ли как-нибудь использовать Scripting Host для этих целей?
Re: Класс TParser
От: Аноним  
Дата: 31.10.03 03:20
Оценка:
Здравствуйте, Александр Шаргин, Вы писали:

АШ>Класс TParser занимается разбором математических выражений. Его можно применять в любых программах, в которых требуется расчёт значений функций, задаваемых пользователем. Класс написан на Visual C++, но может практически без изменений применяться с любыми другими компиляторами языка C++.


Дело в том, что часто проблемная область заставляет задумываться над тем, как лучше записывать (представлять) выражения, ведь <b>фиксированный</b> С-like синтаксис приемлем далеко не всегда.
Обычно подобные парсеры (очевидно реализуемые методом рекурсивного спуска) пишутся за 1 вечер руками, или за то же время можно получить LALR(1) табличный парсер с использованием yacc или его OO-вариаций.

Наверное дальнейшая задача Вашему парсеру — стать "настраиваемым" под user-синтаксис и определенные юзером лексемы, если при этом получится сделать это понятным для юзеров — то Ваш продукт будет востребован, особенно в студенческой среде.
Re: Класс TParser
От: c-smile Канада http://terrainformatica.com
Дата: 31.10.03 19:10
Оценка:
Здравствуйте, Александр Шаргин, Вы писали:

АШ>Статья:



АШ>Авторы:

АШ> Александр Шаргин

АШ>Аннотация:

АШ>Класс TParser занимается разбором математических выражений. Его можно применять в любых программах, в которых требуется расчёт значений функций, задаваемых пользователем. Класс написан на Visual C++, но может практически без изменений применяться с любыми другими компиляторами языка C++.

Полезная штука.
И вот еще одна полезная штука на тему generic inline parsers: http://spirit.sourceforge.net
Re: Класс TParser
От: Аноним  
Дата: 16.02.04 09:29
Оценка:
Здравствуйте, Александр Шаргин, Вы писали:

АШ> Александр Шаргин


АШ>Аннотация:

АШ>Класс TParser занимается разбором математических выражений. Его можно применять в любых программах, в которых требуется расчёт значений функций, задаваемых пользователем. Класс написан на Visual C++, но может практически без изменений применяться с любыми другими компиляторами языка C++.

А вот и ложка дегтя. Хотелось бы получить уточнение — для какой именно грамматики сделан данный парсер с точки зрения автора. Нетрудно видеть, что поскольку в исходниках отсутствует какое-либо упоминание приоритетов операций, парсер предназначен для довольно экзотических задач. Для каких?

С уважением
Евгений Каратаев.
Re: Класс TParser
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 23.07.04 14:12
Оценка:
Недостатком парсера является то, что неграмотный юсер может в строчке, которую нужно разобрать, написать x[100000], а програмист задал массив всего из 10 иксов. Ран-Тайм ошибка получается. А лексический анализ текста мне делать ой как не хочется. Да и зачем? Просто у функции SetX нужно передавать не только массив, но и его размер, и еще че-то там дописать в других функциях.
Или я чего-то не понимаю?
Любая задача имеет решение, даже когда решения не существует
Re: Класс TParser
От: compiler-dev Украина http://www.compiler-dev.narod.ru/index.html
Дата: 28.04.06 10:30
Оценка:
Здравствуйте, Александр Шаргин, Вы писали:

АШ>Статья:

АШ>Класс TParser
Автор(ы): Александр Шаргин
Дата: 9.04.2001


АШ>Авторы:

АШ> Александр Шаргин

АШ>Аннотация:

АШ>Класс TParser занимается разбором математических выражений. Его можно применять в любых программах, в которых требуется расчёт значений функций, задаваемых пользователем. Класс написан на Visual C++, но может практически без изменений применяться с любыми другими компиляторами языка C++.

Добрый день!

Я хочу портировать Ваш код из примера
http://www.rsdn.ru/article/files/Classes/tparser.xml
Автор(ы): Александр Шаргин
Дата: 9.04.2001

на C.
(Создав проект в CodeBlocks
http://www.codeblocks.org/
)
Затем портированный код я планирую розместить на своей сираничке
http://www.compiler-dev.narod.ru/index.html

Если Вы не против — пожалуйста скажите, каким образом Вы хотели бы, чтобы я
упоминул про Ваши авторские права.

Спасибо.
http://www.compiler-dev.narod.ru/index.html
Compilers Development.
... my attempt to understand it.
Re: TParser
От: heap  
Дата: 20.04.08 21:05
Оценка: -2 :)
Здравствуйте, Аноним, Вы писали:

А>Это просто расширенный пример из книги Б. Страуструпа Язык программирования С++


И хорошо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.