Add a SEMICOLON token
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
This commit is contained in:
parent
1d3046892f
commit
14b71906b7
|
@ -49,11 +49,11 @@ vector<tok> lex(const string& in)
|
||||||
} else goto insertToken;
|
} else goto insertToken;
|
||||||
}
|
}
|
||||||
case DEFINE: case RPAR: case COMMA:
|
case DEFINE: case RPAR: case COMMA:
|
||||||
case RBRACE: case RBRACKET:
|
case RBRACE: case RBRACKET: case SEMICOLON:
|
||||||
case PLUS: case HYPHEN: case LCOMP: case RCOMP:
|
case PLUS: case HYPHEN: case LCOMP: case RCOMP:
|
||||||
case DOT: case DOLLAR_SIGN: case SQUOTE:
|
case DOT: case DOLLAR_SIGN: case SQUOTE:
|
||||||
insertToken: resVal.emplace_back(static_cast<tok::type>(current), lineNumber);
|
insertToken: resVal.emplace_back(static_cast<tok::type>(current), lineNumber);
|
||||||
[[likely]] case ' ': case '\t': case '\r': case ';': break;
|
[[likely]] case ' ': case '\t': case '\r': break;
|
||||||
[[likely]] case '\n': ++lineNumber; break;
|
[[likely]] case '\n': ++lineNumber; break;
|
||||||
default: {
|
default: {
|
||||||
const tok::type type = getIdentifierCharType(current);
|
const tok::type type = getIdentifierCharType(current);
|
||||||
|
|
|
@ -11,7 +11,7 @@ struct tok {
|
||||||
typedef Yerbacon::Exception LexerException;
|
typedef Yerbacon::Exception LexerException;
|
||||||
enum type: const unsigned short {
|
enum type: const unsigned short {
|
||||||
UNEXPECTED = std::numeric_limits<unsigned char>::max() + 1, IDENTIFIER, NUMBER, ALPHACHAR,
|
UNEXPECTED = std::numeric_limits<unsigned char>::max() + 1, IDENTIFIER, NUMBER, ALPHACHAR,
|
||||||
DEFINE = '=', TAG = '#', DOLLAR_SIGN = '$', DOT = '.', COMMA = ',',
|
DEFINE = '=', TAG = '#', DOLLAR_SIGN = '$', DOT = '.', COMMA = ',', SEMICOLON = ';',
|
||||||
LPAR = '(', LBRACE = '{', LBRACKET = '[', RPAR = ')',
|
LPAR = '(', LBRACE = '{', LBRACKET = '[', RPAR = ')',
|
||||||
RBRACE = '}', RBRACKET = ']',
|
RBRACE = '}', RBRACKET = ']',
|
||||||
PLUS = '+', HYPHEN = '-', DIVIDE = '/',
|
PLUS = '+', HYPHEN = '-', DIVIDE = '/',
|
||||||
|
|
|
@ -92,7 +92,7 @@ namespace Parser {
|
||||||
const unsigned increment = 2 + isFinalDefine;
|
const unsigned increment = 2 + isFinalDefine;
|
||||||
const auto beginning = lexed.begin() + i + increment;
|
const auto beginning = lexed.begin() + i + increment;
|
||||||
const auto end = find_if(beginning, lexed.end(), [¤t](const tok& it){ // TODO Find another way of choosing the tokens to parse
|
const auto end = find_if(beginning, lexed.end(), [¤t](const tok& it){ // TODO Find another way of choosing the tokens to parse
|
||||||
return it.line != current.line;
|
return it.toktype == SEMICOLON || it.line != current.line;
|
||||||
});
|
});
|
||||||
parseTree << Define(isFinalDefine, current.toktext, parse(beginning, end));
|
parseTree << Define(isFinalDefine, current.toktext, parse(beginning, end));
|
||||||
i += 1 + isFinalDefine + distance(beginning, end);
|
i += 1 + isFinalDefine + distance(beginning, end);
|
||||||
|
|
Loading…
Reference in New Issue