Add unsigned short values to the tok::type enum and move the parseString function to misc.hpp.
This commit is contained in:
parent
fbe8e189d3
commit
2f853fe797
|
@ -83,7 +83,7 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "Yerbacon ${CMAKE_PROJECT_VERSION_MAJOR}.${C
|
|||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CMAKE_PROJECT_VERSION}-${TIME}")
|
||||
|
||||
include_directories(${CMAKE_CURRENT_LIST_DIR})
|
||||
add_executable(${EXENAME} src/main.cpp ${CMAKE_CURRENT_BINARY_DIR}/processed/${PROJECT_NAME}.rc src/parser/MainParse.cpp src/etc/filefuncs.cpp src/etc/lexer.cpp src/headers/lex.hpp src/headers/misc.hpp src/headers/parsing/ParseComponents.hpp src/headers/transpiler/Target.hpp src/headers/transpiler/implementations/Lua.hpp src/headers/transpiler/implementations/Js.hpp src/headers/transpiler/implementations/Py.hpp src/headers/parsing/Parser.hpp src/headers/Yerbacon.hpp src/headers/arguments.hpp)
|
||||
add_executable(${EXENAME} src/main.cpp ${CMAKE_CURRENT_BINARY_DIR}/processed/${PROJECT_NAME}.rc src/etc/filefuncs.cpp src/etc/lexer.cpp src/headers/lex.hpp src/headers/misc.hpp src/headers/parsing/ParseComponents.hpp src/headers/transpiler/Target.hpp src/headers/transpiler/implementations/Lua.hpp src/headers/transpiler/implementations/Js.hpp src/headers/transpiler/implementations/Py.hpp src/headers/parsing/Parser.hpp src/headers/Yerbacon.hpp src/headers/arguments.hpp)
|
||||
target_compile_definitions(ybcon PRIVATE YBCON_VERSION="${CODENAME} ${PROJECT_VERSION}")
|
||||
|
||||
# lpkg = linux package, wpkg = windows package
|
||||
|
|
|
@ -14,20 +14,10 @@ vector<tok> lex(const string& in)
|
|||
for (unsigned int i = 0; i < in.size(); ++i) {
|
||||
const char& current = in[i];
|
||||
switch (current) {
|
||||
case '#': resVal.emplace_back(tok::TAG, "#"); break;
|
||||
case '=': resVal.emplace_back(tok::DEFINE, "="); break;
|
||||
case '(': resVal.emplace_back(tok::LPAR, "("); break;
|
||||
case ')': resVal.emplace_back(tok::RPAR, ")"); break;
|
||||
case '{': resVal.emplace_back(tok::LBRACE, "{"); break;
|
||||
case '}': resVal.emplace_back(tok::RBRACE, "}"); break;
|
||||
case '[': resVal.emplace_back(tok::LBRACKET, "["); break;
|
||||
case ']': resVal.emplace_back(tok::RBRACKET, "]"); break;
|
||||
case '+': resVal.emplace_back(tok::PLUS, "+"); break;
|
||||
case '-': resVal.emplace_back(tok::HYPHEN, "-"); break;
|
||||
case '>': resVal.emplace_back(tok::LCOMP, ">"); break;
|
||||
case '<': resVal.emplace_back(tok::RCOMP, "<"); break;
|
||||
case '$': resVal.emplace_back(tok::DOLLAR_SIGN, "$"); break;
|
||||
case '\'': resVal.emplace_back(tok::SQUOTE, "\'"); break;
|
||||
case tok::TAG: case tok::DEFINE: case tok::LPAR: case tok::RPAR:
|
||||
case tok::LBRACE: case tok::RBRACE: case tok::LBRACKET: case tok::RBRACKET:
|
||||
case tok::PLUS: case tok::HYPHEN: case tok::LCOMP: case tok::RCOMP:
|
||||
case '$': case '\'': resVal.emplace_back(static_cast<tok::type>(current), string(1, current));
|
||||
case ' ': case '\t': case '\r':
|
||||
case '\n': break;
|
||||
default: {
|
||||
|
|
|
@ -3,18 +3,21 @@
|
|||
|
||||
#include <vector>
|
||||
#include "Yerbacon.hpp"
|
||||
#include <limits>
|
||||
#include <ostream>
|
||||
|
||||
struct tok {
|
||||
class LexerException: public Yerbacon::Exception {
|
||||
using Yerbacon::Exception::Exception;
|
||||
};
|
||||
enum type {
|
||||
DEFINE, TAG, DOLLAR_SIGN, NUMBER, PLUS, LPAR, LBRACE, LBRACKET, RPAR, RBRACE, RBRACKET, ALPHACHAR, HYPHEN, LCOMP, RCOMP,
|
||||
SQUOTE,
|
||||
STRING,
|
||||
IDENTIFIER,
|
||||
UNEXPECTED
|
||||
enum type: const unsigned short {
|
||||
UNEXPECTED = std::numeric_limits<unsigned char>::max() + 1, IDENTIFIER, NUMBER, ALPHACHAR,
|
||||
DEFINE = '=', TAG = '#', DOLLAR_SIGN = '$',
|
||||
PLUS = '+', LPAR = '(', LBRACE = '{', LBRACKET = '[', RPAR = ')',
|
||||
RBRACE = '}', RBRACKET = ']',
|
||||
HYPHEN = '-', LCOMP = '>', RCOMP = '<',
|
||||
SQUOTE = '\'',
|
||||
STRING = '"',
|
||||
};
|
||||
const type toktype;
|
||||
const std::string toktext;
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
string getFileContent(const string& file);
|
||||
void outputFileContent(const string& file, string_view content);
|
||||
|
||||
#include "src/headers/parsing/ParseComponents.hpp"
|
||||
ParseTree parseString(const string& toParse);
|
||||
#include "lex.hpp"
|
||||
#include "parsing/Parser.hpp"
|
||||
inline auto parseString(const string& toParse) { return Parser::parseVector(lex(toParse)); }
|
||||
|
||||
#endif //YERBACON_MISC_HPP
|
|
@ -1,7 +0,0 @@
|
|||
#include "../headers/parsing/Parser.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
ParseTree parseString(const string& toParse) {
|
||||
return Parser::parseVector(lex(toParse));
|
||||
}
|
Loading…
Reference in New Issue