Это весьма типичная для Unix конструкция мини-языка, и как таковая она имеет несколько интересных моментов даже на уровне синтаксиса. Следует отметить ее сходство с shell-программой: комментарии начинаются с символа #, а синтаксис, очевидно, организован на основе лексем и имеет простейшее возможное соглашение для строк. Разработчик
Пример 8.4. pic-код для схемы классификации языков
# Minilanguage taxonomy (классификация мини-языков)
#
# Base ellipses (основные элипсы)
define smallellipse {ellipse width 3.0 height 1.5} M: ellipse width 3.0 height 1.8 fill 0.2 line from M.n to M.s dashed D: smallellipse() with .e at M.w + (0.8, 0) line from D.n to D.s dashed
I: smallellipse() with .w at M.e - (0.8, 0)
#
# Captions (подписи) "" "Data formats" at D.s "" "Minilanguages" at M.s
«« "interpreters" at I.в #
# Heads (заголовки)
arrow from D.w + (0.4, 0.8) to D.e + (-0.4, 0.8) "flat to structured" "" at last arrow.с
arrow from M.w + (0.4, 1.0) to M.e + (-0.4, 1.0)
"declarative to imperative" "" at last arrow.с
arrow from I.w + (0.4, 0.8) to I.e + (-0.4, 0.8)
"less to more general" "" at last arrow.с
#
# The arrow of loopiness (стрелка развития циклов) arrow from D.w + (0, 1.2) to I.e + (0, 1.2)
"increasing loopiness" "" at last arrow.с
#
# Flat data files (плоские файлы данных) "/etc/passwd" ".newsrc" at 0.5 between D.c and D.w
# Structured data files (структурированные файлы данных) "SNG" at 0.5 between D.c and M.w
# Datafile/minilanguage borderline cases (пограничные случаи файлы данных/мини-язык)
"regexps" "Glade" at 0.5 between M.w and D.e
# Declarative minilanguages (декларативные мини-языки) "m4" "Yacc" "Lex" "make" "XSLT" "pic" "tbl" "eqn" \
at 0.5 between M.с and D.e
# Imperative minilanguages (императивные мини-языки) "fetchmail" "awk" "troff" "Postscript" at 0.5 between M.c and I.w
# Minilanguage/interpreter borderline cases (пограничные случаи мини-язык/интерпретатор)
"dc" "be" at 0.5 between I.w and M.e
# Interpreters (интерпретаторы)
"Emacs Lisp" "JavaScript" at 0.25 between M.e and I.e
"sh" "tel" at 0.55 between M.e and I.e
"Perl" "Python" "Java" at 0.8 between M.e and I.e
Комбинация макросов с компоновкой на основе ограничивающих условий позволяет программе