Класс newObj
является анонимным внутренним классом. Здесь вы определяете этот анонимный внутренний класс внутри фигурной скобки {}
.
Анонимный внутренний класс может быть полезен при создании экземпляра объекта с некоторыми «дополнительными функциями», такими как методы перегрузки класса или интерфейса, без необходимости фактически создавать подкласс класса.
blockquote>Кроме того, ссылка
newObj
относится не к экземпляруObject
, а к экземпляру анонимного подклассаObject
.
Похоже, они написали свой собственный скрипт для их генерации, как небольшой встроенный DSL в TCL. Возможно, вы сможете изменить назначение их сценария.
edit : Да, его довольно просто использовать, хотя, похоже, потребуется немного изменить его, чтобы сделать вывод более привлекательным (по какой-то причине, convert
не может сгладить это в моей системе; вывод постскрипта выглядит неплохо).
hello {
line HELLO {or WORLD {line MY FRIEND {opt ANDREY}} }
}
edit 2 : Вот краткая статья о том, как это работает, а также некоторые заметки о как войти анонимно, чтобы просмотреть источник, если вы не видите его сразу.
Я не знаю каких-либо конкретных инструментов, но могу вам сказать, что их часто называют Рекурсивные сети перехода (RTN) . Таким образом, вы можете использовать это для расширения поиска.
Вы также можете получить ответ из списка рассылки SQLite и точно узнать, что они используют.
В статье Википедии есть хороший список.
Вот тот, который находится в сети, и, кажется, работает довольно хорошо (хотя текст требует псевдонимов). (неработающая ссылка)
У меня возникла та же проблема, когда я начал использовать vim. Решение простое, вам просто нужно отредактировать файл синтаксиса c, используемый vim, вот как это сделать:
Когда вы начинаете редактировать файл C или C ++, vim читает файл синтаксиса c по умолчанию, расположенный в
$VIMRUNTIME/syntax/c.vim
( Где $ VIMRUNTIME - это то место, где вы установили vim. Вы можете узнать его значение по умолчанию, открыв vim и используя команду ": echo $ VIMRUNTIME").
Вы можете просто перезаписать этот файл или создать свой собственный синтаксис C файл (который будет загружен vim вместо файла по умолчанию) в этом месте:
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(я никогда не использовал Mac, поэтому я не знаю, какой из них будет работать для вас. Вы можете узнать больше в справке vim, ": помогите vimfiles " )
Теперь самое интересное. Скопируйте файл по умолчанию «$ VIMRUNTIME / syntax / c.vim» в каталог vimfiles («$ HOME / .vim / syntax / c.vim» для UNIX) и отредактируйте его, добавив следующие строки:
«Highlight Class и имена функций syn match cCustomParen "(" содержит = cParen, cCppParen syn match cCustomFunc "\ w \ + \ s * (" содержит = cCustomParen syn match cCustomScope "::" син совпадение cCustomClass "\ w \ + \ s * ::" содержит = cCustomScope привет def ссылка cCustomFunc функция Привет def ссылка cCustomClass Функция
Вот и все! Теперь имена функций и классов будут выделены цветом, определенным в выделении «Function» («: hi Function»). Если вы хотите настроить цвета, вы можете изменить последние две строки выше на что-то вроде этого:
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00
или вы можете оставить файл синтаксиса C в покое и определить цвета в вашем файле vimrc (": help vimrc"):
hi cCustomFunc gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00
(Обратите внимание на отсутствие ключевого слова def, перейдите к «: help highlight-default» для подробной информации). Доступные параметры для команды ": hi" см. ": Help: highlight".
Вы можете найти полный файл c.vim для Vim 7.2 по этой ссылке (Примечание: используйте это, только если у вас есть неизмененные Vim, версия 7.2):
И обязательный скриншот:
Если вы используете EBNF для своего синтаксиса, есть EBNF Визуализатор для этой цели.
Вы также можете попробовать Graphviz . Это открытый исходный код, и существует несколько инструментов для работы с ним. Это в основном полезно для общих графов, но может быть адаптировано и для синтаксических графов.
Также существует еще один бесплатный инструмент под названием SYNGEN .
Я думаю, что должна быть возможность определить график RTN на языке точек и затем сгенерировать его с помощью одного из инструментов с поддержкой точек .
Я использую OpenOffice Draw для многих моих потребностей в рисовании. Бесплатные, с открытым исходным кодом и мультиплатформенность являются большими вещами для меня. Он отлично справляется с блок-схемами с небольшой кривой обучения.
Я раньше пользовался SmartDraw и нашел его очень способным, но моя потребность в