private void GetParameters(TreeNode parametersList, string functioName)
        {
            if (parametersList is null)
            {
                return;
            }

            foreach (TreeNode parameter in parametersList.Nodes)
            {
                if (parameter.Text == @"ParamDecl")
                {
                    _tmpParameters.Add(GetType(parameter.Nodes[0].Nodes[0].Text));
                    SymbolValue symbolValue = new SymbolValue
                    {
                        DataType = GetType(parameter.Nodes[0].Nodes[0].Text),
                        Value    = null,
                        Scope    = functioName
                    };
                    SymbolTable.Add(new KeyValuePair <string, SymbolValue>(parameter.Nodes[1].Text, symbolValue));
                    _allSymbols.Add(new KeyValuePair <string, string>(parameter.Nodes[1].Text, functioName));
                }

                GetParameters(parameter, functioName);
            }
        }
        public void Annotate(TreeNode tree)
        {
            if (tree is null)
            {
                return;
            }
            foreach (TreeNode node in tree.Nodes)
            {
                if (node.Text == @"DeclarationStatement")
                {
                    string varName;

                    if (node.Nodes[1].Nodes[0].Nodes[0].Text == @"AssignmentStatement")
                    {
                        varName = node.Nodes[1].Nodes[0].Nodes[0].Nodes[0].Text;
                    }
                    else
                    {
                        varName = node.Nodes[1].Nodes[0].Nodes[0].Text;
                    }

                    if (Get_VarFromSymbolTable(varName))
                    {
                        SymbolValue val = Get_SymbolValue(varName);
                        if (val.Scope != "NN")
                        {
                            node.Nodes.Add("DateType").Nodes.Add(val.DataType.ToString());
                            if (val.Value != null)
                            {
                                node.Nodes.Add("Value").Nodes.Add(val.Value.ToString());
                            }
                            else
                            {
                                node.Nodes.Add("Value").Nodes.Add("null");
                            }
                            node.Nodes.Add("Scope").Nodes.Add(val.Scope);
                        }
                    }
                }
                Annotate(node);
            }
        }