コード例 #1
0
ファイル: EvoSQL.parser.cs プロジェクト: melnx/Bermuda
        void Condition(SingleNodeTree parent)
        {
            SelectorTypes selectorType; ModifierTypes modifierType;

            if (FollowedByColon())
            {
                Selector(out selectorType,
                         out modifierType);
                SelectorExpression selector = new SelectorExpression(selectorType, modifierType, t.val);
                if (la.kind == 6)
                {
                    ComplexCondition(parent, selector);
                }
                else if (StartOf(3))
                {
                    parent.SetChild(selector);
                    Literal(selector);
                }
                else
                {
                    SynErr(45);
                }
            }
            else if (StartOf(3))
            {
                SelectorExpression nestedSelector = new SelectorExpression(SelectorTypes.Unspecified, ModifierTypes.Equals, t.val); parent.SetChild(nestedSelector);
                Literal(nestedSelector);
            }
            else
            {
                SynErr(46);
            }
        }
コード例 #2
0
 protected BinaryCombinator(SelectorExpression left, SelectorExpression right)
 {
     Left = left;
     Right = right;
     if (left == null) throw new ArgumentNullException(nameof(left));
     if (right == null) throw new ArgumentNullException(nameof(right));
 }
コード例 #3
0
        public override string ToString()
        {
            string selector = SelectorExpression != null?SelectorExpression.ToString() : string.Empty;

            string value = ValueExpression != null?ValueExpression.ToString() : string.Empty;

            return(selector + " " + value);
        }
コード例 #4
0
        public InterpolationConverter(AstConverter astConverter, AstConversionContext conversionContext)
        {
            Contract.Requires(astConverter != null);
            Contract.Requires(conversionContext != null);

            m_converter = astConverter;
            m_context   = conversionContext;

            m_literalConverter = new LiteralConverter(conversionContext);
            m_pathAtomInterpolateSelectorExpression = CreatePathAtomInterpolateSelectorExpression();
            m_stringInterpolationSelectorExpression = CreateStringInterpolateSelectorExpression();
        }
コード例 #5
0
        public void ReportFailResolveSelectorDueToUndefined(ModuleLiteral env, SelectorExpression expression)
        {
            Contract.Requires(env != null);
            Contract.Requires(expression != null);

            var location = expression.Location.AsUniversalLocation(env, Context);

            Logger.ReportFailResolveSelectorDueToUndefined(
                LoggingContext,
                location.AsLoggingLocation(),
                expression.Selector.ToDisplayString(Context),
                expression.ThisExpression.ToDisplayString(Context),
                Context.GetStackTraceAsErrorMessage(location));
        }
コード例 #6
0
ファイル: YamlConverters.cs プロジェクト: BernieWhite/PSDocs
        private SelectorExpression MapExpression(IParser reader, Func <IParser, Type, object> nestedObjectDeserializer)
        {
            SelectorExpression result = null;
            var properties            = new SelectorExpression.PropertyBag();

            MapProperty(properties, reader, nestedObjectDeserializer, out string key);
            if (key != null && TryCondition(key))
            {
                result = MapCondition(key, properties, reader, nestedObjectDeserializer);
            }
            else if (TryOperator(key) && reader.Accept(out MappingStart mapping))
            {
                result = MapOperator(key, reader, nestedObjectDeserializer);
            }
            else if (TryOperator(key) && reader.Accept(out SequenceStart sequence))
            {
                result = MapOperator(key, reader, nestedObjectDeserializer);
            }
            return(result);
        }
コード例 #7
0
ファイル: EvoSQL.parser.cs プロジェクト: melnx/Bermuda
        void ComplexCondition(SingleNodeTree parent, SelectorExpression selector)
        {
            ConditionGroup group = new ConditionGroup(); parent.SetChild(group); ExpressionTreeBase addTo = group; SingleNodeTree condition = null; ConditionalExpression lastOperation = null;

            Expect(6);
            while (StartOf(2))
            {
                lastOperation = lastOperation ?? new AndCondition();
                MultiAdd(addTo, lastOperation);
                addTo    = lastOperation;
                selector = new SelectorExpression(selector.Field, ModifierTypes.Equals, selector.Path);

                if (la.kind == 5)
                {
                    Get();
                    NotCondition not = new NotCondition(); lastOperation.SetChild(not); lastOperation = not;
                }
                if (la.kind == 6)
                {
                    ComplexCondition(lastOperation, selector);
                }
                else if (StartOf(3))
                {
                    SelectorExpression nestedSelector = new SelectorExpression(selector.Field, ModifierTypes.Equals, selector.Path); MultiAdd(lastOperation, nestedSelector);
                    Literal(nestedSelector);
                }
                else
                {
                    SynErr(49);
                }
                if (la.kind == 9 || la.kind == 10)
                {
                    Operation(out lastOperation);
                }
                else
                {
                    lastOperation = null;
                }
            }
            Expect(7);
        }
コード例 #8
0
        public void TestSelectorExpression()
        {
            SelectorExpression node = new SelectorExpression(GetExpression1(), GetSymbolAtom(), DefaultLineInfo);

            CheckSerializationRoundTrip(node);
        }
コード例 #9
0
 public ParentSelector(SelectorExpression inner)
 {
     Inner = inner;
 }
コード例 #10
0
 public SiblingCombinator(SelectorExpression left, SelectorExpression right)
     : base(left, right)
 {
 }
コード例 #11
0
ファイル: EvoSQL.parser.cs プロジェクト: yonglehou/Bermuda
	void ComplexCondition(SingleNodeTree parent, SelectorExpression selector) {
		ConditionGroup group = new ConditionGroup(); parent.SetChild(group); ExpressionTreeBase addTo = group; SingleNodeTree condition = null; ConditionalExpression lastOperation = null; 
		Expect(6);
		while (StartOf(2)) {
			lastOperation = lastOperation ?? new AndCondition();
			MultiAdd(addTo, lastOperation);
			addTo = lastOperation;
			selector = new SelectorExpression(selector.Field, ModifierTypes.Equals, selector.Path);
			
			if (la.kind == 5) {
				Get();
				NotCondition not = new NotCondition(); lastOperation.SetChild(not); lastOperation = not; 
			}
			if (la.kind == 6) {
				ComplexCondition(lastOperation, selector);
			} else if (StartOf(3)) {
				SelectorExpression nestedSelector = new SelectorExpression(selector.Field, ModifierTypes.Equals, selector.Path); MultiAdd(lastOperation, nestedSelector); 
				Literal(nestedSelector);
			} else SynErr(49);
			if (la.kind == 9 || la.kind == 10) {
				Operation(out lastOperation);
			}
			else { lastOperation = null; } 
		}
		Expect(7);
	}
コード例 #12
0
ファイル: EvoSQL.parser.cs プロジェクト: yonglehou/Bermuda
	void Condition(SingleNodeTree parent) {
		SelectorTypes selectorType; ModifierTypes modifierType; 
		if (FollowedByColon()) {
			Selector(out selectorType, 
out modifierType);
			SelectorExpression selector = new SelectorExpression(selectorType, modifierType, t.val);  
			if (la.kind == 6) {
				ComplexCondition(parent, selector);
			} else if (StartOf(3)) {
				parent.SetChild(selector); 
				Literal(selector);
			} else SynErr(45);
		} else if (StartOf(3)) {
			SelectorExpression nestedSelector = new SelectorExpression(SelectorTypes.Unspecified, ModifierTypes.Equals, t.val); parent.SetChild(nestedSelector); 
			Literal(nestedSelector);
		} else SynErr(46);
	}
コード例 #13
0
 public ChildCombinator(SelectorExpression parent, SelectorExpression child)
     : base(parent, child)
 {
 }