public LiteValue Visit(SyntaxIndexElementsExpressionNode Node, LiteEnv Env) { var Val = Node.GetElementIdentNode().Accept(this, Env); if (Val.Type == LiteValueType.Elements) { var EleObj = ElementsTable.GetElements((int)Val.Numeric); if (EleObj == null) { Logger.DError($"bad elements access : {Val}"); return(LiteValue.Error); } var Idx = Node.GetIndexNode().Accept(this, Env); if (Idx.Type != LiteValueType.Numeric) { Logger.DError($"elements index must be number"); return(LiteValue.Error); } return(EleObj.Get((int)Idx.Numeric)); } else { Logger.DError($"unknown elements type : {Val}"); } return(LiteValue.Error); }
public LiteValue Visit(SyntaxElementsStatementNode Node, LiteEnv Env) { var Eles = new LiteValue[Node.GetChildrenNum()]; for (var Index = 0; Index < Eles.Length; ++Index) { Eles[Index] = Node.GetChild(Index).Accept(this, Env); } return(ElementsTable.AddElementsEx(new Elements(Eles))); }
private void OK_Click(object sender, EventArgs e) { for (int i = 0; i < 4; i++) { if (ElementsTable.GetControlFromPosition(0, i).Text == "" || ElementsTable.GetControlFromPosition(0, i).Text == ElementsTable.GetControlFromPosition(0, i).Tag.ToString()) { ElementsTable.GetControlFromPosition(0, i).Text = ElementsTable.GetControlFromPosition(0, i).Name.Last().ToString(); } } //parent.GetStringProgram(ElementsTable.Controls[0].Text, ElementsTable.Controls[2].Text, ElementsTable.Controls[4].Text, ElementsTable.Controls[6].Text); Close(); }
public LiteValue Visit(SyntaxAssignmentExpressionNode Node, LiteEnv Env) { var LeftNode = Node.GetLeft(); if (LeftNode.GetType() == SyntaxNodeType.Identifier) { var Ident = (LeftNode as SyntaxIdentifierNode).GetValue(); var Val = Node.GetRight().Accept(this, Env); Env.Set(Ident, Val); return(Val); } if (LeftNode.GetType() == SyntaxNodeType.DotClassExpression) { var DotNode = LeftNode as SyntaxDotClassExpressionNode; var Mem = DotNode.GetCallIdentNode() as SyntaxIdentifierNode; var LiteObjVal = DotNode.GetClassIdentNode().Accept(this, Env); if (LiteObjVal.Type != LiteValueType.Object) { Logger.DError($"bad object access : {LiteObjVal}"); return(LiteValue.Error); } var LiteObj = ObjectTable.GetObject((int)LiteObjVal.Numeric); if (LiteObj == null) { Logger.DError($"bad object access : {LiteObjVal}"); return(LiteValue.Error); } var ExpVal = Node.GetRight().Accept(this, Env); if (ExpVal == LiteValue.Error) { return(ExpVal); } return(LiteObj.Write(Mem.GetValue(), ExpVal)); } if (LeftNode.GetType() == SyntaxNodeType.IndexElementsExpression) { var IdxNode = LeftNode as SyntaxIndexElementsExpressionNode; var Val = IdxNode.GetElementIdentNode().Accept(this, Env); if (Val.Type == LiteValueType.Elements) { var EleObj = ElementsTable.GetElements((int)Val.Numeric); if (EleObj == null) { Logger.DError($"bad elements access : {Val}"); return(LiteValue.Error); } var Idx = IdxNode.GetIndexNode().Accept(this, Env); if (Idx.Type != LiteValueType.Numeric) { Logger.DError($"elements index must be number"); return(LiteValue.Error); } var ExpVal = Node.GetRight().Accept(this, Env); if (ExpVal == LiteValue.Error) { return(ExpVal); } return(EleObj.Set((int)Idx.Numeric, ExpVal)); } else { Logger.DError($"unknown elements type : {Val}"); } } Logger.DError($"unexpected '=' near {Node.GetLeft()}"); return(LiteValue.Error); }
private void FormulaReset_Click(object sender, EventArgs e) { Button Btn = sender as Button; ElementsTable.GetControlFromPosition(0, ElementsTable.GetPositionFromControl(Btn).Row).Text = ElementsTable.GetControlFromPosition(0, ElementsTable.GetPositionFromControl(Btn).Row).Tag.ToString(); }