fson  1.0.2
A comment-preserving C++ library for FSON — a human-friendly superset of JSON / JSON5
fedem::fson::FsonParser Class Referencefinal

#include <FsonParser.hh>

+ Inheritance diagram for fedem::fson::FsonParser:
+ Collaboration diagram for fedem::fson::FsonParser:

Classes

struct  PendingComment
 

Public Member Functions

 FsonParser ()
 
 ~FsonParser () override
 
std::string getGrammarName () const noexcept override
 
std::unique_ptr< DocumentparseFile (std::string const &filename)
 

Protected Member Functions

bool start () override
 
bool skipComments () override
 
bool skipWhiteSpaces () override
 

Private Member Functions

CommentList takeAllPending ()
 
std::optional< CommenttakePendingOnLine (unsigned long int line)
 
void restorePending (CommentList comments)
 
bool parseObjectBody (Object &object)
 
bool parseArrayBody (Array &array)
 
bool parseValue (std::unique_ptr< Value > &result)
 
bool parseString (std::string &result)
 
bool parseMultilineString (std::string &result)
 
void skipInlineBlanksAndBlockComments ()
 
bool parseName (std::string &result)
 
bool parseNumber (std::unique_ptr< Value > &result)
 
bool parseLiteralTail (std::string const &literal)
 
MemberparseMember (Object &object, unsigned long int &memberLine)
 
IncludeparseInclude (Object &object, unsigned long int &entryLine)
 
bool looksLikeInclude ()
 
bool readHexQuad (unsigned long int &codeUnit)
 
void decodeUnicodeEscape (std::string &result)
 
bool readHexByte (unsigned long int &byteValue)
 
void decodeHexByteEscape (std::string &result)
 
void recover ()
 

Static Private Member Functions

static void appendUtf8 (std::string &result, unsigned long int codePoint)
 

Private Attributes

std::unique_ptr< Documentdocument
 
std::vector< PendingCommentpending
 

Constructor & Destructor Documentation

◆ FsonParser()

fedem::fson::FsonParser::FsonParser ( )
default

◆ ~FsonParser()

fedem::fson::FsonParser::~FsonParser ( )
overridedefault

Member Function Documentation

◆ getGrammarName()

string fedem::fson::FsonParser::getGrammarName ( ) const
overridenoexcept

◆ parseFile()

unique_ptr< Document > fedem::fson::FsonParser::parseFile ( std::string const &  filename)

Referenced by fedem::fson::Fson::dependenciesOf(), fedem::fson::Fson::load(), and fedem::fson::IncludeResolver::loadTarget().

+ Here is the caller graph for this function:

◆ start()

bool fedem::fson::FsonParser::start ( )
overrideprotected

◆ skipComments()

bool fedem::fson::FsonParser::skipComments ( )
overrideprotected

◆ skipWhiteSpaces()

bool fedem::fson::FsonParser::skipWhiteSpaces ( )
overrideprotected

◆ takeAllPending()

CommentList fedem::fson::FsonParser::takeAllPending ( )
private

◆ takePendingOnLine()

optional< Comment > fedem::fson::FsonParser::takePendingOnLine ( unsigned long int  line)
private

◆ restorePending()

void fedem::fson::FsonParser::restorePending ( CommentList  comments)
private

References index.

◆ parseObjectBody()

bool fedem::fson::FsonParser::parseObjectBody ( Object object)
private

References fedem::fson::Value::asString(), fedem::fson::String::getForm(), fedem::fson::Include::getTrailingComment(), fedem::fson::Member::getTrailingComment(), and fedem::fson::Member::getValue().

+ Here is the call graph for this function:

◆ parseArrayBody()

bool fedem::fson::FsonParser::parseArrayBody ( Array array)
private

◆ parseValue()

bool fedem::fson::FsonParser::parseValue ( std::unique_ptr< Value > &  result)
private

◆ parseString()

bool fedem::fson::FsonParser::parseString ( std::string &  result)
private

◆ parseMultilineString()

bool fedem::fson::FsonParser::parseMultilineString ( std::string &  result)
private

◆ skipInlineBlanksAndBlockComments()

void fedem::fson::FsonParser::skipInlineBlanksAndBlockComments ( )
private

◆ parseName()

bool fedem::fson::FsonParser::parseName ( std::string &  result)
private

◆ parseNumber()

bool fedem::fson::FsonParser::parseNumber ( std::unique_ptr< Value > &  result)
private

References kind, and lexeme.

◆ parseLiteralTail()

bool fedem::fson::FsonParser::parseLiteralTail ( std::string const &  literal)
private

◆ parseMember()

Member * fedem::fson::FsonParser::parseMember ( Object object,
unsigned long int &  memberLine 
)
private

References fedem::fson::Member::getLeadingComments(), and key.

+ Here is the call graph for this function:

◆ parseInclude()

Include * fedem::fson::FsonParser::parseInclude ( Object object,
unsigned long int &  entryLine 
)
private

References fedem::fson::Include::getLeadingComments().

+ Here is the call graph for this function:

◆ looksLikeInclude()

bool fedem::fson::FsonParser::looksLikeInclude ( )
private

◆ readHexQuad()

bool fedem::fson::FsonParser::readHexQuad ( unsigned long int &  codeUnit)
private

References index.

◆ decodeUnicodeEscape()

void fedem::fson::FsonParser::decodeUnicodeEscape ( std::string &  result)
private

◆ readHexByte()

bool fedem::fson::FsonParser::readHexByte ( unsigned long int &  byteValue)
private

References index.

◆ decodeHexByteEscape()

void fedem::fson::FsonParser::decodeHexByteEscape ( std::string &  result)
private

◆ appendUtf8()

void fedem::fson::FsonParser::appendUtf8 ( std::string &  result,
unsigned long int  codePoint 
)
staticprivate

◆ recover()

void fedem::fson::FsonParser::recover ( )
private

Member Data Documentation

◆ document

std::unique_ptr< Document > fedem::fson::FsonParser::document
private

◆ pending

std::vector< PendingComment > fedem::fson::FsonParser::pending
private

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