Addition
This commit is contained in:
32
src/main.cpp
32
src/main.cpp
@@ -82,8 +82,8 @@ namespace HighGround {
|
|||||||
class HGNode {
|
class HGNode {
|
||||||
HGNodeType nodeType = HGNodeType::None;
|
HGNodeType nodeType = HGNodeType::None;
|
||||||
HGData data;
|
HGData data;
|
||||||
std::vector<HGNode> children;
|
|
||||||
public:
|
public:
|
||||||
|
std::vector<HGNode> children;
|
||||||
std::string outputId;
|
std::string outputId;
|
||||||
HGNode(HGNodeType nodeType) : nodeType(nodeType) {}
|
HGNode(HGNodeType nodeType) : nodeType(nodeType) {}
|
||||||
HGNode(HGNodeType nodeType, HGData data) : nodeType(nodeType), data(data) {}
|
HGNode(HGNodeType nodeType, HGData data) : nodeType(nodeType), data(data) {}
|
||||||
@@ -147,6 +147,20 @@ namespace HighGround {
|
|||||||
code.push_back(codeBlock);
|
code.push_back(codeBlock);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case HGNodeType::Add: {
|
||||||
|
HGGroundCodeBlock codeBlock;
|
||||||
|
outputId = "tmp_" + std::to_string(tmpIdIterator++);
|
||||||
|
GroundInstruction gi = groundCreateInstruction(ADD);
|
||||||
|
if (children.size() < 2) {
|
||||||
|
std::cout << "Need more stuff to add\n";
|
||||||
|
}
|
||||||
|
groundAddReferenceToInstruction(&gi, groundCreateReference(VALREF, children[0].outputId.data()));
|
||||||
|
groundAddReferenceToInstruction(&gi, groundCreateReference(VALREF, children[1].outputId.data()));
|
||||||
|
groundAddReferenceToInstruction(&gi, groundCreateReference(DIRREF, outputId.data()));
|
||||||
|
codeBlock.code.push_back(gi);
|
||||||
|
code.push_back(codeBlock);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
std::cout << "Not implemented yet\n";
|
std::cout << "Not implemented yet\n";
|
||||||
}
|
}
|
||||||
@@ -240,6 +254,9 @@ namespace HighGround {
|
|||||||
if (getDataType(in) != HGDataType::None) {
|
if (getDataType(in) != HGDataType::None) {
|
||||||
return HGNodeType::Value;
|
return HGNodeType::Value;
|
||||||
}
|
}
|
||||||
|
if (in == "+") {
|
||||||
|
return HGNodeType::Add;
|
||||||
|
}
|
||||||
return HGNodeType::None;
|
return HGNodeType::None;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,6 +305,19 @@ namespace HighGround {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case HGNodeType::Add: {
|
||||||
|
HGNode addNode(HGNodeType::Add);
|
||||||
|
addNode.addNode(rootNode.children.back());
|
||||||
|
rootNode.children.pop_back();
|
||||||
|
auto tokenopt = consume();
|
||||||
|
if (tokenopt) {
|
||||||
|
addNode.addNode(Parser({tokenopt.value()}).parse().children[0]);
|
||||||
|
} else {
|
||||||
|
std::cout << "FEED ME MORE TOKENS\n";
|
||||||
|
}
|
||||||
|
rootNode.addNode(addNode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rootNode;
|
return rootNode;
|
||||||
|
|||||||
1
tests/math.hg
Normal file
1
tests/math.hg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1 + 1
|
||||||
Reference in New Issue
Block a user