Size: a a a

Compiler Development

2020 November 27

IK

Ivan Kochurkin in Compiler Development
Для отдельного лексера и парсера импорт не нужен - нужно использовать строчку options { tokenVocab=LexerName; } внутри парсера. LexerName - имя лексера, который располагается в другом файле и начинается со строчки lexer grammar LexerName;
источник

IK

Ivan Kochurkin in Compiler Development
А парсер должен начинаться со строчки parser grammar ParserName;
источник

L

Lamest in Compiler Development
Ivan Kochurkin
Для отдельного лексера и парсера импорт не нужен - нужно использовать строчку options { tokenVocab=LexerName; } внутри парсера. LexerName - имя лексера, который располагается в другом файле и начинается со строчки lexer grammar LexerName;
вот оно.
источник

L

Lamest in Compiler Development
а фрагменты в парсере нельзя использовать?
источник

IK

Ivan Kochurkin in Compiler Development
Импорт нужно использовать для случаев, когда один лексер использует токены из другого лексера, я на практике такое вообще пока не юзал.
источник

L

Lamest in Compiler Development
Ivan Kochurkin
Импорт нужно использовать для случаев, когда один лексер использует токены из другого лексера, я на практике такое вообще пока не юзал.
я заюзал, работает
источник

L

Lamest in Compiler Development
лексер в лексер можно импортировать
источник

IK

Ivan Kochurkin in Compiler Development
Нельзя, но можно помечать узлы с помощью альтернативных или элементных меток.
источник

L

Lamest in Compiler Development
парсер в парсер
источник

L

Lamest in Compiler Development
Ivan Kochurkin
Вы прикрепили пустой скрин.
источник

IK

Ivan Kochurkin in Compiler Development
А зачем вам фрагменты в парсере? Не достаточно разве просто извлекать их в отдельные правила?
источник

L

Lamest in Compiler Development
Ivan Kochurkin
А зачем вам фрагменты в парсере? Не достаточно разве просто извлекать их в отдельные правила?
можно. просто у меня было написано fragment N:('n'|'N');, а в парсере я не могу его использовать
источник

BD

Berkus Decker in Compiler Development
Вадим Великодный
Как переключение endianness на лету, так и инструкция для JS — это стандартные штуки ARM. Но тред выглядит так, будто Apple сама всё это придумала.
ну конретно эту фичу придумал таки эпол, да
источник

IK

Ivan Kochurkin in Compiler Development
Lamest
можно. просто у меня было написано fragment N:('n'|'N');, а в парсере я не могу его использовать
Ну разумеется нельзя, потому что такого правила по сути вообще не существует - вам нужно токен объявить, которые этот фрагмент будет использовать. Фрагменты - это просто удобная группировка других фрагментов или токенов.
источник

L

Lamest in Compiler Development
да, я так и понял
источник

L

Lamest in Compiler Development
спасибо!
источник

BD

Berkus Decker in Compiler Development
EgorBo
++ очевидное решение - расставлять везде подряд
да, и тогда вы идете вместе с майкрософтом тормозить 200% на оттранслированном коде
источник

BD

Berkus Decker in Compiler Development
железная реализация вышла видимо не так дорого, сильно дешевле инвестирвоания в умный DF анализ )
источник

BD

Berkus Decker in Compiler Development
Вадим Великодный
Я memory ordering как byte order прочитал в том твите.
ах, понятно тогда
источник

BD

Berkus Decker in Compiler Development
Pavel Samolysov
Глупый вопрос задам, но: а у ARM ослабленная семантика ордеринга как у Power по сравнению с x86? Но не настолько как у DEC Alpha?
да, что-то среднее, не такое радикальное как у альфы, но эквивалентный паверовскому
источник