mirror of
https://github.com/hazemKrimi/jack-vm-translator.git
synced 2026-05-01 18:00:27 +00:00
Fix parsing non argument commands
This commit is contained in:
+9
-10
@@ -31,9 +31,9 @@ public:
|
||||
|
||||
void translate()
|
||||
{
|
||||
for (const auto &vec : commands)
|
||||
for (const vector<string> &vec : commands)
|
||||
{
|
||||
if (vec.size() > 1)
|
||||
if (vec.size() == 3)
|
||||
{
|
||||
if (vec[0] == "push")
|
||||
{
|
||||
@@ -44,17 +44,16 @@ public:
|
||||
file << translatePop(filename, determineSegment(vec[1]), stoi(vec[2]));
|
||||
}
|
||||
}
|
||||
|
||||
if (vec.size() == 1)
|
||||
else if (vec.size() == 1)
|
||||
{
|
||||
if (vec[0] == "add")
|
||||
cout << translateAdd();
|
||||
if (vec.at(0) == "add")
|
||||
file << translateAdd();
|
||||
|
||||
if (vec[0] == "sub")
|
||||
cout << translateSub();
|
||||
if (vec.at(0) == "sub")
|
||||
file << translateSub();
|
||||
|
||||
if (vec[0] == "neg")
|
||||
cout << translateNeg();
|
||||
if (vec.at(0) == "neg")
|
||||
file << translateNeg();
|
||||
}
|
||||
|
||||
file << endl;
|
||||
|
||||
@@ -80,7 +80,7 @@ string translatePush(string filename, Segment segment, int index)
|
||||
output << "M=M+1" << endl;
|
||||
|
||||
return output.str();
|
||||
};
|
||||
}
|
||||
|
||||
string translatePop(string filename, Segment segment, int index)
|
||||
{
|
||||
@@ -146,4 +146,4 @@ string translatePop(string filename, Segment segment, int index)
|
||||
output << "M=D" << endl;
|
||||
|
||||
return output.str();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -73,9 +73,9 @@ public:
|
||||
matchedVector.push_back(matched[2]);
|
||||
matchedVector.push_back(matched[3]);
|
||||
}
|
||||
else
|
||||
else if (regex_search(text, matched, regex("^(.*)")))
|
||||
{
|
||||
matchedVector.push_back(text);
|
||||
matchedVector.push_back(matched[1]);
|
||||
}
|
||||
commands.push_back(matchedVector);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user