Какой смысл в Вашем рефакторинге, который не решает задач рефакторинга? Как в анекдоте — зато дёшево ж?
Вы говорите, что терминологический спор Вас не интересует, но, по факту, этот диалог в значительной степени вокруг этого и строится. Типичный парсер для многих языков требует для своей работы анализа объявлений и нет никакого смысла выкидывать эту часть для того, чтобы сделать это потом в отдельном семантическом анализаторе.
Парсер устанавливает связь использования объявления и его декларации. Пожалуйста, не увиливайте от вопроса, прикрываясь невозможностью в случаях, о которых никто не спрашивал
Почему уменьшит?
Tree никак не решает проблему проверки корректности составленной конструкции и следовательно разбор выражения делать всё равно придётся и его нельзя сводить к «дерево уже построено»
Текстовый формат это тоже не более, чем список строк и не более, чем список символов, и что?
Не обязательно выражать БНФ абсолютно точно, но это всё равно будет лучше, чем выражать его так ложно. Можно и расширить БНФ специальный понятием, позволяющим выразить всё как надо.
Почему из-за несогласия с мнением человека люди считают приемлемым использовать механизм, изначально созданный для избавления от токсичности, а не для подавления инакомыслия? И почему нравится этим бравировать?
И таким образом вы можете легко рефакторить любые языки, основанные на tree формате, без поиска для каждого языка отдельного парсера и разбирательства с тем, как у него происходит работа с AST.
Есть программа на неком языке, в которой указанный в примере auth не только объявлен, но и упоминается в некотором контексте, а, возможно, что он ещё и не уникален по имени, но уникален по контексту. Каким образом представленный механизм позволит легко это изменить?
Подозреваю, что Вы уже нашли на чём, так как теперь работает сносно, а в первый раз ломалось почти на всём
Попробовал, но он ломается даже в зависимости от переводов строк. Толком ничего не могу получить. В лучшем случае выдаёт XML же, но испорченный
И «undexpected» — это ошибка в выводе ошибок :)
Какой смысл в Вашем рефакторинге, который не решает задач рефакторинга? Как в анекдоте — зато дёшево ж?
Вы говорите, что терминологический спор Вас не интересует, но, по факту, этот диалог в значительной степени вокруг этого и строится. Типичный парсер для многих языков требует для своей работы анализа объявлений и нет никакого смысла выкидывать эту часть для того, чтобы сделать это потом в отдельном семантическом анализаторе.
И судя по средней заплюсованности его статей, включая ту, на которую ссылался mwizard — нет, не достал :)
Насколько? У Вас есть полный парсер для SQL-подобного языка, но выраженного через tree?
Tree никак не решает проблему проверки корректности составленной конструкции и следовательно разбор выражения делать всё равно придётся и его нельзя сводить к «дерево уже построено»
type Google = { auth string }
a: Google
a.auth = "Bam"
Не обязательно выражать БНФ абсолютно точно, но это всё равно будет лучше, чем выражать его так ложно. Можно и расширить БНФ специальный понятием, позволяющим выразить всё как надо.