/** * * @author seagle * @date 2024-7-22 * @Description 赋值语句处理 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MECF.Framework.UI.Core.DxfScript { public class SetSentence:Sentence { private Variable _var = null; private Express _expr = null; public override void Create(StringReader reader) { KeywordType kw = reader.Next(); if (kw != KeywordType.KW_VARIABLE) { throw new Exception("SetSentence: variable name expected"); } string varName = reader.Data(); VariableDataType dataType = ScriptVariables.GetVariableDataTypeByName(varName); _var = new Variable(varName, dataType); kw = reader.Next(); if (kw != KeywordType.KW_SET) { throw new Exception("SetSentence: set expected"); } _expr = new Express(); _expr.Create(reader); _expr.ComputeNode(_expr.Root, true); if (_var.DataType != _expr.Root.Var.DataType) { throw new Exception("SetSentence: variable type and expression type not match"); } } public override void Execute() { _expr.Compute(); _var.CopyFrom(_expr.Root.Var); } } }