コード例 #1
0
ファイル: Parser.cs プロジェクト: massreuy/3P
 /// <summary>
 /// Feed this method with a visitor implementing IParserVisitor to visit all the parsed items
 /// </summary>
 /// <param name="visitor"></param>
 public void Accept(IParserVisitor visitor)
 {
     visitor.PreVisit(this);
     foreach (var item in _parsedItemList)
     {
         item.Accept(visitor);
     }
     visitor.PostVisit();
 }
コード例 #2
0
 /// <summary>Accept the visitor. *
 /// </summary>
 public Object ChildrenAccept(IParserVisitor visitor, Object data)
 {
     if (children != null)
     {
         for (int i = 0; i < children.Length; ++i)
         {
             children[i].Accept(visitor, data);
         }
     }
     return(data);
 }
コード例 #3
0
ファイル: SimpleNode.cs プロジェクト: SkelletonX/DDTServer
 public object ChildrenAccept(IParserVisitor visitor, object data)
 {
     if (this.children != null)
     {
         for (int i = 0; i < this.children.Length; i++)
         {
             this.children[i].Accept(visitor, data);
         }
     }
     return(data);
 }
コード例 #4
0
ファイル: ParserNg.cs プロジェクト: garuma/dbus-explorer
        TReturn ParseStruct(IEnumerator <DType> tokens, IParserVisitor <TReturn> visitor)
        {
            IEnumerable <TReturn> result = Parse(tokens, visitor);
            IEnumerable <TReturn> temp   = null;

            while ((temp = Parse(tokens, visitor)) != null)
            {
                result = Enumerable.Concat(result, temp);
            }

            return(visitor.ParseStructDefinition(result));
        }
コード例 #5
0
ファイル: ParserNg.cs プロジェクト: garuma/dbus-explorer
        TReturn ParseDict(IEnumerator <DType> tokens, IParserVisitor <TReturn> visitor)
        {
            if (!tokens.MoveNext())
            {
                throw new ParseException("A dictionary type is malformed");
            }

            IEnumerable <TReturn> type1 = Parse(tokens, visitor);
            IEnumerable <TReturn> type2 = Parse(tokens, visitor);

            tokens.MoveNext();

            return(visitor.ParseDictDefinition(type1.First(), type2.First()));
        }
コード例 #6
0
ファイル: ParserNg.cs プロジェクト: garuma/dbus-explorer
        public IEnumerable <TReturn> Parse(IEnumerator <DType> tokens, IParserVisitor <TReturn> visitor)
        {
            DType current = tokens.Current;

            if (current == DType.DictEntryEnd || current == DType.StructEnd)
            {
                tokens.MoveNext();
                return(null);
            }

            // May be an array or a dict
            if (current == DType.Array)
            {
                if (!tokens.MoveNext())
                {
                    throw new ParseException("An array type is malformed");
                }

                if (tokens.Current == DType.DictEntryBegin)
                {
                    return(Wrap(ParseDict(tokens, visitor)));
                }
                else
                {
                    return(Wrap(visitor.ParseArrayDefinition(Parse(tokens, visitor).First())));
                }
            }

            if (current == DType.StructBegin)
            {
                if (!tokens.MoveNext())
                {
                    throw new ParseException("A structure is malformed");
                }

                return(Wrap(ParseStruct(tokens, visitor)));
            }

            IEnumerable <TReturn> result = Wrap(visitor.ParseBaseTypeDefinition(current));

            tokens.MoveNext();

            return(result);
        }
コード例 #7
0
ファイル: ParserNg.cs プロジェクト: garuma/dbus-explorer
        public TReturn ParseDBusTypeExpression(string expression, IParserVisitor <TReturn> visitor)
        {
            if (string.IsNullOrEmpty(expression))
            {
                return(visitor.Default);
            }
            // Assume it's a base type and thus directly return the corresponding type
            if (expression.Length == 1)
            {
                return(visitor.ParseBaseTypeDefinition((DType)(byte)expression[0]));
            }

            TReturn             temp;
            IEnumerable <DType> expressionList = expression.Select((c) => (DType)(byte)c);
            IEnumerator <DType> enumerator     = expressionList.GetEnumerator();

            enumerator.MoveNext();
            try {
                temp = Parse(enumerator, visitor).First();
            } catch {
                temp = visitor.Error;
            }
            return(temp);
        }
コード例 #8
0
ファイル: SimpleNode.cs プロジェクト: fabrimaciel/colosoft
 public virtual object JjtAccept(IParserVisitor visitor, object data)
 {
     throw new JepException("Illegal node type encountered");
 }
コード例 #9
0
ファイル: SimpleNode.cs プロジェクト: rambo-returns/MonoRail
		/// <summary>Accept the visitor. *
		/// </summary>
		public Object ChildrenAccept(IParserVisitor visitor, Object data)
		{
			if (children != null)
			{
				for(int i = 0; i < children.Length; ++i)
				{
					children[i].Accept(visitor, data);
				}
			}
			return data;
		}
コード例 #10
0
ファイル: ASTVariable.cs プロジェクト: rambo-returns/MonoRail
		/// <summary>
		/// Accept the visitor.
		/// </summary>
		public override Object Accept(IParserVisitor visitor, Object data)
		{
			return visitor.Visit(this, data);
		}
コード例 #11
0
ファイル: Parser.cs プロジェクト: jcaillon/3P
 /// <summary>
 /// Feed this method with a visitor implementing IParserVisitor to visit all the parsed items
 /// </summary>
 /// <param name="visitor"></param>
 public void Accept(IParserVisitor visitor)
 {
     visitor.PreVisit();
     foreach (var item in _parsedItemList) {
         item.Accept(visitor);
     }
     visitor.PostVisit();
 }
コード例 #12
0
		public void Process(IInternalContextAdapter context, IParserVisitor visitor)
		{
		}
コード例 #13
0
 public void Process(IInternalContextAdapter context, IParserVisitor visitor)
 {
 }
コード例 #14
0
ファイル: ParsedItem.cs プロジェクト: niandy/3P
 public abstract void Accept(IParserVisitor visitor);
コード例 #15
0
ファイル: Parser.cs プロジェクト: garuma/dbus-explorer
 /*static IParserVisitor<string> visitor = new CSharpVisitor(realParser);*/
 /*public static string ParseDBusTypeExpression(string expression)
 {
     return realParser.ParseDBusTypeExpression(expression, visitor);
 }*/
 public static string ParseDBusTypeExpression(string expression, IParserVisitor<string> visitor)
 {
     return realParser.ParseDBusTypeExpression(expression, visitor);
 }
コード例 #16
0
ファイル: ParsedItem.cs プロジェクト: niandy/3P
 public override void Accept(IParserVisitor visitor)
 {
     // no visits
 }
コード例 #17
0
ファイル: Block.cs プロジェクト: furesoft/FuManchu
		/// <inheritdoc />
		public override void Accept(IParserVisitor visitor)
		{
			visitor.VisitBlock(this);
		}
コード例 #18
0
 /// <summary>Accept the visitor. *
 /// </summary>
 public virtual Object Accept(IParserVisitor visitor, Object data)
 {
     return(visitor.Visit(this, data));
 }
コード例 #19
0
ファイル: SyntaxTreeNode.cs プロジェクト: furesoft/FuManchu
		/// <summary>
		/// Accepts a parser visitor to walk the syntax tree.
		/// </summary>
		/// <param name="visitor">The parser visitor</param>
		public abstract void Accept(IParserVisitor visitor);
コード例 #20
0
 /// <summary>
 /// Accept the visitor.
 /// </summary>
 public override Object Accept(IParserVisitor visitor, Object data)
 {
     return(visitor.Visit(this, data));
 }
コード例 #21
0
ファイル: SimpleNode.cs プロジェクト: rambo-returns/MonoRail
		/// <summary>Accept the visitor. *
		/// </summary>
		public virtual Object Accept(IParserVisitor visitor, Object data)
		{
			return visitor.Visit(this, data);
		}
コード例 #22
0
 /// <inheritdoc />
 public override void Accept(IParserVisitor visitor)
 {
     visitor.VisitSpan(this);
 }
コード例 #23
0
        /*static IParserVisitor<string> visitor = new CSharpVisitor(realParser);*/

        /*public static string ParseDBusTypeExpression(string expression)
         * {
         *      return realParser.ParseDBusTypeExpression(expression, visitor);
         * }*/

        public static string ParseDBusTypeExpression(string expression, IParserVisitor <string> visitor)
        {
            return(realParser.ParseDBusTypeExpression(expression, visitor));
        }