Token t(GetToken());
AssertTokenType(t.type, Token::SCRIPT_BEGIN, msg);
+ t = GetToken();
vector<ScriptToken *> script;
try {
while (t.type != Token::SCRIPT_END) {
switch (t.type) {
case Token::COMMAND: {
Token t2(GetToken());
- AssertTokenType(t.type, Token::IDENTIFIER, msg);
+ AssertTokenType(t2.type, Token::IDENTIFIER, msg);
script.push_back(new ScriptToken(t2.str, ScriptToken::COMMAND));
break;
}
case Token::IDENTIFIER: {
- script.push_back(new ScriptToken(t.str, ScriptToken::IDENTIFIER));
+ Token t2(GetToken());
+ if (t2.type == Token::COLON) {
+ script.push_back(new ScriptToken(t.str, ScriptToken::LABEL));
+ } else {
+ tok.Putback(t2);
+ script.push_back(new ScriptToken(t.str, ScriptToken::IDENTIFIER));
+ }
break;
}
case Token::REGISTER: {
Token t2(GetToken());
- AssertTokenType(t.type, Token::IDENTIFIER, msg);
+ AssertTokenType(t2.type, Token::IDENTIFIER, msg);
script.push_back(new ScriptToken(t2.str, ScriptToken::REGISTER));
break;
}