|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.11.2017, 19:56 | #1 |
Новичок
Джуниор
Регистрация: 03.11.2017
Сообщений: 3
|
Кол-во идентификаторов
Здравствуйте. Нужно написать программу на чистом Си, которая в коде на Си будет считать кол-во идентификаторов. При написании возникают некоторые исключения(ключевые слова для объявления идентификаторов,int, char и т.д., могут быть, например, в кавычках, или идентификаторы функций могут повторяться при объявлении и определении). Не знаю, как лучше сделать.
|
03.11.2017, 20:47 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Читайте как делаются лексические анализаторы, выбирайте наиболее понравившийся способ и на основе него ищите лексемы-идентификаторы и считайте их.
|
03.11.2017, 20:57 | #3 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Тогда печаль, читайте книгу драконов или другие материалы отсюда https://stackoverflow.com/questions/...ite-a-compiler https://meta.stackexchange.com/quest...on-book-please Если б не на чистом С, то я б взял какую-нибудь библиотеку для генерации парсера из грамматики типа ANTLR.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
03.11.2017, 21:06 | #4 |
Новичок
Джуниор
Регистрация: 03.11.2017
Сообщений: 3
|
Лексические анализаторы? Я мельком читал про них. Одна из ступеней создания компиляторов и интерпретаторов. Однако я не думал обращаться к подобной литературе, ибо фраза "лексический анализатор" встречается в основном только в подобной литературе...
|
03.11.2017, 21:13 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
так вам и нужны первые ступени компилятора.
Лексер, парсер.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
03.11.2017, 21:23 | #6 |
Новичок
Джуниор
Регистрация: 03.11.2017
Сообщений: 3
|
Забавно. Вообще-то, это "простенькое" задание из лабораторной... Я не думал о рассмотрении создания чего-то вроде парсера. А Вы так... Навскидку, можете набросать какой-нибудь алгоритм или конкретно что-то посоветовать из литературы? А то времени очень мало.
|
03.11.2017, 22:34 | #7 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
https://en.wikipedia.org/wiki/Lexical_analysis |
|
04.11.2017, 22:51 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Ну, раз лаба, то как вариант: через strtok делить всё на токены без разбора, а дальше уже проверять. Если токен - это int, char и что еще захотите добавить - значит счётчик не меняем. Если токен начинается с кавычки, значит строковая константа и не считается. Если atoi даёт число, значит числовая константа. В остальных случаях значит у нас идентификатор. Идентификаторы вот придётся как-то хранить, чтобы они не дублировались. Хэш-таблица, множество или что под это взять - смотрите сами. Можно и просто в массив совать и перебором искать идентификатор. В конечном итоге соответственно просто нужно вывести количество значений в коллекции.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Конечный автомат (распознавание идентификаторов) | thearthurio | Помощь студентам | 6 | 08.02.2017 16:07 |
Проблема с обьявлением идентификаторов в С++ | Faraon9 | Помощь студентам | 12 | 12.12.2012 00:06 |
Организация таблиц идентификаторов | Artemka89 | Общие вопросы C/C++ | 0 | 17.05.2010 01:07 |
Организация таблицы идентификаторов | freez89 | Помощь студентам | 1 | 06.04.2010 00:46 |
Найти кол-во целых чисел в первой последовательности и кол-во нечетных во второй. | DjDeniels-61 | Помощь студентам | 7 | 28.06.2009 13:04 |