//Создание бинарного оператора public BinaryOperatorNode(string Operation, AtomNode First, AtomNode Second, int numLine) { //Operator = Operation; Value = Operation; FirstOperand = First; SecondOperand = Second; IsUnary = false; LineNumber = numLine; if (Operations.ArithmeticOperations.Contains(Operation)) { TypeOfNode = NodeType.ArithmeticOperator; } else if (Operations.BitOperations.Contains(Operation)) { TypeOfNode = NodeType.BitOperator; } else if (Operations.ComparationOperations.Contains(Operation)) { TypeOfNode = NodeType.ComparisonOperator; } else if (Operations.LogicalOperations.Contains(Operation)) { TypeOfNode = NodeType.LogicalOperator; } //переменную, возможно, создавать не понадобится }
public AssignmentOperator(VariableNode Var, string Operation, int numLine)//для ++ и -- { AssignedVariable = Var; RightPart = null; TypeOfNode = NodeType.AssignmentOperator; AssignmentOperation = Operation; LineNumber = numLine; }
public AtomNode RightPart; //присваиваться может только для переменной public AssignmentOperator(VariableNode Var, AtomNode Expression, string Operation, int numLine) { AssignedVariable = Var; RightPart = Expression; TypeOfNode = NodeType.AssignmentOperator; AssignmentOperation = Operation; LineNumber = numLine; }
public AtomNode Res; //результирующая переменная public GetEdgeNode(VariableNode gr, AtomNode firstVert, AtomNode secondVert, int Line, AtomNode Result) { graph = gr; first = firstVert; second = secondVert; LineNumber = Line; Res = Result; }
public CycleOperator(bool IsPred, AtomNode Cond, int numLine)//конструктор для цикла while { BeginningActivity = null; ContinueCondition = Cond; IterationActivity = null; IsPredCondition = IsPred; Cond.SetParentBlock(this); TypeOfNode = NodeType.CycleOperator; LineNumber = numLine; }
public ConditionalOperatorNode(AtomNode ConditionNode, int numLine, ConditionalBranchNode If) //создание узла без ветки else { Condition = ConditionNode; //ссылка на узел-условие (на переменную, константу или последнее действие выражения) ConditionNode.SetParentBlock(this); ChildrenOperators = new List <Node>(); TypeOfNode = NodeType.ConditionalOperator; LineNumber = numLine; IfBranch = If; ElseBranch = null; If.SetParentBlock(this); ExistedElse = false; }
public bool IsPredCondition; //true - c предусловием, false - с постусловием public CycleOperator(List <AtomNode> Beg, AtomNode Cond, AtomNode IterAct, int numLine) //конструктор для цикла for { BeginningActivity = Beg; ContinueCondition = Cond; IterationActivity = IterAct; IsPredCondition = true; foreach (var oper in Beg) { oper.SetParentBlock(this); } Cond.SetParentBlock(this); IterAct.SetParentBlock(this); TypeOfNode = NodeType.CycleOperator; LineNumber = numLine; }
//создание унарного оператора public BinaryOperatorNode(string Operation, AtomNode First, int numLine) { //Operator = Operation; Value = Operation; FirstOperand = First; SecondOperand = null; IsUnary = true; LineNumber = numLine; if (Operation == "-") { TypeOfNode = NodeType.ArithmeticOperator; } else { TypeOfNode = NodeType.LogicalOperator; } }
public WriteOperator(AtomNode WriteVar, int numLine) { WriteVariable = WriteVar; TypeOfNode = NodeType.WriteNode; LineNumber = numLine; }
public IsFullNode(VariableNode gr, AtomNode outVar, int Line) { graph = gr; outVariable = outVar; LineNumber = Line; }
public CountEdgesNode(VariableNode gr, AtomNode outVar, int Line) { graph = gr; outVariable = outVar; LineNumber = Line; }
public NumComponentsNode(VariableNode gr, AtomNode outVar, int Line) { graph = gr; outVariable = outVar; LineNumber = Line; }
public FloydNode(VariableNode First, AtomNode Second, int Line) { outGraph = First; inGraph = Second; LineNumber = Line; }
public CreatingGraphNode(VariableNode newGraph, AtomNode vertecies, int numLine) { graph = newGraph; InputVar = vertecies; LineNumber = numLine; }