Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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-символ, и говорим, что в этой позиции ошибка. елси дошли до конца файла, говорим: да, классный файл, могу еще такой распарсить. больше сказать нечего, потому что структуры у текста нет.
но скорее всего, структура все-таки есть, и не все файлы "правильные" т.е. ей соответствуют. простейший пример: наверняка подразумевается, что открывающейся фигурной скобке соответсвует закрывающаяся, тоже самое с обычными. если где-то скобка не закрыта, файл признается неверным, плохим, негодным, имеющим неправильную структуру и работа с ним прекращается, пока пользватель не разберется со скобками.
в общем-то всего лишь набор пободных требований к структуре файла и называется входным языком. как его формально описать? да есть куча способов, опиши пока неформально.
а уж по ходу выяснения, является заданный текст ттекстом на входном языке в простейшем случае сами по себе решаются прикладные задачи, превращение его в структуру данных. как это может ни показаться странным.




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




Наверх





Память: 0.75 MB
Время: 0.033 c
2-1285944015      Первокурсница         2010-10-01 18:40  2010.12.26  
Экспортировать отчёт из Delphi в MsWord,дублировать запрос в Lbl


4-1243039481      Warner                2009-05-23 04:44  2010.12.26  
Эмулирование нажатия комбинации клавиш CTRL+<стрелка>


2-1285840973      Рома                  2010-09-30 14:02  2010.12.26  
idhttp


2-1285973896      Ghost del vonte       2010-10-02 02:58  2010.12.26  
Графика


15-1284541924     KSergey               2010-09-15 13:12  2010.12.26  
RDP через WEB