Форум программистов, компьютерный форум CyberForum.ru

Анализ текста - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
stark91
1 / 1 / 0
Регистрация: 07.05.2010
Сообщений: 55
24.05.2011, 19:15     Анализ текста #1
Нужно написать программу выделяющую последовательности букв и числа из произвольного текста.
Программа должно читать из входного файла по одному символу и управляться с помощью таблиц.

пример:

Input:
Test 2.2 is a number.

Output:
Test - word
2.2 - number
is - word
a - word
number - word

Первое с чего начал это естественно гугл. Гуглил по запросу "лексический анализатор",но ничего про таблицы не смог нагуглить.
Как я понял в таблице должно быть описание типа данных: word, number.
Есть какие-нибудь идеи?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.05.2011, 20:22     Анализ текста #2
первое, что пришло в голову - выделять слова из строки, а потом проверять на характер символов этого слова. Если в нем встречаются только цифры или цифры и ".", то это число. Если только буквы без цифр - слова... Как - то так...
В данной задаче, я пользовался бы множеством ( set )
stark91
1 / 1 / 0
Регистрация: 07.05.2010
Сообщений: 55
24.05.2011, 21:39  [ТС]     Анализ текста #3
А таблицы тогда причем? Нужно делать задание используя таблицы! Но инфы про них я не нашел.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
24.05.2011, 21:41     Анализ текста #4
Ну дак вы выделяете из текста лексемы, определяя , что вам встретилось, число или слово, и помещаете это в таблицу, где у вас каждой лексеме будет сопоставляться её тип.
stark91
1 / 1 / 0
Регистрация: 07.05.2010
Сообщений: 55
24.05.2011, 22:10  [ТС]     Анализ текста #5
Так получается что таблица нужна только для хранения лексем? Если выходные данные должны быть записаны в файл, то тогда смысл ее размещения в этой таблице?
Или я что-то не так понял?
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
24.05.2011, 22:19     Анализ текста #6
Я вижу только такое применение таблицы в данном случае. Представьте, что после того, как вы разобрали текст, вы еще что-то хотите поделать с этими словами, числами, это будет намного удобнее делать, если будет таблица, в таком случае смысл появится, а в данной задаче, видимо, требуется только лишь показать, что вы понимаете, как это делается.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.05.2011, 23:08     Анализ текста #7
А можно просто использовать класс string (STL) и решить любую задачу без использования массивов - экономичней!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.05.2011, 23:31     Анализ текста #8
Mиxaил, Класс string - это просто обертка строки Си-стиля(масива символов), так что строка - это всегда, хоть иногда и не явно, масив.
stark91
1 / 1 / 0
Регистрация: 07.05.2010
Сообщений: 55
24.05.2011, 23:42  [ТС]     Анализ текста #9
Я извиняюсь, недописал задание.

Написать программу, использующую механизм управления при помощи таблиц (управление осуществляется данными!). Необходимо во входном потоке данных выделить заранее предопределенные лексемы (набор лексем для выделения получить у преподавателя). Входные данные: текстовый файл, содержащий фрагмент текста. Выходные данные: текстовый файл с распознанными лексемами.
В исходном файле лексемы отделяются друг от друга разделителями.
Ограничения, накладываемые на реализацию: программа может запоминать только текущее состояние и последний введенный символ. Не должны использоваться никакие дополнительные массивы для хранения введенных данных.

Тут указано что таблица должна как то управлять данными.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 08:53     Анализ текста
Еще ссылки по теме:

Частотный анализ текста C++
Лексический и синтаксический анализ текста C++
C++ Анализ текста

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.05.2011, 08:53     Анализ текста #10
Цитата Сообщение от stark91
Гуглил по запросу "лексический анализатор",но ничего про таблицы не смог нагуглить.
wiki. конечный автомат
там есть таблица переходов
символ -> состояние
Yandex
Объявления
25.05.2011, 08:53     Анализ текста
Ответ Создать тему
Опции темы

Текущее время: 22:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru