Program Listing for File lexerbase.h#
↰ Return to documentation for file (sdv_idl_compiler\lexerbase.h)
/********************************************************************************
* Copyright (c) 2025-2026 ZF Friedrichshafen AG
*
* This program and the accompanying materials are made available under the
* terms of the Apache License Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* Erik Verhoeven - initial API and implementation
********************************************************************************/
#ifndef LEXERBASE_H
#define LEXERBASE_H
enum class ETokenType
{
token_none,
token_whitespace,
token_comments,
token_identifier,
token_keyword,
token_literal,
token_separator,
token_operator,
token_meta,
};
enum class ETokenLiteralType
{
token_undefined,
token_literal_dec_integer,
token_literal_oct_integer,
token_literal_hex_integer,
token_literal_bin_integer,
token_literal_dec_floating_point,
token_literal_hex_floating_point,
token_literal_fixed_point,
token_literal_string,
token_literal_raw_string,
token_literal_character,
token_literal_character_sequence,
token_literal_boolean,
token_literal_nullptr,
};
enum class ETokenMetaType
{
token_undefined,
token_meta_include_local,
token_meta_include_global,
token_meta_define,
token_meta_undef,
token_meta_verbatim,
};
// Forward declarations
class CToken;
class CCodePos;
struct ILexerCallback
{
virtual void InsertWhitespace(const CToken &rtoken) = 0;
virtual void InsertComment(const CToken& rtoken) = 0;
virtual void ProcessPreprocDirective(CCodePos& rCode) = 0;
};
#endif // !defined LEXERBASE_H