예제 #1
0
        /// <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));
        }
예제 #2
0
파일: Program.cs 프로젝트: silvermix/GSharp
        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();
        }
예제 #3
0
        /// <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));
        }
예제 #4
0
        // 생성자
        public VariableBlock(string friendlyName, GVariable variable)
        {
            InitializeComponent();

            FriendlyName = friendlyName;
            _GVariable   = variable;
            _GObjectList = new List <GBase> {
                GObject
            };

            InitializeBlock();
        }
예제 #5
0
파일: GEvent.cs 프로젝트: silvermix/GSharp
        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);
            }
        }
예제 #6
0
        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);
            }
        }
예제 #7
0
 public GDefine(GVariable variable)
 {
     Variable = variable;
 }