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
	
	Block a user