Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Script File (.idx) Reference

Boost , Boost.AutoIndex , Boost.AutoIndex

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Следующие элементы могут возникать в сценарии:

Comments and blank lines

Прозрачные линии, состоящие только из белого пространства, игнорируются, так что линииначинаются с #.

[Note]Note

Вы не можете добавлять комментарии в конце строки!

Inclusion of Index terms
term [regular-expression1 [regular-expression2 [category]]]

term

Term to index.

Термин индекса образует первичную запись в Индексе с заголовком(ами) раздела, содержащими термин в качестве вторичных записей, а также будет использоваться в качестве вторичной записи под каждым из заголовков раздела, в котором встречается термин индекса.

regular-expression1

Index term Searcher.

Необязательное регулярное выражение: каждое появление регулярного выражения в тексте документа приводит к тому, что выделяется один индексный термин.

Если обычное выражение опущено (по умолчанию) или является «», то индексный терминсам будет использоваться в качестве поискового текста - и только появление целых слов, соответствующихиндексный терминбудет индексироваться.

Например:

foobar

будет индексировать вхождения «фообар» в любом разделе, но

foobar \<\w*(foo|bar)\w*\>

Он проиндексирует любое целое слово, содержащее в себе либо «foo», либо «bar». Это полезно, когда вы хотите проиндексировать много похожих или связанных слов под одной записью.

reflex

Проиндексирует только случаи «рефлекса» в целом, но:

reflex \<reflex\w*\>

Проиндексируются случаи «рефлекса», «рефлекса», «рефлексирования» и «рефлексированного» ... все под одним и тем же входным рефлексом.

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

regular-expression2

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».

Если поле выбора третьего раздела опущено (по умолчанию) или является «», товсе разделыиндексируются для этого термина.

category

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
Source File Scanning
!scan source-file-name

Сканирует исходный файл C/C++source-file-nameдля определенийфункцииs,классаs,макросаs илиtypedefs и делает каждый из этих терминов индексируемым. Обнаруженные термины присваиваются индексной категории «function_name», «class_name», «macro_name» или «typedef_name» в зависимости от того, как они были видны в исходном файле. Затем они могут быть включены в специализированный индекс, чей атрибут «тип» имеет то же название категории.

[Important]Important

При фактической индексации документа сканер не будет индексировать только старые термины, найденные в исходных файлах. Вместо этого он ищет определения классов или функции или объявления типа. Это уменьшает количество ложных совпадений, размещенных в индексе, но также может пропустить некоторые законные термины: обратитесь к командедля определения-сканерадля получения информации о том, как это изменить.

Directory and Source File Scanning
!scan-path directory-name file-name-regex [recurse]

directory-name

Каталог для сканирования: это должен быть путь по отношению к файлу сценария (или к пути, указанному с приставкой = путь опции в командной строке) и должен использовать все переадресации в своем имени файла.

file-name-regex

Регулярное выражение: любой файл в каталоге, имя которого соответствует регулярному выражению, будет отсканирован для индексации терминов.

recurse

Необязательное булевое значение - либо «истинное», либо «ложное» - указывает на то, следует ли повторять в подкаталоги. Это по умолчанию «ложно».

Excluding Terms
!exclude term-list

Исключает все термины в белом пространстве, отделенныетермин-листот индексации. Это должно быть помещенопослелюбых!scanили!scan-pathправил, которые могут привести к включению терминов. Другими словами, это удаляет термины из внутреннего списка сканеров для индексации.

Rewriting Section Names
!rewrite-id regular-expression new-name

regular-expression

Регулярное выражение: все идентификаторы разделов, которые точно соответствуют выражению, будут иметь индексные записиновое имявместо их заголовка (ов).

new-name

Название, под которым появится раздел в индексе.

!rewrite-name regular-expression format-text

regular-expression

Регулярное выражение: все разделы, названия которых точно соответствуют регулярному выражению, будут иметь индексные записи, составленные из регулярного экспрессионного соответствия в сочетании со строкой формата regexформат-текст.

format-text

Строка формата Perl использовалась для переформатирования названия.

Например:

!rewrite-name "(?:A|An|The)\s+(.*)" "\1"

Удалите любые ведущие «A», «An» или «The» из всех индексных записей - тем самым предотвращая множество записей в разделе «The» и т. Д.

Defining or Changing the File Scanners
!define-scanner type file-search-expression xml-regex-formatter term-formatter id-filter filename-filter

Когда исходный файл сканируется с использованием правил<!scan>или<!scan-path>, то файл ищется с помощью ряда регулярных выражений для поиска классов, функций, макросов или типдефов, которые должны быть проиндексированы. Для этого предусмотрен набор регулярных выражений по умолчанию (см. Ниже), но иногда вы можете заменить по умолчанию или добавить новые сканеры. Аргументами этого правила являются:

type

Тип, которому будут присвоены элементы, найденные с использованием этого правила, термины индекса, созданные из исходного файла, а затем найденные в XML, будут иметь атрибут типа, установленный для этого значения, и затем могут появиться в специализированном индексе с атрибутом того же типа.

file-search-expression

Регулярное выражение, которое используется для сканирования исходного файла на термины индекса, результат совпадения с этим выражением будет преобразован следующими двумя аргументами.

xml-regex-formatter

Строка формата обычного выражения, которая извлекает существенную информацию из того, что соответствуетвыражению файла-поискав исходном файле, и создаетновое регулярное выражение, которое будет использоваться для поиска документа, индексируемого для случаев этого термина индекса.

term-formatter

Строка формата обычного выражения, которая извлекает существенную информацию из того, что соответствует файлу-выражениюв исходном файле, и создает термин индекса, который появится в индексе.

id-filter

Необязательно. Регулярное выражение, которое ограничивает идентификатор раздела, который ищется в индексируемом документе: только те разделы, идентификатор которых точно соответствует этому выражению, будут рассматриваться для терминов индексации, найденных этим сканером.

filename-filter

Необязательно. Регулярное выражение, которое ограничивает, какие файлы сканируются этим сканером: только файлы, имя файла которых точно соответствует этому выражению, будут сканироваться для использования терминов индекса. Обратите внимание, что имя файла, сопоставленное с этим, может быть абсолютным путем и содержать разделители пути вперед или назад.

Если при сканировании первого файла отсутствуют сканеры, типкоторых «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

Будет искатьлюбоепоявление любого класса имен, которые сканер может найти в документации.

Debugging scanning

Если вы видите термин в индексе и не понимаете, почему он там, добавьте.отладкаДиректива:

!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

Это может привести к большим выводам в файле журнала, но пока вы не удовлетворены процессом выбора и сканирования файла, стоит включить его.


PrevUpHomeNext

Статья Script File (.idx) Reference раздела Boost.AutoIndex Boost.AutoIndex может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Boost.AutoIndex ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:21:38/0.011966943740845/1