— Поддержка языковых литералов
Ioke позволяет переопределять литералы, но не определять новые. Это работает следующим образом: литералы просто транслируются в сообщения, а затем вы можете переопределить соответствующие методы, как и любые другие.
Например, это «буквенный синтаксис» для Dict
с двумя записями, одна из которых отображает Symbol
в Text
, а другая — Symbol
в Number
:
{ :name => "Йорг", :age => 31 }
Это на самом деле преобразуется в отправку сообщения для сообщения с именем {}
(кстати: списки работают одинаково, их соответствующее сообщение []
). Это точно эквивалентно (и может быть записано так, если хотите):
{}(:name => "Jörg", :age => 31)
Итак, =>
на самом деле просто оператор, который определен почти для всех объектов и который просто возвращает Пара
, где ключ (первый элемент) является получателем, а значение — аргументом.
{}(:name =>("Jörg"), :age =>(31))
Символ :
, обозначающий буквенный символ, также переводится в сообщение:
{}(:("name") =>("Jörg"), :("age") =>(31 ))
Текстовый литерал преобразуется в отправку internal:createText 9Сообщение 0006:
{}(:("name") =>(internal:createText("Jörg")), :("age") =>(31))
[Примечание: очевидно, что то, как это здесь написано, приведет к бесконечной рекурсии. Правда в том, что аргументом internal:createText
, очевидно, является не Ioke Text
, а строка платформы. т.е. для ikj
, реализация JVM для Ioke, на самом деле это java.lang.String
, а для ikc
, реализация CIL, это Системная строка
. Я выразил это здесь, используя тройные кавычки.]
{}(:("name") =>(internal:createText("""Jörg""")), :("age") =>(31) )
Это просто оставляет нас с номером, который, как вы уже догадались, также является отправкой сообщения:
{}(:("name") =>(internal:createText("""Jörg""")), :("возраст") =>(внутренний:createNumber("""31""")))
Поскольку все является отправкой сообщений, это позволяет вам настраивать поведение литералов по желанию, просто реализуя соответствующие методы. Вот короткая стенограмма с iik
, интерактивный Ioke REPL:
iik> "Привет" +> "Привет" iik> внутренний: createText = метод (необработанный, супер (необработанный) верхний) iik> "Привет" +> "ЗДРАВСТВУЙТЕ"
Converge позволяет использовать мощное метапрограммирование во время компиляции, включая функцию под названием DSL Blocks . Блок DSL — это блок кода, который не использует синтаксис Converge. Блок DSL выглядит так:
$<>: здесь
Это работает следующим образом: строка между $<<
и >>
является именем функции, которая вызывается во время компиляции и получает весь блок DSL в виде строки (а также как некоторые метаданные исходного кода, такие как номер строки, имя файла и т. д.) и возвращает фрагмент абстрактного синтаксического дерева сходимости. Таким образом, в этом конкретном случае будет такая функция:
func xml(dsl_block, src_infos): // реализуем XML-анализатор здесь . .. вернуться на восток
Фактор позволяет определить слов разбора , которые являются словами, которые влияют на то, как анализируются другие слова в той же области. На самом деле Factor имеет реализацию библиотеки XML, которая использует слова синтаксического анализа для получения синтаксиса, очень похожего на XML-литералы Scala, но являющегося обычным кодом Factor:
: feed>xml ( feed -- xml ) [название>>] [ URL>> присутствует ] [ записи>> [ запись> xml ] карта ] три<название><->название> <ссылка href=<-> /> <-> канал> XML> ;
[Краткое введение в Factor: :
определяет новое слово, то есть первая строка определяет слово с именем feed>xml
, которое принимает один аргумент и дает один результат. Первые три строки слова извлекают заголовок, URI и записи из объекта фида и помещают их в стек.
XML>
снова выключает его. <->
берет значение из стека и вставляет его в XML.]
Common Lisp
Макросы Common Lisp Reader позволяют вам подключиться к этапу чтения, то есть к этапу, который берет строку и создает вложенные списки, а затем передает их компилятору/оценщику. Они требуют, чтобы вы выбрали уникальный префикс из одного или двух символов, и они являются глобальными. С первым не так много проблем, так как мы можем просто выбрать символ <
в качестве нашего префикса, чтобы он выглядел естественно.
Perl 6 должен позволять вам изменять синтаксис во время работы программы. Perl 6 имеет динамическую изменяемую грамматику, что означает, что код анализируется во время его выполнения и может изменить грамматику, чтобы другой код, находящийся дальше в файле, анализировался с использованием новой грамматики.
OMeta/COLA
Язык OMeta Алессандро Варта, работающий поверх системы COLA Яна Пиумарты, позволяет использовать то, что они называют «языками, зависящими от настроения». т.е. языки, спецификация и реализация которых настолько легки, что вы можете использовать их только для одной строки в середине вашей программы, а затем снова переключаться на другой синтаксис.
Используется в программе «Изобретение фундаментальных новых вычислительных технологий» в Исследовательском институте точки зрения Алана Кея. Одним из примеров использования является реализация всего сетевого стека TCP/IP всего в 200 строках кода путем разработки языка, синтаксис которого идентичен художественным диаграммам ASCII, используемым в IETF RfC, и другому языку для написания конечных автоматов сетевого протокола. Затем реализация сетевого стека просто состоит из копирования и вставки диаграмм ASCII из RFC и передачи описаний конечного автомата на английском языке из RFC в язык конечного автомата.
(О, если вам интересно: 200 строк предназначены не только для диаграмм ASCII и конечных автоматов. Они также включают синтаксические анализаторы и компиляторы для двух языков. )
Язык программирования π, вероятно, тоже интересен .
Звукоподражания Определение и значение — Merriam-Webster
on·o·mato·poe·ia ˌä-nə-ˌmä-tə-ˈpē-ə
-ˌma-
1
: наименование предмета или действия путем голосовой имитации звука, связанного с ним (например, жужжание, шипение )
также : слово, образованное звукоподражанием
В комиксах, когда вы видите кого-то с пистолетом, вы знаете, что он стреляет, только когда читаете звукоподражания. —Christian Marclay
2
: употребление слов, звучание которых указывает на смысл
исследование звукоподражания поэта
звукоподражательный
ˌä-nə-ˌmä-tə-ˈpē-ik
-ˌma-
имя прилагательное
или звукоподражательное
ˌä-nə-ˌmä-tə-pō-e-tik
-ˌma-
звукоподражательно
ˌä-nə-ˌmä-tə-ˈpē-ə-k(ə-)lē
-ˌma-
наречие
или звукоподражательно
ˌä-nə-ˌmä-tə-pō-e-ti-k(ə-)lē
-ˌma-
Знаете ли вы?
Англоговорящие люди использовали слово звукоподражание только с 1500-х годов, но люди создавали слова, вдохновленные звуками, слышимыми вокруг них, гораздо дольше. Возможно, вас не удивит, что fizz , jingle , toot и pop звукоподражательные по происхождению, но знаете ли вы, что то же самое верно и для 9?0031 отскок , возиться и дирижабль ? Бум! Теперь ты. На самом деле, наличие в языке стольких имитативных слов породило лингвистическую теорию «гав-вау», которая постулирует, что язык возник в результате имитации естественных звуков. Хотя маловероятно, что звукоподражание является единственным стимулом для человеческого языка, оно, безусловно, оставило след, на который нечего чихать.
Примеры предложений
Термин икота является примером звукоподражания … — Фред Чичетти, 9 лет.0031 Монтегю Репортер , 6 марта 2008 г. Вы можете подумать, что это звукоподражание звуку, который фрисби издает при движении по воздуху, но это название многие годы приписывалось компании Frisbie Pie Company из Бриджпорта, штат Коннектикут, которая прекратила свою деятельность в 1958 году.
— Марк Данна, Sports Illustrated , 11 мая 1987 г.Buzz и шипение являются примерами звукоподражания .
Недавние примеры в Интернете
Тысячи светлячков, которых в Малайзии называют келип-келип — их название является своего рода наглядным
Эти примеры предложений автоматически выбираются из различных онлайн-источников новостей, чтобы отразить текущее использование слова «звукоподражание». Мнения, выраженные в примерах, не отражают точку зрения Merriam-Webster или ее редакторов. Отправьте нам отзыв.
История слов
Этимология
Поздняя латынь, от греческого звукоподражания , от ономат-, онома имя + poiein сделать — больше у поэта
Первое известное использование
около 1553, в значении, определенном в смысле 1
Путешественник во времени
Первое известное использование звукоподражания было около 1553 г.
Другие слова того же года
Подкаст
Получайте Слово дня на свой почтовый ящик!
Словарные статьи около
звукоподражаниязвукоподражание
звукоподражание
звукоподражание
Посмотреть другие записи поблизости
Процитировать эту запись «Ономатопея».
Словарь Merriam-Webster.com , Merriam-Webster, https://www.merriam-webster.com/dictionary/onomatopoeia. По состоянию на 18 декабря 2022 г.Копия цитирования
Детское определение
Звукоподражание
сущ.
on·o·mato·poe·ia ˌän-ə-ˌmat-ə-ˈpē-(y)ə
1
: наименование предмета или действия путем имитации естественных звуков (например, "жужжание" или "шипение")
2
: поэтический эффект)
звукоподражательный
-ˈpē-ik
имя прилагательное
или звукоподражание
-pō-ˈet-ik
Еще от Merriam-Webster о звукоподражании
Britannica.