spamsink: (Default)
[personal profile] spamsink


Представьте себе язык, в котором можно описывать некоторые иерархические структуры: скажем, записи, поля в которых могут быть, кроме примитивных типов, еще и типа "запись". Обращаться к элементам этих структур можно с помощью Си-подобного синтаксиса, например, var.f1.f2.f3.
Блок отладчика, который получает от пользователя иерархическое имя поля и разбирает его на составные элементы, не глядя в таблицу имен, не вызывает затруднений.

Представьте себе, что в этом языке, кроме привычных нам идентификаторов, есть еще и "расширенные", состоящие из любых символов, кроме пробельных. Они записываются как \идентификатор<пробел>, т.е. "\\ " - легально (а вот "\ " - нет). И в этом случае разбор иерархического имени не представляет проблем, даже несмотря на то, что символы \ и . внутри расширенных идентификаторов допускаются.

А теперь представьте себе, что есть еще один очень похожий язык, в котором иерархические имена записываются точно так же через точку, оба языка позволяют использовать в качестве полей записи из другого языка (грубо, как opaque reference), но есть одна маленькая деталь - во втором языке тоже есть расширенные идентификаторы, состоящие из любых символов, кроме \. Они записываются как \идентификатор\, и пробелы в идентификаторе допускаются.

Отлаживать, понятное дело, нужно уметь и программы на смеси языков.

"\foo .\.\.\bar "



Та-да!

(Если кто не догадался, первый язык - Verilog, второй - VHDL).
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting
Page generated Mar. 6th, 2026 02:59 am
Powered by Dreamwidth Studios