Revert "changes for new grammar, fixes"

This reverts commit f912cdac41.
This commit is contained in:
ProgramSnail 2023-06-08 16:42:35 +03:00
parent f912cdac41
commit 03dea59d33
10 changed files with 5 additions and 59 deletions

View file

@ -307,7 +307,6 @@ struct VariableDefinitionStatement {
utils::AssignmentModifier assignment_modifier; utils::AssignmentModifier assignment_modifier;
AnyName name; AnyName name;
SuperExpression value; SuperExpression value;
std::optional<SuperExpression> in_expression;
}; };
struct FunctionDeclaration { struct FunctionDeclaration {

@ -1 +1 @@
Subproject commit ab391d2d8d5251422abc94b80a51438faddb19c7 Subproject commit 24bcf6e960957daf5662b764480f1d56637b1712

View file

@ -167,14 +167,6 @@ void BuildVisitor::Visit(VariableDefinitionStatement* node) {
// error // error
} }
size_t child_count = parse_node.NamedChildCount();
if (child_count > 2) { // name, value [, in_expression]
current_node_ = parse_node.ChildByFieldName("in_expression");
node->in_expression.emplace();
Visit(node->in_expression.value());
}
current_node_ = parse_node; current_node_ = parse_node;
} }

View file

@ -47,22 +47,11 @@ void ExecuteVisitor::Visit(AliasDefinitionStatement* node) {
} }
void ExecuteVisitor::Visit(VariableDefinitionStatement* node) { void ExecuteVisitor::Visit(VariableDefinitionStatement* node) {
// TODO: optional variable definitions
if (node->in_expression.has_value()) {
context_manager_.EnterContext();
}
Visitor::Visit(node->value); Visitor::Visit(node->value);
is_const_definition_ = node->modifier; is_const_definition_ = node->modifier;
Visitor::Visit(node->name); // current_type_ passed from value Visitor::Visit(node->name); // current_type_ passed from value
is_const_definition_ = std::nullopt; is_const_definition_ = std::nullopt;
if (node->in_expression.has_value()) {
Visitor::Visit(node->in_expression.value());
context_manager_.ExitContext();
}
} }
void ExecuteVisitor::Visit(FunctionDeclaration* node) { void ExecuteVisitor::Visit(FunctionDeclaration* node) {

View file

@ -93,12 +93,6 @@ void PrintVisitor::Visit(VariableDefinitionStatement* node) {
Visitor::Visit(node->name); Visitor::Visit(node->name);
out_ << "] = ("; out_ << "] = (";
Visitor::Visit(node->value); Visitor::Visit(node->value);
if (node->in_expression.has_value()) {
out_ << ") in (";
Visitor::Visit(node->in_expression.value());
}
out_ << ")\n"; out_ << ")\n";
} }

View file

@ -101,11 +101,7 @@ void TypeCheckVisitor::Visit(AliasDefinitionStatement* node) {
// TODO: move, etc. // TODO: move, etc.
void TypeCheckVisitor::Visit(VariableDefinitionStatement* node) { void TypeCheckVisitor::Visit(VariableDefinitionStatement* node) {
// TODO: optional variable definitions is_in_statement_ = true;
if (node->in_expression.has_value()) {
context_manager_.EnterContext();
}
Visitor::Visit(node->value); Visitor::Visit(node->value);
// current_type from value automatically passed to name definitions // current_type from value automatically passed to name definitions
@ -114,12 +110,8 @@ void TypeCheckVisitor::Visit(VariableDefinitionStatement* node) {
Visitor::Visit(node->name); Visitor::Visit(node->name);
is_const_definition_ = std::nullopt; is_const_definition_ = std::nullopt;
if (node->in_expression.has_value()) {
Visitor::Visit(node->in_expression.value());
context_manager_.ExitContext();
}
current_type_ = internal_to_abstract_type_.at(info::type::InternalType::Unit); current_type_ = internal_to_abstract_type_.at(info::type::InternalType::Unit);
is_in_statement_ = false;
node->base.type_ = current_type_; node->base.type_ = current_type_;
} }

View file

@ -123,12 +123,6 @@ void TypedPrintVisitor::Visit(VariableDefinitionStatement* node) {
Visitor::Visit(node->name); Visitor::Visit(node->name);
out_ << "] = ("; out_ << "] = (";
Visitor::Visit(node->value); Visitor::Visit(node->value);
if (node->in_expression.has_value()) {
out_ << ") in (";
Visitor::Visit(node->in_expression.value());
}
out_ << ")\n"; out_ << ")\n";
} }

View file

@ -328,9 +328,6 @@ void Visitor::Visit(AliasDefinitionStatement* node) {
void Visitor::Visit(VariableDefinitionStatement* node) { void Visitor::Visit(VariableDefinitionStatement* node) {
Visit(node->name); Visit(node->name);
Visit(node->value); Visit(node->value);
if (node->in_expression.has_value()) {
Visit(node->in_expression.value());
}
} }
void Visitor::Visit(FunctionDeclaration* node) { void Visitor::Visit(FunctionDeclaration* node) {

View file

@ -106,10 +106,10 @@ namespace var \div {
typeclass \eq = typeclass \eq =
& var ( == ) : \eq -> \bool & var ( == ) : \eq -> \bool
& var ( <> ) : \eq -> \bool & var ( != ) : \eq -> \bool
namespace var \eq { namespace var \eq {
def ( <> ) : x = not: (self == x) def ( != ) : x = not: (self == x)
} }
// //

View file

@ -1,11 +0,0 @@
decl test-variables : \int -> \unit
def test-variables : a = {
var x = if a < 123 then "aaa" else "bbb"
var y = 543.32 in do-something:
var z = 543.32 in {
for x in 1--10 do print: 111
if scan:[int] < 11 then do-something-another: z "aaa"
}
}