Что такое разбор в терминах, которые понял бы новый программист? [закрытый]
Я студент колледжа, получающий степень по информатике. Многие из моих сокурсников действительно не очень много программировали. Они выполнили свои классные задания, но давайте будем честными здесь, эти вопросы действительно не учат вас программировать.
У меня было несколько других студентов, которые задавали мне вопросы о том, как анализировать вещи, и я никогда не уверен, как объяснить им это. Лучше всего начать просто идти строка за строкой, ища подстроки, или просто дать им более сложная лекция об использовании правильного лексического анализа и т. д. чтобы создавать токены, использовать BNF и все остальное? Они никогда не понимают этого, когда я пытаюсь объяснить это.
каков наилучший подход, чтобы объяснить это, не путая их или не препятствуя им на самом деле пытаться.
8 ответов:
Я бы объяснил разбор как процесс превращения каких-то данных в другой вид данных.
например, поворачивая
":Nick!User@Host PRIVMSG #channel :Hello!"
в (C)
struct irc_line { char *nick; char *user; char *host; char *command; char **arguments; char *message; } sample = { "Nick", "User", "Host", "PRIVMSG", { "#channel" }, "Hello!" }
анализ - это процесс анализа текста, составленного из последовательности лексем для определения его грамматической структуры по отношению к заданной (более или менее) формальной грамматике.
затем синтаксический анализатор строит структуру данных на основе маркеров. Эта структура данных может быть использована компилятором, интерпретатором или переводчиком для создания исполняемой программы или библиотеки.
alt-текст http://upload.wikimedia.org/wikipedia/en/a/a9/Parser_Flow.gif
Если бы я дал вам английское предложение и попросил вас разбить предложение на его части речи (существительные, глаголы и т. д.), вы бы разбирали предложение.
Это самое простое объяснение разбора, которое я могу придумать.
тем не менее, разбор является нетривиальной вычислительной задачей. Вы должны начать с простых примеров, и работать ваш путь до более сложных.
что такое парсинг?
в информатике разбор-это процесс анализа текста, чтобы определить, принадлежит ли он к определенному языку или нет (т. е. синтаксически допустимо для грамматики этого языка). Это неофициальное название синтаксический анализ
пусть они попробуют написать программу, которая может вычислять произвольные простые арифметические выражения. Это простая проблема для понимания, но по мере того, как вы начинаете углубляться в нее, многие базовые разборы начинают иметь смысл.
разбор заключается в чтении данных в одном формате, так что вы можете использовать его для ваших нужд.
Я думаю, что вы должны научить их думать. Итак, это самый простой способ, который я могу придумать, чтобы объяснить разбор для кого-то нового в этой концепции.
Как правило, мы пытаемся анализировать данные по одной строке за раз, потому что обычно людям легче думать таким образом, разделяя и побеждая, а также легче кодировать.
мы вызываем поле для каждого минимум неразличимых данных. Имя-это поле, возраст-другое поле, а фамилия-другое поле. Например.
в строке, мы можем иметь различные поля. Чтобы различать их, мы можем разделять поля разделителями или максимальной длиной, назначенной каждому полю.
например: Разделением полей запятыми
Пол, 20, Джонс
или пробелом (имя может иметь 20 букв максимум, возраст до 3 цифр, Джонс до 20 письма)
пол 020Jones
любое из предшествующих полей называется записью.
чтобы отделить запись поля с разделителями, нам нужно разделить запись. Точка будет достаточно (хотя вы знаете, что вы можете применить CR/LF).
список может быть:
Майкл, 39, Джордан.Шакил,40,О'Нил.Леброн,24,Джеймс.
или с CR / LF
Майкл, 39, Джордан
Шакил,40,О'Нил
Леброн,24,Джеймсвы можете сказать, что они перечисляют 10 игроков nba (или nlf), которые им нравятся. Затем они должны ввести их в соответствии с форматом. Затем сделайте программу для ее разбора и отображения каждой записи. Одна группа, может сделать список в формате через запятую и программу для разбора списка в формате фиксированного размера, и наоборот.
в лингвистике, чтобы разделить язык на небольшие компоненты, которые могут быть проанализированы. Например, разбор этого предложения будет включать в себя разделение его на слова и фразы и определение типа каждого компонента (например,глагола, прилагательного или существительного).
разбор является очень важной частью многих дисциплин информатики. Например, компиляторы должны анализировать исходный код, чтобы иметь возможность перевести его в объектный код. Аналогично, любое приложение, обрабатывающее сложные команды, должно быть способно для разбора команд. Это включает в себя практически все приложения конечного пользователя.
разбор часто делится на лексический анализ и семантический разбор. Лексический анализ концентрируется на разделении строк на компоненты, называемые токенами, на основе пунктуации и других ключей. Семантический разбор затем пытается определить значение строки.
разбор для меня-это разбиение чего-то на значимые части... использование определяемого или предопределенного известного, общего набора определений деталей.
для языков программирования были бы ключевые части, используемые последовательности пунктуации...
для тыквенного пирога может быть что-то вроде корочки, начинки и начинки.
для письменных языков может быть, что такое слово, предложение, что такое глагол...
для разговорных языков это может быть тон, громкость, настроение, подтекст, эмоции, контекст
синтаксический анализ (а также здравый смысл в конце концов) сказал бы, если то, что вы анализируете, является pumpkinpie или языком программирования. У него есть корочка? ну, может быть, это тыквенный пудинг или, возможно, разговорный язык !
одна вещь, чтобы отметить о разборе вещи, как правило, есть много способов разбить вещи на части.
например, вы можете разбить тыквенный пирог, отрезая его от центра к край или снизу вверх или с совком, чтобы получить начинку или с помощью кувалды или есть его.
и то, как вы разбираете вещи, определит, будет ли что-то делать с этими частями легко или трудно.
в мире "компьютерных языков" существуют общие способы анализа исходного кода текста. Эти общие методы (алгоритмы) имеют названия или имена. Поиск в Интернете общих методов / имен для способов анализа языков. Википедия может помочь в этом рассматривать.
простое объяснение: синтаксический анализ разбивает блок данных на более мелкие части (токены), следуя набору правил (например, используя разделители), чтобы эти данные можно было обрабатывать по частям (управлять, анализировать, интерпретировать, передавать, ets).
примеры: многие приложения (например, электронные таблицы) используют формат CSV (значения, разделенные запятыми) для импорта и экспорта данных. Формат CSV позволяет приложениям обрабатывать эти данные с помощью специальный парсер. Веб-браузеры имеют специальные Парсеры для HTML и CSS файлов. Парсеры JSON существуют. Все специальные форматы файлов должны иметь некоторые Парсеры, разработанные специально для них.