Remove declare and string types to prepare for preprocessor
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
DECLARE MEMORY_SIZE $4096;
|
||||
#DECLARE MEMORY_SIZE $4096;
|
||||
|
||||
addi $10 $-5 %A;
|
||||
subi %A $2 %B;
|
||||
|
||||
@@ -21,7 +21,6 @@ namespace Token
|
||||
EqualInteger,
|
||||
SetInteger,
|
||||
Interrupt,
|
||||
Declaration,
|
||||
PushInteger,
|
||||
PopInteger
|
||||
};
|
||||
|
||||
@@ -43,7 +43,6 @@ namespace Token
|
||||
static Token CreateOperandToken(OperandType const operandType, int const lineNumber, int const lineColumn);
|
||||
static Token CreateMemoryToken(RegisterType const registerType, int const lineNumber, int const lineColumn);
|
||||
static Token CreateMemoryToken(int const value, bool isValid, int const lineNumber, int const lineColumn);
|
||||
static Token CreateStringLiteralToken(std::string const & value, int const lineNumber, int const lineColumn);
|
||||
|
||||
void DebugPrint() const;
|
||||
};
|
||||
|
||||
@@ -10,7 +10,6 @@ namespace Token
|
||||
Register,
|
||||
StatementEnd,
|
||||
Label,
|
||||
String,
|
||||
Memory
|
||||
};
|
||||
}
|
||||
@@ -76,19 +76,7 @@ namespace Interpret
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(std::get<Token::OperandType>(tokens[operatorTokenIndex].data))
|
||||
{
|
||||
case Token::OperandType::Declaration:
|
||||
{
|
||||
auto const tuple = ExtractDeclaration(operatorTokenIndex, tokens);
|
||||
code.declarations[std::get<0>(tuple)] = std::get<1>(tuple);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
code.statements.emplace_back(ExtractStatement(operatorTokenIndex, tokens));
|
||||
break;
|
||||
}
|
||||
code.statements.emplace_back(ExtractStatement(operatorTokenIndex, tokens));
|
||||
state = InterpreterState::FindOperand;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -308,7 +308,6 @@ namespace Interpret
|
||||
case Token::OperandType::GreaterThanInteger:
|
||||
case Token::OperandType::EqualInteger:
|
||||
case Token::OperandType::SetInteger:
|
||||
case Token::OperandType::Declaration:
|
||||
return 2;
|
||||
|
||||
case Token::OperandType::Jump:
|
||||
|
||||
@@ -22,7 +22,6 @@ namespace Token
|
||||
{ "eqi", OperandType::EqualInteger },
|
||||
{ "seti", OperandType::SetInteger },
|
||||
{ "int", OperandType::Interrupt },
|
||||
{ "DECLARE", OperandType::Declaration },
|
||||
{ "pushi", OperandType::PushInteger},
|
||||
{ "popi", OperandType::PopInteger},
|
||||
};
|
||||
|
||||
@@ -103,11 +103,6 @@ namespace Token
|
||||
return Token(TokenType::Memory, value, isValid, lineNumber, lineColumn);
|
||||
}
|
||||
|
||||
Token Token::CreateStringLiteralToken(std::string const & value, int const lineNumber, int const lineColumn)
|
||||
{
|
||||
return Token(TokenType::String, value.substr(1, value.size() - 2), true, lineNumber, lineColumn);
|
||||
}
|
||||
|
||||
void Token::DebugPrint() const
|
||||
{
|
||||
std::putc(' ', stdout);
|
||||
@@ -193,10 +188,6 @@ namespace Token
|
||||
}
|
||||
break;
|
||||
|
||||
case TokenType::String:
|
||||
std::printf("STRING=\"%s\"", std::get<std::string>(data).c_str());
|
||||
break;
|
||||
|
||||
case TokenType::Unknown:
|
||||
default:
|
||||
std::printf("UNKNOWN_TOKEN");
|
||||
|
||||
@@ -100,7 +100,6 @@ namespace Token
|
||||
enum class TokenizerState
|
||||
{
|
||||
LookForNextToken,
|
||||
LookForStringEnd,
|
||||
LookForTokenEnd,
|
||||
};
|
||||
|
||||
@@ -123,10 +122,6 @@ namespace Token
|
||||
|
||||
switch(line[column])
|
||||
{
|
||||
case '"':
|
||||
state = TokenizerState::LookForStringEnd;
|
||||
break;
|
||||
|
||||
case ';':
|
||||
tokens.push_back(ExtractToken(line.substr(column, 1), lineNumber, column));
|
||||
break;
|
||||
@@ -150,13 +145,9 @@ namespace Token
|
||||
}
|
||||
break;
|
||||
|
||||
case TokenizerState::LookForStringEnd:
|
||||
if (line[column] == '"' && line[column - 1] != '\\')
|
||||
{
|
||||
tokens.push_back(
|
||||
Token::CreateStringLiteralToken(line.substr(columnTokenStart, column - columnTokenStart), lineNumber, columnTokenStart));
|
||||
state = TokenizerState::LookForNextToken;
|
||||
}
|
||||
default:
|
||||
std::puts("DEBUG: Unhandled TokenizerState value");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,9 +157,6 @@ namespace Token
|
||||
tokens.push_back(ExtractToken(line.substr(columnTokenStart, line.size()), lineNumber, columnTokenStart));
|
||||
break;
|
||||
|
||||
case TokenizerState::LookForStringEnd:
|
||||
throw MissingEndOfString(ExtractToken(line.substr(columnTokenStart, line.size()), lineNumber, columnTokenStart));
|
||||
|
||||
case TokenizerState::LookForNextToken:
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user