예제 #1
0
        public string GetCode(Queue <ExpressionItem> queitem)
        {
            StringBuilder sbOut = new StringBuilder();

            while (queitem.Count > 0)
            {
                ExpressionItem item = queitem.Dequeue();
                switch (item.Type)
                {
                case ExpressionType.String:
                    FilterCode(item.Content);
                    sbOut.Append("            SystemOut.Append(\"" + item.Content.ToString() + "\");\n");
                    break;

                case ExpressionType.Code:
                    sbOut.Append("            " + item.Content.ToString() + "\n");
                    break;

                case ExpressionType.Express:
                    sbOut.Append("            SystemOut.Append(" + item.Content.ToString() + ");\n");
                    break;

                default:
                    break;
                }
            }
            return(sbOut.ToString());
        }
예제 #2
0
        /// <summary>
        /// 处理代码块
        /// </summary>
        private void CompilerPart()
        {
            while (MoveNext())
            {
                if (CurrentChar == ScriptChar)
                {
                    _currentItem = new ExpressionItem();
                    _queitem.Enqueue(_currentItem);

                    if (MoveNext())
                    {
                        if (CurrentChar == '=')
                        {
                            _currentItem.Type = ExpressionType.Express;
                        }
                        else
                        {
                            _currentItem.Type = ExpressionType.Code;
                            _currentItem.Content.Append(CurrentChar);
                        }
                        CompilerCode();

                        _currentItem = null;
                    }
                    break;
                }
                else if (CurrentChar == '<')
                {
                    if (_currentItem == null)
                    {
                        _currentItem      = new ExpressionItem();
                        _currentItem.Type = ExpressionType.String;
                        _queitem.Enqueue(_currentItem);
                    }
                    _currentItem.Content.Append("<");
                    CompilerPart();
                    break;
                }
                else
                {
                    if (_currentItem == null)
                    {
                        _currentItem      = new ExpressionItem();
                        _currentItem.Type = ExpressionType.String;
                        _queitem.Enqueue(_currentItem);
                    }
                    _currentItem.Content.Append("<" + CurrentChar);
                    break;
                }
            }
        }
예제 #3
0
        public string GetCode(Queue <ExpressionItem> queitem)
        {
            StringBuilder sbOut = new StringBuilder();

            while (queitem.Count > 0)
            {
                ExpressionItem item = queitem.Dequeue();
                switch (item.Type)
                {
                case ExpressionType.String:
                    sbOut.Append(item.Content.ToString());
                    break;

                default:
                    break;
                }
            }
            return(sbOut.ToString());
        }
예제 #4
0
        private void DoCompiler()
        {
            _currentItem      = new ExpressionItem();
            _currentItem.Type = ExpressionType.String;
            _queitem.Enqueue(_currentItem);

            while (MoveNext())
            {
                if (CurrentChar == '<')
                {
                    CompilerPart();
                }
                else
                {
                    if (_currentItem == null)
                    {
                        _currentItem      = new ExpressionItem();
                        _currentItem.Type = ExpressionType.String;
                        _queitem.Enqueue(_currentItem);
                    }
                    _currentItem.Content.Append(CurrentChar);
                }
            }
        }
예제 #5
0
        ///// <summary>
        ///// 过滤连接dll信息
        ///// </summary>
        ///// <param name="items"></param>
        ///// <returns></returns>
        //private string[] LinkFilter(string items)
        //{

        //}

        /// <summary>
        /// 获取代码
        /// </summary>
        /// <param name="queitem"></param>
        /// <param name="modelPath">模块路径</param>
        /// <returns></returns>
        public List <string> GetCode(Queue <ExpressionItem> queitem, EntityInfo entityInfo)
        {
            List <string> lst = new List <string>();

            while (queitem.Count > 0)
            {
                ExpressionItem item = queitem.Dequeue();
                switch (item.Type)
                {
                case ExpressionType.String:

                    lst.AddRange(item.Content.ToString().Split('\n'));
                    for (int i = 0; i < lst.Count; i++)
                    {
                        lst[i] = UIConfigItem.FormatParameter(lst[i], entityInfo, entityInfo.DesignerInfo.CurrentProject);
                    }
                    break;

                default:
                    break;
                }
            }
            return(lst);
        }