コード例 #1
0
ファイル: Parser.cs プロジェクト: obedurena/SassyStudio
        private ParseItemList Parse(ITextProvider text, IItemFactory itemFactory, ITokenStream stream, IParsingExecutionContext context)
        {
            var results = new ParseItemList();

            while (!context.IsCancellationRequested && stream.Current.Type != TokenType.EndOfFile)
            {
                int position = stream.Position;

                ParseItem item;
                if (!itemFactory.TryCreate(null, text, stream, out item))
                {
                    break;
                }

                if (item.Parse(itemFactory, text, stream))
                {
                    results.Add(item);
                }

                // guard against infinite loop (in case token couldn't be handled)
                if (stream.Position == position)
                {
                    stream.Advance();
                }
            }

            // freeze everything
            if (!context.IsCancellationRequested)
            {
                foreach (var item in results)
                {
                    item.Freeze();
                }
            }

            return(results);
        }
コード例 #2
0
 public VariableDefinition(ExpresionMode mode = ExpresionMode.None)
 {
     Mode   = mode;
     Values = new ParseItemList();
 }
コード例 #3
0
ファイル: ComplexItem.cs プロジェクト: obedurena/SassyStudio
 public ComplexItem()
 {
     Children            = new ParseItemList();
     Children.AutoParent = this;
 }
コード例 #4
0
 public MediaQueryExpression()
 {
     FeatureValues = new ParseItemList();
 }
コード例 #5
0
 public ForLoopDirective()
 {
     FromExpressionValues  = new ParseItemList();
     RangeExpressionValues = new ParseItemList();
 }
コード例 #6
0
 public ConditionalControlDirective()
 {
     ConditionStatements = new ParseItemList();
 }
コード例 #7
0
 public FunctionArgument()
 {
     Values = new ParseItemList();
 }
コード例 #8
0
 public PropertyDeclaration()
 {
     Values = new ParseItemList();
 }
コード例 #9
0
 public PropertyName()
 {
     Fragments = new ParseItemList();
 }