![]() |
ArkScript
A small, fast, functional and scripting language for video games
|
#include <BaseParser.hpp>
Public Member Functions | |
BaseParser ()=default | |
Protected Member Functions | |
void | initParser (const std::string &filename, const std::string &code) |
FilePosition | getCursor () const |
void | error (const std::string &error, std::string exp) |
void | errorWithNextToken (const std::string &message) |
Fetch the next token (space and paren delimited) to generate an error. | |
void | errorMissingSuffix (char suffix, const std::string &node_name) |
Generate an error for a given node when a suffix is missing. | |
long | getCount () |
std::size_t | getSize () const |
bool | isEOF () const |
void | backtrack (long n) |
bool | accept (const CharPred &t, std::string *s=nullptr) |
check if a Character Predicate was able to parse, call next() if matching | |
bool | expect (const CharPred &t, std::string *s=nullptr) |
heck if a Character Predicate was able to parse, call next() if matching ; throw a CodeError if it doesn't match | |
bool | space (std::string *s=nullptr) |
bool | inlineSpace (std::string *s=nullptr) |
bool | comment (std::string *s=nullptr) |
bool | spaceComment (std::string *s=nullptr) |
bool | newlineOrComment (std::string *s=nullptr) |
bool | prefix (char c) |
bool | suffix (char c) |
bool | number (std::string *s=nullptr) |
bool | signedNumber (std::string *s=nullptr) |
bool | hexNumber (unsigned length, std::string *s=nullptr) |
bool | name (std::string *s=nullptr) |
bool | sequence (const std::string &s) |
bool | packageName (std::string *s=nullptr) |
bool | anyUntil (const CharPred &delim, std::string *s=nullptr) |
Match any char that do not match the predicate. | |
bool | oneOf (std::initializer_list< std::string > words, std::string *s=nullptr) |
Fetch a token and try to match one of the given words. | |
Protected Attributes | |
std::string | m_filename |
Private Member Functions | |
void | registerNewLine (std::string::iterator it, std::size_t row) |
Register the position of a new line, with an iterator pointing to the new line and the row number. | |
void | next () |
getting next character and changing the values of count/row/col/sym | |
Private Attributes | |
std::string | m_str |
std::vector< std::pair< std::string::iterator, std::size_t > > | m_it_to_row |
A crude map of position to line number to speed up line number computing. | |
std::string::iterator | m_it |
std::string::iterator | m_next_it |
utf8_char_t | m_sym |
The current utf8 character we're on. | |
FilePosition | m_filepos |
The position of the cursor in the file. | |
Definition at line 23 of file BaseParser.hpp.
|
default |
|
protected |
check if a Character Predicate was able to parse, call next() if matching
t | a char predicate to match |
s | optional string to append the matching chars to |
Definition at line 140 of file BaseParser.cpp.
References Ark::internal::utf8_char_t::c_str(), Ark::internal::utf8_char_t::codepoint(), isEOF(), m_sym, and next().
Referenced by anyUntil(), Ark::internal::Parser::block(), comment(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::functionCall(), hexNumber(), Ark::internal::Parser::import_(), inlineSpace(), Ark::internal::Parser::list(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), name(), number(), packageName(), prefix(), sequence(), signedNumber(), space(), and suffix().
|
protected |
Match any char that do not match the predicate.
delim | delimiter predicate |
s | optional string to append the matching chars to |
Definition at line 322 of file BaseParser.cpp.
References accept().
Referenced by errorWithNextToken().
|
protected |
Definition at line 82 of file BaseParser.cpp.
References Ark::internal::utf8_char_t::at(), Ark::internal::FilePosition::col, m_filepos, m_it, m_it_to_row, m_next_it, m_str, m_sym, and Ark::internal::FilePosition::row.
Referenced by Ark::internal::Parser::atom(), errorWithNextToken(), Ark::internal::Parser::function(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), Ark::internal::Parser::node(), and Ark::internal::Parser::process().
|
protected |
Definition at line 196 of file BaseParser.cpp.
References accept().
Referenced by Ark::internal::Parser::block(), Ark::internal::Parser::condition(), Ark::internal::Parser::del(), Ark::internal::Parser::function(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::functionCall(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::list(), Ark::internal::Parser::loop(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), Ark::internal::Parser::macroCondition(), newlineOrComment(), Ark::internal::Parser::process(), spaceComment(), and Ark::internal::Parser::wrapped().
|
protected |
error | an error message |
exp | the expression causing the error |
Definition at line 118 of file BaseParser.cpp.
References error(), getCursor(), m_filename, and m_sym.
Referenced by error(), errorWithNextToken(), expect(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::import_(), initParser(), and Ark::internal::Parser::letMutSet().
|
protected |
Generate an error for a given node when a suffix is missing.
suffix | a suffix char, eg " or ) @param node_name can be "string", "node" ; represents a structure |
Definition at line 135 of file BaseParser.cpp.
References errorWithNextToken(), and suffix().
Referenced by Ark::internal::Parser::wrapped().
|
protected |
Fetch the next token (space and paren delimited) to generate an error.
message | an error message |
Definition at line 124 of file BaseParser.cpp.
References anyUntil(), backtrack(), error(), and getCount().
Referenced by Ark::internal::Parser::condition(), Ark::internal::Parser::del(), errorMissingSuffix(), Ark::internal::Parser::function(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::loop(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), Ark::internal::Parser::macroCondition(), and Ark::internal::Parser::process().
|
protected |
heck if a Character Predicate was able to parse, call next() if matching ; throw a CodeError if it doesn't match
t | a char predicate to match |
s | optional string to append the matching chars to |
Definition at line 156 of file BaseParser.cpp.
References Ark::internal::utf8_char_t::c_str(), Ark::internal::utf8_char_t::codepoint(), error(), m_sym, Ark::internal::CharPred::name, and next().
Referenced by Ark::internal::Parser::block(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::functionCall(), Ark::internal::Parser::import_(), Ark::internal::Parser::list(), and Ark::internal::Parser::macro().
|
inlineprotected |
Definition at line 81 of file BaseParser.hpp.
Referenced by Ark::internal::Parser::atom(), errorWithNextToken(), Ark::internal::Parser::function(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), Ark::internal::Parser::node(), and Ark::internal::Parser::process().
|
protected |
Definition at line 113 of file BaseParser.cpp.
References m_filepos.
Referenced by Ark::internal::Parser::anyAtomOf(), error(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::functionCall(), Ark::internal::Parser::import_(), Ark::internal::Parser::nodeOrValue(), Ark::internal::Parser::setNodePosAndFilename(), and Ark::internal::Parser::wrapped().
|
inlineprotected |
Definition at line 87 of file BaseParser.hpp.
|
protected |
Definition at line 279 of file BaseParser.cpp.
References accept().
|
protected |
Definition at line 64 of file BaseParser.cpp.
References error(), m_filename, m_it, m_next_it, m_str, m_sym, and next().
Referenced by Ark::internal::Parser::process().
|
protected |
|
inlinenodiscardprotected |
Definition at line 93 of file BaseParser.hpp.
Referenced by accept(), Ark::internal::Parser::block(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::functionCall(), Ark::internal::Parser::import_(), Ark::internal::Parser::list(), Ark::internal::Parser::macroArgs(), newlineOrComment(), next(), Ark::internal::Parser::process(), and spaceComment().
|
protected |
Definition at line 290 of file BaseParser.cpp.
References accept().
Referenced by Ark::internal::Parser::del(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), oneOf(), and Ark::internal::Parser::wrapped().
|
protected |
Definition at line 222 of file BaseParser.cpp.
References comment(), isEOF(), and space().
Referenced by Ark::internal::Parser::block(), Ark::internal::Parser::condition(), Ark::internal::Parser::del(), Ark::internal::Parser::function(), Ark::internal::Parser::functionArgs(), Ark::internal::Parser::functionCall(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::list(), Ark::internal::Parser::loop(), Ark::internal::Parser::macro(), Ark::internal::Parser::macroArgs(), Ark::internal::Parser::macroCondition(), Ark::internal::Parser::process(), and Ark::internal::Parser::wrapped().
|
private |
getting next character and changing the values of count/row/col/sym
Definition at line 40 of file BaseParser.cpp.
References Ark::internal::utf8_char_t::at(), Ark::internal::FilePosition::col, isEOF(), Ark::internal::utf8_char_t::isPrintable(), m_filepos, m_it, m_next_it, m_str, m_sym, registerNewLine(), Ark::internal::FilePosition::row, and Ark::internal::utf8_char_t::size().
Referenced by accept(), expect(), initParser(), and registerNewLine().
|
protected |
|
protected |
Fetch a token and try to match one of the given words.
words | list of words to match against |
s | optional string to append the matching chars to |
Definition at line 333 of file BaseParser.cpp.
References name().
Referenced by Ark::internal::Parser::block(), Ark::internal::Parser::condition(), Ark::internal::Parser::del(), Ark::internal::Parser::function(), Ark::internal::Parser::import_(), Ark::internal::Parser::letMutSet(), Ark::internal::Parser::loop(), Ark::internal::Parser::macro(), and Ark::internal::Parser::macroCondition().
|
protected |
Definition at line 311 of file BaseParser.cpp.
References accept().
Referenced by Ark::internal::Parser::import_().
|
protected |
Definition at line 236 of file BaseParser.cpp.
References accept().
Referenced by Ark::internal::Parser::wrapped().
|
private |
Register the position of a new line, with an iterator pointing to the new line and the row number.
it | |
row |
Definition at line 11 of file BaseParser.cpp.
References m_it_to_row, m_str, and next().
Referenced by next().
|
protected |
Definition at line 304 of file BaseParser.cpp.
References accept().
Referenced by Ark::internal::Parser::macroArgs().
|
protected |
Definition at line 261 of file BaseParser.cpp.
References accept(), Ark::internal::IsMinus, and number().
|
protected |
Definition at line 168 of file BaseParser.cpp.
References accept().
Referenced by Ark::internal::Parser::import_(), and newlineOrComment().
|
protected |
Definition at line 208 of file BaseParser.cpp.
References comment(), inlineSpace(), and isEOF().
Referenced by Ark::internal::Parser::process(), and Ark::internal::Parser::wrapped().
|
protected |
Definition at line 243 of file BaseParser.cpp.
References accept().
Referenced by errorMissingSuffix(), and Ark::internal::Parser::wrapped().
|
protected |
Definition at line 49 of file BaseParser.hpp.
Referenced by error(), initParser(), and Ark::internal::Parser::setNodePosAndFilename().
|
private |
The position of the cursor in the file.
Definition at line 33 of file BaseParser.hpp.
Referenced by backtrack(), getCursor(), and next().
|
private |
Definition at line 31 of file BaseParser.hpp.
Referenced by backtrack(), initParser(), and next().
|
private |
A crude map of
position to line number to speed up line number computing.
Definition at line 30 of file BaseParser.hpp.
Referenced by backtrack(), and registerNewLine().
|
private |
Definition at line 31 of file BaseParser.hpp.
Referenced by backtrack(), initParser(), and next().
|
private |
Definition at line 29 of file BaseParser.hpp.
Referenced by backtrack(), initParser(), next(), and registerNewLine().
|
private |
The current utf8 character we're on.
Definition at line 32 of file BaseParser.hpp.
Referenced by accept(), backtrack(), error(), expect(), initParser(), and next().