![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Script File (.idx) ReferenceBoost , Boost.AutoIndex , Boost.AutoIndex
|
![]() | Note |
---|---|
Вы не можете добавлять комментарии в конце строки! |
term [regular-expression1 [regular-expression2 [category]]]
Term to index.
Термин индекса образует первичную запись в Индексе с заголовком(ами) раздела, содержащими термин в качестве вторичных записей, а также будет использоваться в качестве вторичной записи под каждым из заголовков раздела, в котором встречается термин индекса.
Index term Searcher.
Необязательное регулярное выражение: каждое появление регулярного выражения в тексте документа приводит к тому, что выделяется один индексный термин.
Если обычное выражение опущено (по умолчанию) или является «», то индексный терминсам будет использоваться в качестве поискового текста - и только появление целых слов, соответствующихиндексный терминбудет индексироваться.
Например:
foobar
будет индексировать вхождения «фообар» в любом разделе, но
foobar \<\w*(foo|bar)\w*\>
Он проиндексирует любое целое слово, содержащее в себе либо «foo», либо «bar». Это полезно, когда вы хотите проиндексировать много похожих или связанных слов под одной записью.
reflex
Проиндексирует только случаи «рефлекса» в целом, но:
reflex \<reflex\w*\>
Проиндексируются случаи «рефлекса», «рефлекса», «рефлексирования» и «рефлексированного» ... все под одним и тем же входным рефлексом.
Очень часто вам придется использовать это для работы с множественными числами и другими вариантами.
Section(s) Selector.
Ограничение, которое определяет, какие разделы индексируются длятермина: Только если идентификатор раздела соответствуетрегулярному выражению2, этот раздел будет точно проиндексирован для случаевтермина.
Например, ограничить индексирование толькоодним конкретным разделом(но не подразделами ниже):
myclass "" "mylib\.examples"
Например, ограничить индексацию конкретными разделамии подразделами ниже:
myclass "" "mylib\.examples.*"
проиндексирует вхождения «myclass» как целое слово, но только в разделах, в которых начинается раздел ID«mylib.examples», при этом
myclass "\<myclass\w*\>" "mylib\.examples.*"
Также будет индексировать множественные числа myclass, myclasses, myclasss.
и:
myclass "" "(?!mylib\.introduction).*"
Проиндексировать вхождения «myclass» в любом разделе, кроме тех, чьи идентификаторы раздела начинаются «mylib.introduction».
Наконец, два (или более) раздела могут быть исключены путем их объединения:
myclass "" "(?!mylib\.introduction|mylib\.reference).*"
который исключает поиск этого термина в разделах, идентификатор которых начинается с «mylib.introduction» или «mylib.reference».
Если поле выбора третьего раздела опущено (по умолчанию) или является «», товсе разделыиндексируются для этого термина.
Index Category Constraint.
Необязательно категория для размещения событийиндексного термина. Если у вас есть несколько индексов, то это имя присваивается атрибуту индексов «тип».
Например:
myclass """ class_name
Будет индексировать событиямоего классаи помещать их в индекс класса, если он есть.
Вы можете иметь индексный термин, появляющийся более одного раза в файле сценария:
Таким образом:
myterm search_expression1 constrait_expression2 foo myterm search_expression1 constrait_expression2 bar
Будут рассматриваться как различные термины, каждый со своими собственными записями, в то время как:
myterm search_expression1 constrait_expression2 mycategory myterm search_expression1 constrait_expression2 mycategory
Будет объединен в один термин, эквивалентный:
myterm (?:search_expression1|search_expression1) (?:constrait_expression2|constrait_expression2) mycategory
!scan source-file-name
Сканирует исходный файл C/C++source-file-nameдля определенийфункцииs,классаs,макросаs илиtypedefs и делает каждый из этих терминов индексируемым. Обнаруженные термины присваиваются индексной категории «function_name», «class_name», «macro_name» или «typedef_name» в зависимости от того, как они были видны в исходном файле. Затем они могут быть включены в специализированный индекс, чей атрибут «тип» имеет то же название категории.
![]() | Important |
---|---|
При фактической индексации документа сканер не будет индексировать только старые термины, найденные в исходных файлах. Вместо этого он ищет определения классов или функции или объявления типа. Это уменьшает количество ложных совпадений, размещенных в индексе, но также может пропустить некоторые законные термины: обратитесь к командедля определения-сканерадля получения информации о том, как это изменить. |
!scan-path directory-name file-name-regex [recurse]
Каталог для сканирования: это должен быть путь по отношению к файлу сценария (или к пути, указанному с приставкой = путь опции в командной строке) и должен использовать все переадресации в своем имени файла.
Регулярное выражение: любой файл в каталоге, имя которого соответствует регулярному выражению, будет отсканирован для индексации терминов.
Необязательное булевое значение - либо «истинное», либо «ложное» - указывает на то, следует ли повторять в подкаталоги. Это по умолчанию «ложно».
!exclude term-list
Исключает все термины в белом пространстве, отделенныетермин-листот индексации. Это должно быть помещенопослелюбых!scanили!scan-pathправил, которые могут привести к включению терминов. Другими словами, это удаляет термины из внутреннего списка сканеров для индексации.
!rewrite-id regular-expression new-name
Регулярное выражение: все идентификаторы разделов, которые точно соответствуют выражению, будут иметь индексные записиновое имявместо их заголовка (ов).
Название, под которым появится раздел в индексе.
!rewrite-name regular-expression format-text
Регулярное выражение: все разделы, названия которых точно соответствуют регулярному выражению, будут иметь индексные записи, составленные из регулярного экспрессионного соответствия в сочетании со строкой формата regexформат-текст.
Строка формата Perl использовалась для переформатирования названия.
Например:
!rewrite-name "(?:A|An|The)\s+(.*)" "\1"
Удалите любые ведущие «A», «An» или «The» из всех индексных записей - тем самым предотвращая множество записей в разделе «The» и т. Д.
!define-scanner type file-search-expression xml-regex-formatter term-formatter id-filter filename-filter
Когда исходный файл сканируется с использованием правил<!scan
>или<!scan-path
>, то файл ищется с помощью ряда регулярных выражений для поиска классов, функций, макросов или типдефов, которые должны быть проиндексированы. Для этого предусмотрен набор регулярных выражений по умолчанию (см. Ниже), но иногда вы можете заменить по умолчанию или добавить новые сканеры. Аргументами этого правила являются:
Тип, которому будут присвоены элементы, найденные с использованием этого правила, термины индекса, созданные из исходного файла, а затем найденные в XML, будут иметь атрибут типа, установленный для этого значения, и затем могут появиться в специализированном индексе с атрибутом того же типа.
Регулярное выражение, которое используется для сканирования исходного файла на термины индекса, результат совпадения с этим выражением будет преобразован следующими двумя аргументами.
Строка формата обычного выражения, которая извлекает существенную информацию из того, что соответствуетвыражению файла-поискав исходном файле, и создаетновое регулярное выражение, которое будет использоваться для поиска документа, индексируемого для случаев этого термина индекса.
Строка формата обычного выражения, которая извлекает существенную информацию из того, что соответствует файлу-выражениюв исходном файле, и создает термин индекса, который появится в индексе.
Необязательно. Регулярное выражение, которое ограничивает идентификатор раздела, который ищется в индексируемом документе: только те разделы, идентификатор которых точно соответствует этому выражению, будут рассматриваться для терминов индексации, найденных этим сканером.
Необязательно. Регулярное выражение, которое ограничивает, какие файлы сканируются этим сканером: только файлы, имя файла которых точно соответствует этому выражению, будут сканироваться для использования терминов индекса. Обратите внимание, что имя файла, сопоставленное с этим, может быть абсолютным путем и содержать разделители пути вперед или назад.
Если при сканировании первого файла отсутствуют сканеры, типкоторых «class_name», «typedef_name», «macro_name» или «function_name», то устанавливаются по умолчанию. Они эквивалентны:
!define-scanner class_name "^[[:space:]]*(template[[:space:]]*<[^;:{]+>[[:space:]]*)?(class|struct)[[:space:]]*(\<\w+\>([[:blank:]]*\([^)]*\))?[[:space:]]*)*(\<\w*\>)[[:space:]]*(<[^;:{]+>)?[[:space:]]*(\{|:[^;\{()]*\{)" "(?:class|struct)[^;{]+\<\5\>[^;{]+\{" \5 !define-scanner typedef_name "typedef[^;{}#]+?(\w+)\s*;" "typedef[^;]+\<\1\>\s*;" "\1" !define-scanner "macro_name" "^\s*#\s*define\s+(\w+)" "\<\1\>" "\1" !define-scanner "function_name" "\w++(?:\s*+<[^>]++>)?[\s&*]+?(\w+)\s*(?:BOOST_[[:upper:]_]+\s*)?\([^;{}]*\)\s*[;{]" "\\<\\w+\\>(?:\\s+<[^>]*>)*[\\s&*]+\\<\1\\>\\s*\\([^;{]*\\)" "\1"
Обратите внимание, что эти по умолчанию не установлены, если вы предоставили свои собственные версии с этими именами. В этом случае, если вы хотите, чтобы сканеры по умолчанию действовали так же хорошо, как и ваши собственные, вы должны включить вышеупомянутое в файл сценария. Также вполне допустимо иметь несколько сканеров с одинаковымтипом, но с другими полями, отличающимися.
Наконец, вы должны отметить, что сканеры по умолчанию довольно строги в том, что они найдут, например, сканер класса будет создавать только индексные записи для классов, которые имеют классовые определения формы:
class my_class : public base_classes { // etc
В документации так, что простые упоминания названия классанебудут индексироваться, только синопсис класса, если он есть. Если это не то, что вы хотите, то включите определениеclass_nameсканера выше в файле сценария и измените полеxml-regex-formatterна что-то более разрешительное, например:
!define-scanner class_name "^[[:space:]]*(template[[:space:]]*<[^;:{]+>[[:space:]]*)?(class|struct)[[:space:]]*(\<\w+\>([[:blank:]]*\([^)]*\))?[[:space:]]*)*(\<\w*\>)[[:space:]]*(<[^;:{]+>)?[[:space:]]*(\{|:[^;\{()]*\{)" "\<\5\>" \5
Будет искатьлюбоепоявление любого класса имен, которые сканер может найти в документации.
Если вы видите термин в индексе и не понимаете, почему он там, добавьте.отладкаДиректива:
!debug regular-expression
Теперь, когдарегулярное выражениесоответствует либо найденному индексному термину, либо заголовку раздела, в котором он появляется, или полю сканератипа, тогда будет напечатана некоторая диагностическая информация, которая будет выглядеть примерно так:
Debug term found, in block with ID: spirit.qi.reference.parser_concepts.parser
Current section title is: Notation
The main index entry will be : Notation
The indexed term is: parser
The search regex is: [P|p]arser
The section constraint is: .qi.reference.parser_concepts.
The index type for this entry is: qi_index
Это может привести к большим выводам в файле журнала, но пока вы не удовлетворены процессом выбора и сканирования файла, стоит включить его.
Статья Script File (.idx) Reference раздела Boost.AutoIndex Boost.AutoIndex может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Boost.AutoIndex ::
реклама |