Пример #1
0
        public static void ParseEndRegion(MoveInfo parentInfo, ParsingInfo parsingInfo, ScriptInfo scriptInfo)
        {
            MoveInfo        moveInfo = new MoveInfo(parentInfo);
            List <IElement> content  = new List <IElement>(2);

            content.Add(moveInfo.Current);
            content.Add(moveInfo.Move(SearchDirection.LeftToRight));

            IBlock region = new PreProcessorRegion(content);

            parentInfo.Replace(2, region);
        }
Пример #2
0
        public static bool Check(MoveInfo parentInfo, ParsingInfo parsingInfo, ScriptInfo scriptInfo)
        {
            IElement next = parentInfo.Find(SearchDirection.LeftToRight, SearchVisibility.Visible);

            if (next == null)
            {
                return(false);
            }

            if (DevCode.Check(parentInfo, parsingInfo, scriptInfo) ||
                PreProcessorRegion.Check(parentInfo, parsingInfo, scriptInfo))
            {
                return(true);
            }

            if (EmptyStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                BlockStatement.Check(parentInfo, parsingInfo, scriptInfo)
                )
            {
                return(true);
            }

            if (IfElseStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                SwitchStatement.Check(parentInfo, parsingInfo, scriptInfo)

                || WhileStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                DoWhileStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                ForStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                ForEachStatement.Check(parentInfo, parsingInfo, scriptInfo)

                || ReturnStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                BreakStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                ContinueStatement.Check(parentInfo, parsingInfo, scriptInfo)

                || WaitStatement.Check(parentInfo, parsingInfo, scriptInfo) ||
                WaittillFrameEndStatement.Check(parentInfo, parsingInfo, scriptInfo)
                )
            {
                return(true);
            }

            if (ExpressionStatement.Check(parentInfo, parsingInfo, scriptInfo, true)) // nikdy nevráti false?
            {
                return(true);
            }

            return(false);
        }
Пример #3
0
        public static void ParseRegion(MoveInfo parentInfo, ParsingInfo parsingInfo, ScriptInfo scriptInfo)
        {
            MoveInfo        moveInfo = new MoveInfo(parentInfo);
            List <IElement> content  = new List <IElement>();

            content.Add(moveInfo.Current);
            content.Add(moveInfo.Move(SearchDirection.LeftToRight));

            moveInfo.Move(SearchDirection.LeftToRight);
            int nameStart = moveInfo.CurrentIndex;

            IElement end = moveInfo.Find(SearchDirection.LeftToRight, SearchVisibility.Unvisible, IsRegionEnd);

            if (end == null)
            {
                throw new SyntaxException("Bad region syntax", parentInfo.GetErrorInfo());
            }

            content.AddRange(moveInfo.CurrentElements.GetRange(nameStart, moveInfo.CurrentIndex - nameStart));

            IBlock region = new PreProcessorRegion(content);

            parentInfo.Replace(moveInfo.CurrentIndex - parentInfo.CurrentIndex, region);
        }
Пример #4
0
        public override IElement CreateCopy()
        {
            PreProcessorRegion e = new PreProcessorRegion(this.CopyChildren());

            return(e);
        }