12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /**
- *
- * @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);
- }
- }
- }
|