public override void ExitDefine([NotNull] ClojureObrParser.DefineContext context) { // var sym = context.children[2]; var expr = context.children[3]; /* * if (ExprSymTypes.Get(sym) != SymType.Sym) * { * throw new Exception($"Define requires symbol as second parameter"); * } */ if (ExprSymTypes.Get(context) == SymType.Sym) { var symbol = ExprSyms.Get(expr); currentSymbolTable.AddSymbol(sym.GetText(), symbol.Value, SymType.Fun); //Console.WriteLine($"Значение выражения - {symbol.Value}"); } else { currentSymbolTable.AddSymbol(sym.GetText(), expr.GetText(), SymType.Fun); //Console.WriteLine($"Значение выражения - {expr.GetText()}"); } //Console.WriteLine("Вышел из define"); // var symNode = (SymNode)TypedNodes.Get(sym); var exprNode = (ExprNode)TypedNodes.Get(expr); var node = new DefNode(symNode, exprNode); TypedNodes.Put(context, node); }
public override void EnterDefine([NotNull] ClojureObrParser.DefineContext context) { // //Console.WriteLine("Вошел в define"); //Console.WriteLine("Вышел из define"); var sym = context.children[2]; var expr = context.children[3]; currentSymbolTable.AddSymbol(sym.GetText(), expr.GetText(), SymType.Fun); //Console.WriteLine($"Определяемый символ - {sym.GetText()}"); // }