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:
+10
-11
@@ -31,9 +31,9 @@ public:
|
|||||||
|
|
||||||
void translate()
|
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")
|
if (vec[0] == "push")
|
||||||
{
|
{
|
||||||
@@ -44,17 +44,16 @@ public:
|
|||||||
file << translatePop(filename, determineSegment(vec[1]), stoi(vec[2]));
|
file << translatePop(filename, determineSegment(vec[1]), stoi(vec[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (vec.size() == 1)
|
||||||
if (vec.size() == 1)
|
|
||||||
{
|
{
|
||||||
if (vec[0] == "add")
|
if (vec.at(0) == "add")
|
||||||
cout << translateAdd();
|
file << translateAdd();
|
||||||
|
|
||||||
if (vec[0] == "sub")
|
if (vec.at(0) == "sub")
|
||||||
cout << translateSub();
|
file << translateSub();
|
||||||
|
|
||||||
if (vec[0] == "neg")
|
if (vec.at(0) == "neg")
|
||||||
cout << translateNeg();
|
file << translateNeg();
|
||||||
}
|
}
|
||||||
|
|
||||||
file << endl;
|
file << endl;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ string translatePush(string filename, Segment segment, int index)
|
|||||||
output << "M=M+1" << endl;
|
output << "M=M+1" << endl;
|
||||||
|
|
||||||
return output.str();
|
return output.str();
|
||||||
};
|
}
|
||||||
|
|
||||||
string translatePop(string filename, Segment segment, int index)
|
string translatePop(string filename, Segment segment, int index)
|
||||||
{
|
{
|
||||||
@@ -146,4 +146,4 @@ string translatePop(string filename, Segment segment, int index)
|
|||||||
output << "M=D" << endl;
|
output << "M=D" << endl;
|
||||||
|
|
||||||
return output.str();
|
return output.str();
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -73,9 +73,9 @@ public:
|
|||||||
matchedVector.push_back(matched[2]);
|
matchedVector.push_back(matched[2]);
|
||||||
matchedVector.push_back(matched[3]);
|
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);
|
commands.push_back(matchedVector);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user