Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Вниз

Парсер текста со скобками (круглыми, фигурными и проч.)   Найти похожие ветки 

 
Mihelson   (2010-10-02 13:02) [0]

Посоветуйте, пожалуйста, парсер для Delphi текста со скобками (круглыми, фигурными и проч.), числами, знаками препинания. Могут быть вложения.


 
Юрий Зотов ©   (2010-10-02 13:08) [1]

А что такое "Delphi текст"?


 
Mihelson   (2010-10-02 13:14) [2]

парсер для Delphi. Парсер текста.


 
Юрий Зотов ©   (2010-10-02 13:34) [3]

То есть, парсер исходного кода на языке Delphi?


 
Mihelson   (2010-10-02 13:38) [4]

Да, парсер, написанный для среды Delphi и способный разбирать текст, состоящий из скобок (круглых, фигурных), чисел, знаков препинания, ASCII-символов. Возможно вложение скобок.


 
Юрий Зотов ©   (2010-10-02 13:41) [5]

Возможно, Dream Scripter?
http://www.sourcecodeonline.com/details/dream_controls__freeware_part_.html

Непонятно, почему особо оговариваются скобки, числа, знаки препинания, вложенность и пр. Язык есть язык, и это - его принадлежности.


 
Mihelson   (2010-10-02 13:43) [6]

Сорри, наверное, неправильно выразился. Не исходного кода, а произвольного текста, состоящего из скобок и т.д.


 
Юрий Зотов ©   (2010-10-02 13:49) [7]


> Mihelson   (02.10.10 13:43) [6]

Рискну предположить, что парсеров ПРОИЗВОЛЬНОГО текста не существует. Парсер - это преобразователь входного текста на ОПРЕДЕЛЕННОМ языке в последовательность токенов. Вот этот ОПРЕДЕЛЕННЫЙ входной язык и надо сначала задать. С помощью БНФ, синтаксических диаграмм, или еще как-то - но он должен быть ЗАДАН.


 
Mihelson   (2010-10-02 13:52) [8]

Да, я тоже так думаю. Уверен, что придется найденный парсер адаптировать для своих целей. Но мне хотя бы что-то для начала иметь, скелет, так сказать. А дальше я с ним сам буду работать.


 
Юрий Зотов ©   (2010-10-02 13:58) [9]

Погуглите на тему Lex & Yacc


 
Andy BitOff ©   (2010-10-02 14:00) [10]

> Mihelson   (02.10.10 13:43) [6]
> произвольного текста, состоящего из скобок

Странный какой-то текст получится - "(()))[[](])[[((((][))([][}{"


 
Юрий Зотов ©   (2010-10-02 14:00) [11]

Но думаю, что начинать в любом случае придется с определения входного языка. В общем-то, это обычно и есть самая сложная часть, и если она выполнена правильно, то сделать парсер уже несложно, даже с нуля.


 
Mihelson   (2010-10-02 14:45) [12]


> Andy BitOff ©   (02.10.10 14:00) [10]
>
> > Mihelson   (02.10.10 13:43) [6]
> > произвольного текста, состоящего из скобок
>
> Странный какой-то текст получится - "(()))[[](])[[((((][))([][}{"


текст, состоящий из скобок (круглых, фигурных), чисел, знаков препинания, ASCII-символов.


 
Юрий Зотов ©   (2010-10-02 18:52) [13]


> Mihelson   (02.10.10 14:45) [12]

Текст "(()))[[](])[[((((][))([][}{" вполне удовлетворяет Вашему определению входного алфавита, поскольку он включает в себя только те символы, которые в этот алфавит входят. То есть, синтаксически он правилен, но вряд ли имеет какой-то смысл.

Возьмите другой текст: "A(,) {} 2"#5

Он под Ваше определение попадает абсолютно, так как состоит именно из "скобок (круглых, фигурных), чисел, знаков препинания, ASCII-символов". Но смысла тоже не имеет.

Теперь Вы понимаете, что начинать все же надо с ТОЧНОГО определения входного языка? Пока его нет, ничего получиться не может - потому что пока его нет, просто не о чем даже и говорить.


 
Petr V. Abramov ©   (2010-10-04 16:58) [14]


> Теперь Вы понимаете, что начинать все же надо с ТОЧНОГО
> определения входного языка?

не, нужно сначала понять, что такое входной язык :)


> Mihelson   (02.10.10 14:45) [12]
>
> текст, состоящий из скобок (круглых, фигурных), чисел, знаков
> препинания, ASCII-символов.

если на текст никаких дригих огрничений не наложено, парсер тривиален: идем по тексту до символа, который не скобка никакого сорта, не число (кстати, что такое число? A12AEF - это число или строчка?), не знак препинания и не ASCII-символ, и говорим, что в этой позиции ошибка. елси дошли до конца файла, говорим: да, классный файл, могу еще такой распарсить. больше сказать нечего, потому что структуры у текста нет.
но скорее всего, структура все-таки есть, и не все файлы "правильные" т.е. ей соответствуют. простейший пример: наверняка подразумевается, что открывающейся фигурной скобке соответсвует закрывающаяся, тоже самое с обычными. если где-то скобка не закрыта, файл признается неверным, плохим, негодным, имеющим неправильную структуру и работа с ним прекращается, пока пользватель не разберется со скобками.
в общем-то всего лишь набор пободных требований к структуре файла и называется входным языком. как его формально описать? да есть куча способов, опиши пока неформально.
а уж по ходу выяснения, является заданный текст ттекстом на входном языке в простейшем случае сами по себе решаются прикладные задачи, превращение его в структуру данных. как это может ни показаться странным.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
2-1286078679
mdel
2010-10-03 08:04
2010.12.26
юникод в delphi7


8-1208678505
Jimmy
2008-04-20 12:01
2010.12.26
Доступ к объектам метафайла.


2-1285874599
faiwer
2010-09-30 23:23
2010.12.26
Главная форма и модальные окна


2-1274640351
vegarulez
2010-05-23 22:45
2010.12.26
Докачка файлов через idhttp.


15-1279457604
Владимир
2010-07-18 16:53
2010.12.26
требуется компонент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский