Парсер

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Парсер — хитросракий алгоритм, который принимает в себя размеченные особым образом данные и их затем обрабатывает определённым образом. Иногда парсер применяется для набивания большой и толстой базы данных, иногда для того, чтобы как бы человекпонятный и удобный код преобразовать в потужное визуальное представление.

Так или иначе парсеры, которые радостно делают парсинг, стали применяться буквально повсеместно.

Описание[править]

Понятие парсера возникло вместе с формализацией теории компиляторов и формальных языков. Джон Бэкус и Питер Наур разработали форму Бэкуса-Наура, которая стала стандартным способом описания контекстно-свободных грамматик. Эта нотация широко использовалась для описания синтаксиса языка ALGOL 60.

Первые практические парсеры появились в компиляторах для языков Fortran и ALGOL. Они нужны были для того, чтобы преобразовывать понятные для человека команды в некоторый код, который затем станет исполняться потужной системой, которая может принимать в себя только машинный код. Но как смогли добиться желаемого? В том великая тайна и смысл.

Парсер обычно работает после лексического анализатора, который разбивает входной текст на токены. Парсер анализирует последовательность токенов, вначале проверяя её соответствие грамматике. Если грамматика в сракотане, то понятно, что лучше бы текст не обрабатывать, все равно выйдет хрень. Большинство парсеров работают с контекстно-свободными грамматиками, описываемыми правилами вида A → α, где A — нетерминал, α — цепочка терминалов и нетерминалов. Такие грамматики весьма и весьма широко применяются, и не просто так.

Алгоритмов парсинга довольно много, они отличаются сложностью и достигаемыми возможностями.

Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++ScalaH и Ё+
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)Тернарный операторUnreal MCPИсходный кодSingle-Page ApplicationGiteaForgejoCephIDEДжуниор
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автоматПроцедурное программированиеПоиск файлов в Unix по содержимомуPetoohФункция активации нейронаПерегрузка операторов в PythonЗерокодинг
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++XenonRecompFuse.jsОптимизацияТестированиеAmbreon866Реверс-инжинирингКроссплатформенностьJSON
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур Пейперт
Прочее++i + ++iДедлайн%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодачХукCurl cffiВибе-кодингFlutterАппликативный оператор
Mouth with tongue.png Ланги – non penis canina, тащемта — он может позволить реализовать многие вещи
НатуральныеАнглийский (Do You Speak ItMiddle EnglishSpeak English or DieАнглицизмы) • Латынь (таки не уд лаялки) • МунспикРунглишСуржик (рекурсия) • ТарашкевицаФранцузскийРусский матРусский лангПлановый языкЕнохианский языкКириллицаПшш-пшш курва-курваБесполезные буквы русского языкаЧеловеческий языкРосийский западнический лангРоссийская локализацияИстинная речьПокаместАмбаЗначимая буква ёРусско-английский суржикОшибка в окончании ться и тсяРОКК ЕБОЛВысоковольтныйAdaëvonЯрослав ЗолотарёвДоколеГомоцацуцаГомословаВторой государственный языкПлеоназмЗапятая перед тиреЎИспанский языкНауатль
ПлановыеLeetLolspeak • «Албанский» • «Боярский» • «Гопотятский» • «Йожиный» • «Онотолица» • «Сибирский» • ЭсперантоЯзыковая модельТоки понаПереименование фильмовУкраинская моваОткинутьсяВаСемиотикаИспитьВакуидадСинонимы к слову «Попа»ПрошаренныйУдарение в слове статуяБароннАбугидаΓλῶσσαχάοςВаларинDà Yǒuနစ်မှန်းШаломDrygioniHastaХаатAlastАмбахหยดРечекрякМон-бирманское письмоАнглийский матАгглютинативные языкиVoice Over Translation
ЖаргонЖаргонКомпьютерныйГеймерский (MMORPGMUDаков) • МестныйМузыкальныйОфенскийХулиганскийНибирийский луркоязБастардизацияКонтр-страйковская письменностьX-джобИзбегание приставки бес-Неприличные прозвищаРасстрельный список фактических ошибокЛуркоязМагическая функция языкаОшибки перевода (Elden Ring)Язык Р'льехаGherЧувашский языкDEPARTMENTALISEDФренУдаление гласныхЭпичная форма словаDeepL
ЛексемыБармаглотБатареяВуглускрГлокая куздраЖе не манж па сис журОбаполРосатыйWНелицеприятныйBattleFieldДолбодолбБлЪПринятьУдарение в слове ременьШпрехенфюрерЛиберальный новоязЭм дашБелорусский языкСинтаксическая конструкцияСосулиФиванский алфавитESLDuolingoГреческий языкЯзык птицРуахВерблядьМясо, просо, колесоАлфавит С'гау КаренБвеНеолуркоязБукваДвойственное числоБы
ПрочееGrammar nazi (Расстрельный список) • /fl/KekekeLorem ipsumQWERTYRussian Reversal • (sic!) • TEHT9Who are you to fucking lecture me?Алфавит Анны-СофииАлфавит ДвачаВ/наГрамматикалияЁИероглифКЛБКосил косой косой косойКуННеприличный жестПилитьПриставкиРукопись ВойничаСанскрипт иероглифамиТипографикаФаллический редукционизмФонетизмШнурки в стаканеЫЭвфемизмЪѢСистема ХепбёрнаЛатинизация кириллических языковИчуньская КомпанияРусский — это прилагательноеКсеноглоссияМногократное повторение словаГрадус неадекватаShitСмешное прочтение английских словПобеда на стартеАзбукаИскажения словСиндром Татсу МаруРазница между британским и американским английскимРпт’рВеликая ИграЛожить
ПереводAll your base are belong to usMisheard lyricsPeacedoorballSquirrel instituteБлджадБуллшитБылинноБыстро, решительно!Герцог мираГуртовщики мышиДвиньте вперёдКузинатраМакаку чешетМашинный переводНадмозгНет путиНогохуйцПокрытияСамка собакиСистема ПоливановаТранслитТяни-толкайОхладите траханьеLolcatПрокатчикиСибирска кыскаПытался прочитать, чуть не вызвал сатануPuzzle EnglishBallonTranslatorНубская песочницаРедиска (жаргонизм)Отвечать за базарКозломордыеКороль МикеллаКризис переводов современных видеоигрГениально
Дефекты речиAmiriteGARLOLI HAET PIZZAO RLY?NO WAIPretty cool guyP. S.PwnedS — как долларАвафА также линиябНОПНЯВонниГыДиалог с собойЕбал её рукаЛец ми спик фром май харт ин инглишМнуМурсикиНевыносимо отвратительные словаНяОпечаткаПаукиПиздоблядское мудоёбищеПозязяСиндром ТуреттаСловесный поносСомаСрукСцукоТься/тсяЧерномырдинШизофазияНетуИхнийТащемтаАлсоЁжАдикНа'йахКакое-тованиеАнтиКотострофаКотоклизмаВадукХаракБеспочвенноВсеЯлдиСкоммуниздилУтопатьАйЭвоN-словоДиграфПисонQîralКонтритумГоловеньОтрицаниеМуховорАстаАштАастаМетонимияYatmaka-chkaГорнийΚότοςХумаTasik