Size: a a a

Compiler Development

2020 November 26

f

fldlg2 in Compiler Development
Yaroslav Schekin
Эээ... а что используется как вход для генераторов парсеров (не варианты BNF ли, обычно)?
А ещё байты, биты и т.д. 😊
источник

f

fldlg2 in Compiler Development
Зря я вспомнил LISP (то, что мне близко сейчас), а не https://ru.wikipedia.org/wiki/ColorForth (который мне не близок).
источник

f

fldlg2 in Compiler Development
Задавил бы авторитетом Мура 😊
источник

YS

Yaroslav Schekin in Compiler Development
fldlg2
А ещё байты, биты и т.д. 😊
Да. И это тоже не относится к обсуждаемой теме (почему использование генераторов парсеров, как указано в обсуждаемой статье (цитата: "Странно было бы использовать программу-генератор для реализации разбора кода на Forth, Tcl или Lisp."), для разбора кода, написанного на этих языках, действительно практически бесполезно).
источник

f

fldlg2 in Compiler Development
Очень сложно договариваться о терминологии, когда личные предпочтения не считаются субъективными, а массовый опыт коллег игнорируется, извините.
источник

f

fldlg2 in Compiler Development
Yaroslav Schekin
Да. И это тоже не относится к обсуждаемой теме (почему использование генераторов парсеров, как указано в обсуждаемой статье (цитата: "Странно было бы использовать программу-генератор для реализации разбора кода на Forth, Tcl или Lisp."), для разбора кода, написанного на этих языках, действительно практически бесполезно).
Хорошо, давайте продолжим в том же направлении. Программы-генераторы не обязательно имеют отношение к BNF. Например, регулярные выражения с backreferences, которые могут быть использованы для подсветки синтаксиса, не выдажаются через BNF.
источник

YS

Yaroslav Schekin in Compiler Development
fldlg2
Хорошо, давайте продолжим в том же направлении. Программы-генераторы не обязательно имеют отношение к BNF. Например, регулярные выражения с backreferences, которые могут быть использованы для подсветки синтаксиса, не выдажаются через BNF.
> Хорошо, давайте продолжим в том же направлении.

Я не понял связи написанного далее с обсуждаемой темой. В чём она?

По написанному:

> Например, регулярные выражения с backreferences

Т.е. те самые, которые (никогда?) не используются в генераторах parsers (lexers), да? ;)

> не выдажаются через BNF.

Ну да, потому что это — не контекстно-свободные конструкции.
источник

M

MrSmith in Compiler Development
Я вполне понимаю о чем @fldlg2 он говорит о том, что нет такого принципиального ограничения на входной формат для генератора парсеров. Kaitai Struct, n triplet, bnf
источник

PS

Peter Sovietov in Compiler Development
Roman Elizarov
JFYI, и javac и Kotlin используют написанный «руками» рекурсивный спуск.
Спасибо, добавил!
источник

f

fldlg2 in Compiler Development
Yaroslav Schekin
> Хорошо, давайте продолжим в том же направлении.

Я не понял связи написанного далее с обсуждаемой темой. В чём она?

По написанному:

> Например, регулярные выражения с backreferences

Т.е. те самые, которые (никогда?) не используются в генераторах parsers (lexers), да? ;)

> не выдажаются через BNF.

Ну да, потому что это — не контекстно-свободные конструкции.
Вольный трансрипт того, что обсуждал я:

— Приведите пример полезного использования генераторов для парсера языков с вырожденным синтаксисом
— Подсветка синтаксиса

— Подстветка синтаксиса в данном случае бесполезна
— Whom how

— Вы используете BNF для подсветки синтаксиса в LISP?
— Нет

— Тогда генератор бесполезен, т.к. он основан на BNF
— Это не так
источник

PS

Peter Sovietov in Compiler Development
Всем спасибо за комментарии, текст обновлен :)
источник

s

suhr in Compiler Development
fldlg2
Вольный трансрипт того, что обсуждал я:

— Приведите пример полезного использования генераторов для парсера языков с вырожденным синтаксисом
— Подсветка синтаксиса

— Подстветка синтаксиса в данном случае бесполезна
— Whom how

— Вы используете BNF для подсветки синтаксиса в LISP?
— Нет

— Тогда генератор бесполезен, т.к. он основан на BNF
— Это не так
> — Приведите пример полезного использования генераторов для парсера языков с вырожденным синтаксисом

Парсинг литералов и скобок в лиспе.
источник

s

suhr in Compiler Development
Хотя LR тут избыточен, комбинаторов более чем достаточно.
источник

f

fldlg2 in Compiler Development
Регулярные выражения с backreferences можно использовать для подсветки синтаксиса в том же HTML/XML/SGML с произвольными названиями тэгов. Да, это не регулярные выражения по сути. В редакторах типа Vim для подсветки синтаксиса используется не единственное регулярное выражение, а рекурсивный парсер, равномощный или более мощный, чем парсер для КСГ. Я не верблюд. 😊
источник

YS

Yaroslav Schekin in Compiler Development
fldlg2
Вольный трансрипт того, что обсуждал я:

— Приведите пример полезного использования генераторов для парсера языков с вырожденным синтаксисом
— Подсветка синтаксиса

— Подстветка синтаксиса в данном случае бесполезна
— Whom how

— Вы используете BNF для подсветки синтаксиса в LISP?
— Нет

— Тогда генератор бесполезен, т.к. он основан на BNF
— Это не так
> — Подстветка синтаксиса в данном случае бесполезна
> — Whom how

Т.е. Вы утверждаете, что подсветка синтаксиса, основанная исключительно на BNF, практически полезна... но сами её не используете? ;)

Я имел в виду следующее: утверждать, что грамматики этих языков практически полезны в реальных задачах — всё равно что утверждать, что brainfuck действительно полезен для написания "настоящих" программ.
источник

f

fldlg2 in Compiler Development
suhr
> — Приведите пример полезного использования генераторов для парсера языков с вырожденным синтаксисом

Парсинг литералов и скобок в лиспе.
и ещё массы вещей из словаря DSL конкретного программиста.
источник

f

fldlg2 in Compiler Development
Yaroslav Schekin
> — Подстветка синтаксиса в данном случае бесполезна
> — Whom how

Т.е. Вы утверждаете, что подсветка синтаксиса, основанная исключительно на BNF, практически полезна... но сами её не используете? ;)

Я имел в виду следующее: утверждать, что грамматики этих языков практически полезны в реальных задачах — всё равно что утверждать, что brainfuck действительно полезен для написания "настоящих" программ.
Я никогда ничего не утверждал про подстветку синтаксиса, основанную на BNF. Более того, я третий раз пишу это предложение 😊
источник

YS

Yaroslav Schekin in Compiler Development
Peter Sovietov
Всем спасибо за комментарии, текст обновлен :)
Ну вот, "потеряли" Tcl, обидно. ;(
источник

PS

Peter Sovietov in Compiler Development
Yaroslav Schekin
Ну вот, "потеряли" Tcl, обидно. ;(
Увы. Судя по комментариям выше, о его устройстве мало кто знает :)
источник

VK

Vladimir Kazanov in Compiler Development
Peter Sovietov
Увы. Судя по комментариям выше, о его устройстве мало кто знает :)
вы про заметку о рекурсивном спуске?
источник