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

The Token Type

Boost , ,

The Token Type

Введение
Заголовок «wave/context.hpp»
Параметры шаблона
Общественные типы
Функции члена

Introduction

Тип токена вВолнаявляется основным носителем информации. Он возвращается путем отнесения итераторов, выставленных лексирующим компонентом, и итератора, выставленного препроцессорным компонентом. Токены первоначально генерируются лексером ("Сущность, которая лексически преобразует субъекта разбора в последовательность объектов (так называемых токенов), более подходящих для последующего разбора."). Библиотека Wave содержит два разных, взаимозаменяемых лексера C++, которые могут быть использованы в качестве отправной точки при разработке собственного приложения. Токены, генерируемые лексером, преобразуются движком предварительной обработки (макрорасширение, включение обработки файлов и т.д.) и после этого возвращаются пользователю. Библиотека.

Вы можете использовать произвольные типы токенов в сочетании с вашим лексером, если они реализуют необходимый интерфейс. Требуемый интерфейс типа токена описан ниже и реализован шаблономwave::cpplexer::lex_token, требуемый интерфейс лексера описанздесь.

В следующем описан тип токена, предварительно заданный внутри. Волноваябиблиотека, которая используется в сочетании с двумя предопределенными лексерами C++, содержащимися вБиблиотека. Если вам нужно использовать свой собственный тип токена, необходимо реализовать интерафс, описанный ниже.

Header wave/cpplexer/cpp_lex_token.hpp synopsis

namespace boost {
namespace wave {
namespace cpplexer {
    template <typename Position>
    class lex_token 
    {
    public:
        typedef std::basic_string<char> string_type;
        typedef Position                position_type;
    
        lex_token();
        lex_token(token_id id, string_type const &value, 
            PositionT const &pos);
    // accessors
        operator token_id() const;
        string_type const &get_value() const;
        position_type const &get_position() const;
        void set_token_id (token_id id);
        void set_value (string_type const &newval);
        void set_position (position_type const &pos);
    };
}   // namespace cpplexer
}   // namespace wave
}   // namespace boost

Template parameters

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

Public Typedefs

Тип токена должен определять два встроенных типа:string_typeиposition_type.string_typeдолжен быть типом, совместимым сstd::basic_string<>классом.

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

Member functions

Конструкторы

    lex_token();
    lex_token(token_id id, 
        string_t const &value, 
        PositionT const &pos);

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

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

Accessor functions

оператор token_id

    operator token_id() const;

Позволяет получить доступ к идентификатору токена. Этот аксессуар позволяет использовать парсерыSpiritнепосредственно поверх потока токенов, генерируемого Wave. Описаны возможные токеныздесь.

Эта функция ни в коем случае не выполняется.

get_value

    string_type const &get_value() const;

Возвращает значение токена, так как он был распознан во входном потоке. Даже для постоянных токенов (в качестве ключевых слов или операторов и т.д.) возвращенное значение отражает последовательность символов, как это показано во входном потоке.

Эта функция ни в коем случае не выполняется.

get_position

    Position const &get_position() const;

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

Эта функция ни в коем случае не выполняется.

set_token_id

    void set_token_id(token_id id);

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

Эта функция ни в коем случае не выполняется.

set_value

    void set_value(string_type const &newval);

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

set_position

    void set_position(Position const &newpos);

Меняет положение, хранящееся внутри токена, на новое значение. Это используется, например, для реализации функциональности, необходимой для реализации директивы#line.


Статья The Token Type раздела может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:12:22/0.0093331336975098/1