+ Ответить в теме
Показано с 1 по 11 из 11

Тема: Интерпретатор команд

  1. #1
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    Question Интерпретатор команд

    Может есть у кого опыт, инфа, доки по сабжу ? поделитесь плизз ...
    как лучше / быстрее / проще замутить сабж ... а то тут начал , жрет памяти много и тормозит ....

  2. #2
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию

    так...в чем суть...вводишь строку, потом проверяешь первое слово на возможность совпадения с заданным списком команд ...если такое совпадение было, то выполняем нужную процедуру...иначе - неизвестная команда
    поидее тормозить сильно не должно, если конечно у тя не 1000 команд
    Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.

  3. #3
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    я понял почему у меня тормозило - неправильно использовал ТСтрингЛист .... тень всё ок... а как мне сделать всякие там IfThenElse и ForToDo ?

  4. #4
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от _jf_
    я понял почему у меня тормозило - неправильно использовал ТСтрингЛист .... тень всё ок... а как мне сделать всякие там IfThenElse и ForToDo ?
    Подчитать теорию ;) ТАК интерпретаторы/компиляторы не пишут. Разумным вариантом например явлеться использование спецязыков типа bison/yacc. Для данной задачи декларативное программирование вполне себе рулит.

  5. #5
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    аффигеть ..... ну "а как мне сделать то-то , то-то"-"подчитать теорию" Ну научи меня писать интерпретаторы (компиляторы не надо и про спец языки не надо), теорию расскажи, расскажи про декларированное программирование , ссылками конкретными поделись ... ну хоть что нибудь !
    ЗЫ
    имхо равносильно послать в яндекс (много в яндексе просидел, но ничего толкового не нашёл !)

  6. #6
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от _jf_
    аффигеть ..... ну "а как мне сделать то-то , то-то"-"подчитать теорию" Ну научи меня писать интерпретаторы (компиляторы не надо и про спец языки не надо), теорию расскажи, расскажи про декларированное программирование , ссылками конкретными поделись ... ну хоть что нибудь !
    ЗЫ
    имхо равносильно послать в яндекс (много в яндексе просидел, но ничего толкового не нашёл !)
    Ты, однака, простооой ;) Ты просто пойми - создание хотябы даже интерпретаторов - это _РЕАЛЬНО_ одна из самых сложных существующих задачь. Да, есть лобовой путь, которым ты собсна и начал идти - парсить все ручками - но ведет в тупик.
    Если очень поднатужиться, для не очень сложного язычка еще можно что-то сделать, но это будет здоровое и дико запутанное глюковище. Посему, используют более другие пути - в частности, декларативное программирование. Его суть - в том, что ты пишешь не программу которая решает твою задачу, а программу, которая пишет программу которая решает твою задачу ;) Ну, это ессно очень упрощенное изложение. Но зато очень меморабельное. Но чтобы пользоваться средствами специально созданными для этой цели ты должен хорошо знать саму теорию компиляторов/интерпретаторов. Такие вещи как грамматика Бэкуса-Науэра или, например, контекстно-зависимая граматика должны отлетать отзубно. Учти, один фиг, дело это весьма мозгонапряжное. особливо по началу.
    Попробуй почитать для начала хотябы http://www.megaupload.com/?d=HSIYSVV3 или http://rapidshare.de/files/6936486/S...s.ru_.rar.html
    (9mb) - (это один и тот же файл с разных хостингов) Но не ожидай что все тайны раскроються так сразу. После этой книги ты будешь иметь хоть какое-то представление о теории.

  7. #7
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    да мне нафиг не нужно супер мощное средство ! Простой интрепретатор команд, с поддержкой нелинейниых алгоритмов. Усложнять его в моём проекте нету смысла и парсить лучше ручками ! ИМХО для великих целей лучше юзать какой нить уже готовый обрботчик типа TCL , Perl и т.п.. в конце то концов ...
    Мне по идее нужен простой текстовый парсер , нежели супер теория по построению компиляторов
    ЗЫ а откуда у тебя такие знания о декларированном программировании и т.п. ?

  8. #8
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от _jf_
    да мне нафиг не нужно супер мощное средство ! Простой интрепретатор команд, с поддержкой нелинейниых алгоритмов. Усложнять его в моём проекте нету смысла и парсить лучше ручками ! ИМХО для великих целей лучше юзать какой нить уже готовый обрботчик типа TCL , Perl и т.п.. в конце то концов ...
    Мне по идее нужен простой текстовый парсер , нежели супер теория по построению компиляторов
    В том-то и проблема, что простых парсеров не бывает. У тебя два выхода - или таки учить теорию, или интегрировать например lua туда. Учитывая, что lua создавался именно для этого - особых проблем быть не должно. Интеграция tcl/перл - несколько пахнет извратом. Имхо.
    Цитата Сообщение от _jf_
    ЗЫ а откуда у тебя такие знания о декларированном программировании и т.п. ?
    Дак ыть. Книжки умные читаем-c :cool: ;)
    К тому же, что не говори, а *nix системы по дефолту представляют собой среду для разработки, причем - достаточно накрученную. Жить среди них - и не научиться всем этим пользоваться - или хотябы не узнать что это есть такое - сложно. *nix коммунити в среднем намного продвинутей. Что есть большой и толстый плюс. Даже если бы у *nix небыло других приемуществ - их бы стоило юзать только из-за этого.

  9. #9
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    Цитата Сообщение от aSj
    В том-то и проблема, что простых парсеров не бывает.
    что ты понимаешь под простыс парсером ? вот простой парсер на Delphi :
    var script:TStringList;
    begin
    script:=TStringList.Create;
    script.loadfromfile('script.txt');
    if script[0]='beep' then beep;
    script.free;
    end;
    Ну чем не парсер ?

    Цитата Сообщение от aSj
    У тебя два выхода - или таки учить теорию, или интегрировать например lua туда. Учитывая, что lua создавался именно для этого - особых проблем быть не должно. Интеграция tcl/перл - несколько пахнет извратом. Имхо.
    tcl/perl такойже изврат как LUA имхо.

  10. #10
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от _jf_
    что ты понимаешь под простыс парсером ? вот простой парсер на Delphi :
    var script:TStringList;
    begin
    script:=TStringList.Create;
    script.loadfromfile('script.txt');
    if script[0]='beep' then beep;
    script.free;
    end;
    Ну чем не парсер ?
    Ладно, поправлюсь - простых Тьюринг-полных/ достататочно близких к Тьюринг-полным чтобы быть _РЕАЛЬНО_ полезными не бывает. ;)
    Кстати, если хочешь посмотерть сырцы более-менее простенького но тем не менее - неплохого интерпретатора, можешь глянуть на gnu-сный bc из *nix-like. Это нечто вроде комстрокового калькулятора. Но он практически Тьюринг-полный, тобишь - циклы/условные операторы в нем таки есть. Сорсы весят всего 600kb (распакованные) из которых килобайт 150-200 эта всякая фигня типа документации и makefile-ов.
    Хотя, в общем-то сорсы lua-интерпретатора весят не намного больше.
    Вообще говоря, он достаточно полезная штука, я им пользуюсь регулярно. Все гуи-калькуляторы сакс (по крайней мере, которые я видел). Задачи близкой сложности к тем которые я решаю на bc можно делать
    разве что на к-нить табличном процессоре а-ля excel, но там это получаеться намного медленней и геморройней. Да и вообще, в большинстве случаев excel - это overkill.
    Цитата Сообщение от _jf_
    tcl/perl такойже изврат как LUA имхо.
    ...и вообще, все на свете изврат ;)
    Просто, lua хотябы изначально создавался для интеграции в разные приложения.
    И, по сути он и распространяеться как lgpl-библиотека. Инлюды там весят всего килобайт 20-30, документация побольше, килобайт 150 plain-text. В общем, за вечер вполне можно разобраться.
    С TCL/perl придеться помучиться побольше. Хотя, можно например просто предоставить некий интерфейс к твоей программе - ну, например, банальный вариант - через сокет/другой IPC, а там уж - кто на чем хочет, тот пусть на том и лепит. Ну или еще более простой вариант с плагинами.

  11. #11
    Новичок DigiUser кто это?
    Регистрация
    09.04.2006
    Сообщений
    1
    Поблагодарил(а)
    0
    Получено благодарностей: 0 (сообщений: 0).

    По умолчанию

    А как же теория конечных автоматов?..
    Многие говорят (они, конечно ошибаются), что КА нужны только для разбора текста - в xml/компиляторах и т.п.
    Ты думаешь, я снова про теорию говорю? Отнюдь, КА - это оченб просто!
    Google тебе поможет...
    Последний раз редактировалось DigiUser; 09.04.2006 в 13:26.

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.