Re: Помогите с Ocaml кто чем сможет,как написать...
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 25.04.07 19:37
Оценка:
Здравствуйте, MacDed, Вы писали:

MD>Нужно написать интерпритатор мат выражений на Ocaml ,есть знаки : '+','-','*','/' т.е.

MD>чтоб такие вещи обрабатывал
MD> (((1+1)+(4-5))*3+14/3)/3-43+(53+61)
MD>ну как я это задание понимаю надо на вход такую вот строчку подать
MD>и распихать её значения в список (list)

А зачем в список? AST на базе алгебраических типов, т.е. datatype, рулит.

MD>все скобочки,знаки и числа от 0-9 спокойно в такой лист влезают как символы

MD>Но числа типа 14,53... и общим словом более 1ого знака в char не лезут

Ну так задай что-то вроде (OCaml не знаю, так что пример на родственном StandardML):

datatype Expr = RealLiteral of real | Sum of Expr*Expr | Product of Expr*Expr;


а потом при помощи паттерн-матчинга без проблем эту штуковину интерпретируешь.

MD>3)Если кто может посоветовать какие нибудь идеи по реализации хорошие,пишите буду рад


У меня вот лежит реализация StandardML, называется MoscowML. В ней есть встроенные yacc/lex. Выглядит (за счёт функционального стиля) гораздо симпатичнее, чем аналогичная версия для C. Наверняка, что-то подобное имеется для OCaml. Так можно либо непосредственно интерпретатор сделать, либо вначале получить AST, а потом пропускать его через evaluator (так универсальнее).
... << RSDN@Home 1.2.0 alpha rev. 672>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.