feat: updated godot version
This commit is contained in:
parent
0c508b0831
commit
42b028dbb5
4694 changed files with 236470 additions and 401376 deletions
|
|
@ -372,6 +372,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::make_token(Token::Type p_type) {
|
|||
if (start_line == line) {
|
||||
// Single line token.
|
||||
if (cursor_line == start_line && cursor_column >= start_column && cursor_column <= last_column) {
|
||||
token.cursor_position = cursor_column - start_column;
|
||||
if (cursor_column == start_column) {
|
||||
token.cursor_place = CURSOR_BEGINNING;
|
||||
} else if (cursor_column < column) {
|
||||
|
|
@ -384,6 +385,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::make_token(Token::Type p_type) {
|
|||
// Multi line token.
|
||||
if (cursor_line == start_line && cursor_column >= start_column) {
|
||||
// Is in first line.
|
||||
token.cursor_position = cursor_column - start_column;
|
||||
if (cursor_column == start_column) {
|
||||
token.cursor_place = CURSOR_BEGINNING;
|
||||
} else {
|
||||
|
|
@ -391,6 +393,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::make_token(Token::Type p_type) {
|
|||
}
|
||||
} else if (cursor_line == line && cursor_column <= last_column) {
|
||||
// Is in last line.
|
||||
token.cursor_position = cursor_column - start_column;
|
||||
if (cursor_column < column) {
|
||||
token.cursor_place = CURSOR_MIDDLE;
|
||||
} else {
|
||||
|
|
@ -398,7 +401,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::make_token(Token::Type p_type) {
|
|||
}
|
||||
} else if (cursor_line > start_line && cursor_line < line) {
|
||||
// Is in middle line.
|
||||
token.cursor_place = CURSOR_MIDDLE;
|
||||
token.cursor_position = CURSOR_MIDDLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -483,66 +486,66 @@ GDScriptTokenizer::Token GDScriptTokenizerText::annotation() {
|
|||
return annotation;
|
||||
}
|
||||
|
||||
#define KEYWORDS(KEYWORD_GROUP, KEYWORD) \
|
||||
KEYWORD_GROUP('a') \
|
||||
KEYWORD("as", Token::AS) \
|
||||
KEYWORD("and", Token::AND) \
|
||||
KEYWORD("assert", Token::ASSERT) \
|
||||
KEYWORD("await", Token::AWAIT) \
|
||||
KEYWORD_GROUP('b') \
|
||||
KEYWORD("break", Token::BREAK) \
|
||||
#define KEYWORDS(KEYWORD_GROUP, KEYWORD) \
|
||||
KEYWORD_GROUP('a') \
|
||||
KEYWORD("as", Token::AS) \
|
||||
KEYWORD("and", Token::AND) \
|
||||
KEYWORD("assert", Token::ASSERT) \
|
||||
KEYWORD("await", Token::AWAIT) \
|
||||
KEYWORD_GROUP('b') \
|
||||
KEYWORD("break", Token::BREAK) \
|
||||
KEYWORD("breakpoint", Token::BREAKPOINT) \
|
||||
KEYWORD_GROUP('c') \
|
||||
KEYWORD("class", Token::CLASS) \
|
||||
KEYWORD_GROUP('c') \
|
||||
KEYWORD("class", Token::CLASS) \
|
||||
KEYWORD("class_name", Token::CLASS_NAME) \
|
||||
KEYWORD("const", Token::TK_CONST) \
|
||||
KEYWORD("continue", Token::CONTINUE) \
|
||||
KEYWORD_GROUP('e') \
|
||||
KEYWORD("elif", Token::ELIF) \
|
||||
KEYWORD("else", Token::ELSE) \
|
||||
KEYWORD("enum", Token::ENUM) \
|
||||
KEYWORD("extends", Token::EXTENDS) \
|
||||
KEYWORD_GROUP('f') \
|
||||
KEYWORD("for", Token::FOR) \
|
||||
KEYWORD("func", Token::FUNC) \
|
||||
KEYWORD_GROUP('i') \
|
||||
KEYWORD("if", Token::IF) \
|
||||
KEYWORD("in", Token::TK_IN) \
|
||||
KEYWORD("is", Token::IS) \
|
||||
KEYWORD_GROUP('m') \
|
||||
KEYWORD("match", Token::MATCH) \
|
||||
KEYWORD_GROUP('n') \
|
||||
KEYWORD("namespace", Token::NAMESPACE) \
|
||||
KEYWORD("not", Token::NOT) \
|
||||
KEYWORD_GROUP('o') \
|
||||
KEYWORD("or", Token::OR) \
|
||||
KEYWORD_GROUP('p') \
|
||||
KEYWORD("pass", Token::PASS) \
|
||||
KEYWORD("preload", Token::PRELOAD) \
|
||||
KEYWORD_GROUP('r') \
|
||||
KEYWORD("return", Token::RETURN) \
|
||||
KEYWORD_GROUP('s') \
|
||||
KEYWORD("self", Token::SELF) \
|
||||
KEYWORD("signal", Token::SIGNAL) \
|
||||
KEYWORD("static", Token::STATIC) \
|
||||
KEYWORD("super", Token::SUPER) \
|
||||
KEYWORD_GROUP('t') \
|
||||
KEYWORD("trait", Token::TRAIT) \
|
||||
KEYWORD_GROUP('v') \
|
||||
KEYWORD("var", Token::VAR) \
|
||||
KEYWORD("void", Token::TK_VOID) \
|
||||
KEYWORD_GROUP('w') \
|
||||
KEYWORD("while", Token::WHILE) \
|
||||
KEYWORD("when", Token::WHEN) \
|
||||
KEYWORD_GROUP('y') \
|
||||
KEYWORD("yield", Token::YIELD) \
|
||||
KEYWORD_GROUP('I') \
|
||||
KEYWORD("INF", Token::CONST_INF) \
|
||||
KEYWORD_GROUP('N') \
|
||||
KEYWORD("NAN", Token::CONST_NAN) \
|
||||
KEYWORD_GROUP('P') \
|
||||
KEYWORD("PI", Token::CONST_PI) \
|
||||
KEYWORD_GROUP('T') \
|
||||
KEYWORD("const", Token::TK_CONST) \
|
||||
KEYWORD("continue", Token::CONTINUE) \
|
||||
KEYWORD_GROUP('e') \
|
||||
KEYWORD("elif", Token::ELIF) \
|
||||
KEYWORD("else", Token::ELSE) \
|
||||
KEYWORD("enum", Token::ENUM) \
|
||||
KEYWORD("extends", Token::EXTENDS) \
|
||||
KEYWORD_GROUP('f') \
|
||||
KEYWORD("for", Token::FOR) \
|
||||
KEYWORD("func", Token::FUNC) \
|
||||
KEYWORD_GROUP('i') \
|
||||
KEYWORD("if", Token::IF) \
|
||||
KEYWORD("in", Token::TK_IN) \
|
||||
KEYWORD("is", Token::IS) \
|
||||
KEYWORD_GROUP('m') \
|
||||
KEYWORD("match", Token::MATCH) \
|
||||
KEYWORD_GROUP('n') \
|
||||
KEYWORD("namespace", Token::NAMESPACE) \
|
||||
KEYWORD("not", Token::NOT) \
|
||||
KEYWORD_GROUP('o') \
|
||||
KEYWORD("or", Token::OR) \
|
||||
KEYWORD_GROUP('p') \
|
||||
KEYWORD("pass", Token::PASS) \
|
||||
KEYWORD("preload", Token::PRELOAD) \
|
||||
KEYWORD_GROUP('r') \
|
||||
KEYWORD("return", Token::RETURN) \
|
||||
KEYWORD_GROUP('s') \
|
||||
KEYWORD("self", Token::SELF) \
|
||||
KEYWORD("signal", Token::SIGNAL) \
|
||||
KEYWORD("static", Token::STATIC) \
|
||||
KEYWORD("super", Token::SUPER) \
|
||||
KEYWORD_GROUP('t') \
|
||||
KEYWORD("trait", Token::TRAIT) \
|
||||
KEYWORD_GROUP('v') \
|
||||
KEYWORD("var", Token::VAR) \
|
||||
KEYWORD("void", Token::TK_VOID) \
|
||||
KEYWORD_GROUP('w') \
|
||||
KEYWORD("while", Token::WHILE) \
|
||||
KEYWORD("when", Token::WHEN) \
|
||||
KEYWORD_GROUP('y') \
|
||||
KEYWORD("yield", Token::YIELD) \
|
||||
KEYWORD_GROUP('I') \
|
||||
KEYWORD("INF", Token::CONST_INF) \
|
||||
KEYWORD_GROUP('N') \
|
||||
KEYWORD("NAN", Token::CONST_NAN) \
|
||||
KEYWORD_GROUP('P') \
|
||||
KEYWORD("PI", Token::CONST_PI) \
|
||||
KEYWORD_GROUP('T') \
|
||||
KEYWORD("TAU", Token::CONST_TAU)
|
||||
|
||||
#define MIN_KEYWORD_LENGTH 2
|
||||
|
|
@ -604,18 +607,18 @@ GDScriptTokenizer::Token GDScriptTokenizerText::potential_identifier() {
|
|||
|
||||
// Define some helper macros for the switch case.
|
||||
#define KEYWORD_GROUP_CASE(char) \
|
||||
break; \
|
||||
break; \
|
||||
case char:
|
||||
#define KEYWORD(keyword, token_type) \
|
||||
{ \
|
||||
const int keyword_length = sizeof(keyword) - 1; \
|
||||
static_assert(keyword_length <= MAX_KEYWORD_LENGTH, "There's a keyword longer than the defined maximum length"); \
|
||||
#define KEYWORD(keyword, token_type) \
|
||||
{ \
|
||||
const int keyword_length = sizeof(keyword) - 1; \
|
||||
static_assert(keyword_length <= MAX_KEYWORD_LENGTH, "There's a keyword longer than the defined maximum length"); \
|
||||
static_assert(keyword_length >= MIN_KEYWORD_LENGTH, "There's a keyword shorter than the defined minimum length"); \
|
||||
if (keyword_length == len && name == keyword) { \
|
||||
Token kw = make_token(token_type); \
|
||||
kw.literal = name; \
|
||||
return kw; \
|
||||
} \
|
||||
if (keyword_length == len && name == keyword) { \
|
||||
Token kw = make_token(token_type); \
|
||||
kw.literal = name; \
|
||||
return kw; \
|
||||
} \
|
||||
}
|
||||
|
||||
// Find if it's a keyword.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue