Exemplo n.º 1
0
    private Node CreateNode(GravisParser.Node_defContext context)
    {
        var node = new Node();

        if (context.input_def() != null)
        {
            if (subspaceStack.Count != 0)
            {
                var subspace = subspaceStack.Peek();
                subspace.input = node;
            }
            node.type = NodeType.Input;
            node.text = "I";
        }
        else if (context.output_def() != null)
        {
            if (subspaceStack.Count != 0)
            {
                var subspace = subspaceStack.Peek();
                subspace.output = node;
            }
            node.type = NodeType.Output;
            node.text = "O";
        }
        else if (context.const_def() != null)
        {
            node.type = NodeType.Constant;
            node.text = context.const_def().NUMBER().GetText();
        }
        else if (context.if_def() != null)
        {
            node.type = NodeType.If;
            node.text = context.if_def().comp_op().GetText();
        }
        else if (context.opr_def() != null)
        {
            node.type = NodeType.Operator;
            node.text = context.opr_def().arith_op().GetText();
        }
        else if (context.subspace_def() != null)
        {
            node.type = NodeType.Subspace;
            node.text = "S";
            var subspace = new Subspace(node);
            subspaces.Add(subspace);
            subspaceStack.Push(subspace);
        }
        else if (context.self_subspace_def() != null)
        {
            node.type = NodeType.SelfSubspace;
            node.text = "S";
        }
        else
        {
            node.text = "?";
        }
        nodes.Add(node);
        return(node);
    }
Exemplo n.º 2
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="GravisParser.node_def"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitNode_def([NotNull] GravisParser.Node_defContext context)
 {
 }