Size: a a a

Compiler Development

2021 March 03

ВМ

Виталий Медоваров... in Compiler Development
Роман Соловьев
Правильно ли я понял, что современные парсеры в случае ошибки - доставляют недостающие символы(как бы)/ не обрабатыают конкретное выражение и идут дальше?
Так как вы описываете делается в craftinginterpreters.com
источник

ВМ

Виталий Медоваров... in Compiler Development
Но там без парсер генераторов обходятся, вместо этого используют ручной рекурсивный спуск, и можно легко решить докуда можно скипать парсинг в случае ошибки
источник

YS

Yaroslav Schekin in Compiler Development
Роман Соловьев
На первых курсах знакомился с mysql, парсер говорил ошибка здесь и показывал выражение целиком)
Так это как раз пример "высокопроизводительного интерпретатора".
Т.е. это совершенно правильное поведение на практике, если нельзя [почти] "бесплатно" сделать лучше.
источник

IK

Ivan Kochurkin in Compiler Development
Anton Shvets
Ура. Наконец-то сделал язык. Это хоть и не компилируемый, а транслируемый в шарп, но тем не менее. Насколько производителен dynamic, это не сильно ударит по производительности?
Ну если вас интересует производительность, то dynamic использовать не стоит.
источник

РС

Роман Соловьев... in Compiler Development
А если подобное пилить, это какой тип?) я не компилятор имею в виду, а именно подобную обработку ошибок
источник

K

Kir in Compiler Development
Роман Соловьев
А если подобное пилить, это какой тип?) я не компилятор имею в виду, а именно подобную обработку ошибок
Это scope check
источник

ВМ

Виталий Медоваров... in Compiler Development
действительно. Это не ошибка синтаксиса уже)
источник

AS

Anton Shvets in Compiler Development
В чем проблема? Чего оно не хочет dynamic читать? Какую дллку надо подключать?
источник

AS

Anton Shvets in Compiler Development
System.Runtime.CompilerServices это дллка?
источник

AS

Anton Shvets in Compiler Development
Все, решил проблему. Подключил все дллки, которые были подключены и в проекте транслятора
источник
2021 March 04

YS

Yaroslav Schekin in Compiler Development
(На всякий случай — задал этот вопрос также в https://t.me/LanguageDev , могу удалить там или здесь, если это offtopic).

Существуют ли сейчас хоть какие-то практические языки (не обязательно именно программирования, можно и разметки и т.п.), в которых несбалансированные структуры — это норма?

Я вот что имею в виду, например:

8 * ( (3 + [4 * 5) / 2] )
Граф синтаксического разбора для которого выглядит, например, так:
    ┌──→ + ─┬─→ 3
   │       │
   │       │
* ──┼──→ 8  ├─→ 4 * 5
   │       │
   │       │
   └──→ / ─┴─→ 2

И если да — чем/как они разбираются и т.д.?
источник

K

Kakadu in Compiler Development
Сильно сомневаюсь. Единственное, где я видел несбалансированные скобки — это смайлики и bra-ket notation из квантовой механики
источник

YS

Yaroslav Schekin in Compiler Development
Kakadu
Сильно сомневаюсь. Единственное, где я видел несбалансированные скобки — это смайлики и bra-ket notation из квантовой механики
Понял, спасибо!
источник

K

Kitsu in Compiler Development
В хаскеле есть оператор $ который напоминает непарную скобку. a $ b $ c <=> a(b(c))
источник

YS

Yaroslav Schekin in Compiler Development
Kitsu
В хаскеле есть оператор $ который напоминает непарную скобку. a $ b $ c <=> a(b(c))
Здесь никакого пересечения подвыражений нет, да и разбирается это тривиально, по идее... я чего-то не вижу?
источник

[

[BRM]White Rabbit in Compiler Development
Kitsu
В хаскеле есть оператор $ который напоминает непарную скобку. a $ b $ c <=> a(b(c))
только вот этот оператор реализован в стд, а не на уровне ключевых слов
источник

K

Kitsu in Compiler Development
Да я и не спорю, что ничего сложного нет и то, что реализован в стд. Вроде в оригинальном запросе про это не было указано
источник

YS

Yaroslav Schekin in Compiler Development
Kitsu
Да я и не спорю, что ничего сложного нет и то, что реализован в стд. Вроде в оригинальном запросе про это не было указано
Но в чём несбалансированность структуры-то? Это аналогично оператору с соотв. приоритетом, нет?
источник

[

[BRM]White Rabbit in Compiler Development
да, 'x' $ 'y' просто применяет 'x' к 'y' с приоритетом 0 (минимальным, ага) и правой ассоциативностью
источник

KR

K R in Compiler Development
Kakadu
Сильно сомневаюсь. Единственное, где я видел несбалансированные скобки — это смайлики и bra-ket notation из квантовой механики
В квантах технически не скобки.

<a|b>
источник