Project Alice
Loading...
Searching...
No Matches
detail::lexer< BasicJsonType, InputAdapterType > Class Template Reference

lexical analysis More...

#include <json.hpp>

Inheritance diagram for detail::lexer< BasicJsonType, InputAdapterType >:
Collaboration diagram for detail::lexer< BasicJsonType, InputAdapterType >:

Public Types

using token_type = typename lexer_base< BasicJsonType >::token_type
 
- Public Types inherited from detail::lexer_base< BasicJsonType >
enum class  token_type {
  uninitialized , literal_true , literal_false , literal_null ,
  value_string , value_unsigned , value_integer , value_float ,
  begin_array , begin_object , end_array , end_object ,
  name_separator , value_separator , parse_error , end_of_input ,
  literal_or_value
}
 token types for the parser More...
 

Public Member Functions

 lexer (InputAdapterType &&adapter, bool ignore_comments_=false) noexcept
 
 lexer (const lexer &)=delete
 
 lexer (lexer &&)=default
 
lexeroperator= (lexer &)=delete
 
lexeroperator= (lexer &&)=default
 
 ~lexer ()=default
 
constexpr number_integer_t get_number_integer () const noexcept
 return integer value More...
 
constexpr number_unsigned_t get_number_unsigned () const noexcept
 return unsigned integer value More...
 
constexpr number_float_t get_number_float () const noexcept
 return floating-point value More...
 
string_t & get_string ()
 return current string value (implicitly resets the token; useful only once) More...
 
constexpr position_t get_position () const noexcept
 return position of last read token More...
 
std::string get_token_string () const
 
JSON_HEDLEY_RETURNS_NON_NULL constexpr const char * get_error_message () const noexcept
 return syntax error message More...
 
bool skip_bom ()
 skip the UTF-8 byte order mark More...
 
void skip_whitespace ()
 
token_type scan ()
 

Additional Inherited Members

- Static Public Member Functions inherited from detail::lexer_base< BasicJsonType >
JSON_HEDLEY_RETURNS_NON_NULL static JSON_HEDLEY_CONST const char * token_type_name (const token_type t) noexcept
 return name of values of type token_type (only used for errors) More...
 

Detailed Description

template<typename BasicJsonType, typename InputAdapterType>
class detail::lexer< BasicJsonType, InputAdapterType >

lexical analysis

This class organizes the lexical analysis during JSON deserialization.

Definition at line 7581 of file json.hpp.

Member Typedef Documentation

◆ token_type

template<typename BasicJsonType , typename InputAdapterType >
using detail::lexer< BasicJsonType, InputAdapterType >::token_type = typename lexer_base<BasicJsonType>::token_type

Definition at line 7591 of file json.hpp.

Constructor & Destructor Documentation

◆ lexer() [1/3]

template<typename BasicJsonType , typename InputAdapterType >
detail::lexer< BasicJsonType, InputAdapterType >::lexer ( InputAdapterType &&  adapter,
bool  ignore_comments_ = false 
)
inlineexplicitnoexcept

Definition at line 7593 of file json.hpp.

◆ lexer() [2/3]

template<typename BasicJsonType , typename InputAdapterType >
detail::lexer< BasicJsonType, InputAdapterType >::lexer ( const lexer< BasicJsonType, InputAdapterType > &  )
delete

◆ lexer() [3/3]

template<typename BasicJsonType , typename InputAdapterType >
detail::lexer< BasicJsonType, InputAdapterType >::lexer ( lexer< BasicJsonType, InputAdapterType > &&  )
default

◆ ~lexer()

template<typename BasicJsonType , typename InputAdapterType >
detail::lexer< BasicJsonType, InputAdapterType >::~lexer ( )
default

Member Function Documentation

◆ get_error_message()

template<typename BasicJsonType , typename InputAdapterType >
JSON_HEDLEY_RETURNS_NON_NULL constexpr const char * detail::lexer< BasicJsonType, InputAdapterType >::get_error_message ( ) const
inlineconstexprnoexcept

return syntax error message

Definition at line 8943 of file json.hpp.

◆ get_number_float()

template<typename BasicJsonType , typename InputAdapterType >
constexpr number_float_t detail::lexer< BasicJsonType, InputAdapterType >::get_number_float ( ) const
inlineconstexprnoexcept

return floating-point value

Definition at line 8894 of file json.hpp.

◆ get_number_integer()

template<typename BasicJsonType , typename InputAdapterType >
constexpr number_integer_t detail::lexer< BasicJsonType, InputAdapterType >::get_number_integer ( ) const
inlineconstexprnoexcept

return integer value

Definition at line 8882 of file json.hpp.

◆ get_number_unsigned()

template<typename BasicJsonType , typename InputAdapterType >
constexpr number_unsigned_t detail::lexer< BasicJsonType, InputAdapterType >::get_number_unsigned ( ) const
inlineconstexprnoexcept

return unsigned integer value

Definition at line 8888 of file json.hpp.

◆ get_position()

template<typename BasicJsonType , typename InputAdapterType >
constexpr position_t detail::lexer< BasicJsonType, InputAdapterType >::get_position ( ) const
inlineconstexprnoexcept

return position of last read token

Definition at line 8910 of file json.hpp.

Here is the caller graph for this function:

◆ get_string()

template<typename BasicJsonType , typename InputAdapterType >
string_t & detail::lexer< BasicJsonType, InputAdapterType >::get_string ( )
inline

return current string value (implicitly resets the token; useful only once)

Definition at line 8900 of file json.hpp.

◆ get_token_string()

template<typename BasicJsonType , typename InputAdapterType >
std::string detail::lexer< BasicJsonType, InputAdapterType >::get_token_string ( ) const
inline

return the last read token (for errors only). Will never contain EOF (an arbitrary value that is not a valid char value, often -1), because 255 may legitimately occur. May contain NUL, which should be escaped.

Definition at line 8918 of file json.hpp.

Here is the caller graph for this function:

◆ operator=() [1/2]

template<typename BasicJsonType , typename InputAdapterType >
lexer & detail::lexer< BasicJsonType, InputAdapterType >::operator= ( lexer< BasicJsonType, InputAdapterType > &&  )
default

◆ operator=() [2/2]

template<typename BasicJsonType , typename InputAdapterType >
lexer & detail::lexer< BasicJsonType, InputAdapterType >::operator= ( lexer< BasicJsonType, InputAdapterType > &  )
delete

◆ scan()

template<typename BasicJsonType , typename InputAdapterType >
token_type detail::lexer< BasicJsonType, InputAdapterType >::scan ( )
inline

Definition at line 8979 of file json.hpp.

◆ skip_bom()

template<typename BasicJsonType , typename InputAdapterType >
bool detail::lexer< BasicJsonType, InputAdapterType >::skip_bom ( )
inline

skip the UTF-8 byte order mark

Returns
true iff there is no BOM or the correct BOM has been skipped

Definition at line 8956 of file json.hpp.

Here is the call graph for this function:

◆ skip_whitespace()

template<typename BasicJsonType , typename InputAdapterType >
void detail::lexer< BasicJsonType, InputAdapterType >::skip_whitespace ( )
inline

Definition at line 8970 of file json.hpp.

Here is the call graph for this function:

The documentation for this class was generated from the following file: