/// <summary> /// 변수 블럭을 생성해 주는 함수 /// </summary> /// <param name="variable">IVariable 객체</param> /// <param name="friendlyName">블럭으로 노출될 변수의 이름</param> /// <returns> /// variable이 GStringVariable이면 StringVariableBlock을 반환 /// variable이 GLogicVariable이면 LogicVariableBlock을 반환 /// variable이 GNumberVariable이면 NumberVariableBlock을 반환 /// 이 외의 경우 CustomVariableBlock을 반환합니다. /// </returns> public static VariableBlock CreateVariableBlock(GVariable variable, string friendlyName = null) { if (friendlyName == null) { friendlyName = variable.Name; } return(new VariableBlock(friendlyName, variable)); }
static void Main(string[] args) { // 코드 생성 GEntry entry = new GEntry(); GVariable var = new GVariable("valueA"); GDefine def = new GDefine(var); entry.Append(def); GEvent main = new GEvent(new GCommand("this", "Loaded", typeof(void), GCommand.CommandType.Event)); GSet setValue = new GSet(var, new GNumberConst(5)); main.Append(setValue); GIf ifCheck = new GIf(new GCompare(var, GCompare.ConditionType.GREATER_THEN, new GNumberConst(3))); ifCheck.Append( new GVoidCall( new GCommand("Console", "WriteLine", typeof(void), GCommand.CommandType.Call), new GObject[] { new GStringCat(new GStringConst("A"), new GConvertNumberToString(new GNumberConst(5))) } ) ); main.Append(ifCheck); entry.Append(main); // 생성된 코드 컴파일 string source = entry.ToSource(); string resultFile = Path.GetTempFileName(); GCompiler compile = new GCompiler(source); GCompilerResults result = compile.Build(resultFile); Console.WriteLine(result.Source); // 코드 컴파일 결과 분석 if (result.IsSuccess) { // 컴파일 성공 // 컴파일된 시나리오 실행 Console.WriteLine("컴파일 성공"); } else { // 컴파일 실패 // 컴파일 오류 출력 foreach (CompilerError error in result.Results.Errors) { Console.WriteLine("컴파일 오류 : " + error.Line + " - " + error.ErrorNumber + ":" + error.ErrorText); } } Console.ReadLine(); }
/// <summary> /// 변수 블럭을 생성해 주는 함수 /// </summary> /// <param name="variableName">C# 형태에서의 변수의 이름</param> /// <param name="variableType">매개변수의 자료형</param> /// <param name="friendlyName">블럭으로 노출될 변수의 이름</param> /// <returns> /// 매개변수의 자료형이 string이면 StringVariableBlock을 반환 /// 매개변수의 자료형이 bool이면 LogicVariableBlock을 반환 /// 매개변수의 자료형이 숫자 형태인 경우 NumberVariableBlock을 반환 /// 이 외의 경우 CustomVariableBlock을 반환합니다. /// </returns> public static VariableBlock CreateVariableBlock(string variableName, string friendlyName = null) { GVariable variable = GSharpUtils.CreateGVariable(variableName); if (friendlyName == null) { friendlyName = variableName; } return(new VariableBlock(friendlyName, variable)); }
// 생성자 public VariableBlock(string friendlyName, GVariable variable) { InitializeComponent(); FriendlyName = friendlyName; _GVariable = variable; _GObjectList = new List <GBase> { GObject }; InitializeBlock(); }
public GEvent(GCommand command) { GCommand = command; for (int i = 0; i < GCommand.Optionals?.Length; i++) { string variableName = GCommand.Optionals[i].Name; variableName = PREFIX_ARG + variableName[0].ToString().ToUpper() + variableName.Substring(1); GVariable variable = GSharpUtils.CreateGVariable(variableName); Arguments.Add(variable); ArgumentsType.Add(GCommand.Optionals[i].ObjectType); } }
public GControlEvent(string controlName, GExport export) { ControlName = controlName; GExport = export; for (int i = 0; i < GExport.Optionals?.Length; i++) { string variableName = GExport.Optionals[i].Name; variableName = PREFIX_ARG + variableName[0].ToString().ToUpper() + variableName.Substring(1); GVariable variable = GSharpUtils.CreateGVariable(variableName); Arguments.Add(variable); ArgumentsType.Add(GExport.Optionals[i].ObjectType); } }
public GDefine(GVariable variable) { Variable = variable; }