コード例 #1
0
        public static UseStatement Use(Identifier databaseName)
        {
            UseStatement fragment = new UseStatement();

            fragment.DatabaseName = databaseName;
            return(fragment);
        }
コード例 #2
0
        public override Node VisitUse([NotNull] FlyLangParser.UseContext context)
        {
            var use = new UseStatement(context.id().GetText());

            ActionTree.UseStatements.Add(use);
            return(use);
        }
コード例 #3
0
ファイル: AstPrinter.cs プロジェクト: PaddiM8/Caique
        public object Visit(UseStatement useStatement)
        {
            PrintStart("use", ConsoleColor.Magenta);
            PrintMiddle(StringifyModulePath(useStatement.ModulePath), ConsoleColor.Green);
            _indentationLevel--;

            return(null !);
        }
コード例 #4
0
 public override void VisitUseStatement(UseStatement x)
 {
     _serializer.StartSerialize(typeof(UseStatement).Name, SerializeSpan(x.Span), new NodeObj("Kind", x.Kind.ToString()));
     _serializer.Serialize("Aliases", x.Uses.All(u => u is SimpleUse)?
                           x.Uses.Where(u => u is SimpleUse).Select(u => new NodeObj(((SimpleUse)u).Alias.Name.Value, SerializeSpan(u.Span))).ToArray():
                           ((GroupUse)x.Uses.First(u => u is GroupUse)).Uses.Select(u => new NodeObj(u.Alias.Name.Value, SerializeSpan(u.Span))).ToArray());
     base.VisitUseStatement(x);
     _serializer.EndSerialize();
 }
コード例 #5
0
            public override void VisitUseStatement(UseStatement x)
            {
                VisitSpecificElementProlog();

                SerializeToken(nameof(x.Kind), x.Kind.ToString(), null);
                x.Uses.Foreach(SerializeUse);

                base.VisitUseStatement(x);
            }
コード例 #6
0
        public void ParseTest()
        {
            var context   = new ParserContext(new Vrml97Tokenizer(new StringReader(@"
USE qwe123
")));
            var statement = UseStatement.Parse(context);

            Assert.AreEqual("qwe123", statement.NodeName);
        }
コード例 #7
0
            protected internal override Node VisitUseStatement([NotNull] UseStatement node)
            {
                this.Builder.Append("USE DEFAULT ");

                this.Visit(node.SettingFunction);

                this.Builder.Append($" FOR {node.FunctionName}");

                return(node);
            }
コード例 #8
0
 public QsiChangeSearchPathActionNode VisitUseStatement(UseStatement useStatement)
 {
     return(new()
     {
         Identifiers = new[]
         {
             IdentifierVisitor.CreateIdentifier(useStatement.DatabaseName),
         }
     });
 }
コード例 #9
0
ファイル: Evaluator.cs プロジェクト: MaartenX/ConnectQl
        /// <summary>
        /// Visits a <see cref="UseStatement"/>.
        /// </summary>
        /// <param name="node">
        /// The node.
        /// </param>
        /// <returns>
        /// The node, or a new version of the node.
        /// </returns>
        protected internal override Node VisitUseStatement(UseStatement node)
        {
            try
            {
                ((IInternalExecutionContext)this.statements).RegisterDefault(node.SettingFunction.Name, node.FunctionName, this.Evaluate(node.SettingFunction, out bool sideEffects));
            }
            catch
            {
                // Ignore.
            }

            return(base.VisitUseStatement(node));
        }
コード例 #10
0
ファイル: TokenVisitor.cs プロジェクト: petrroll/Parsers
        public override void VisitUseStatement(UseStatement x)
        {
            ConsumeToken(Tokens.T_USE, "use", x.Span.Start);
            switch (x.Kind)
            {
            case AliasKind.Constant: ConsumeToken(Tokens.T_CONST, "const"); break;

            case AliasKind.Function: ConsumeToken(Tokens.T_FUNCTION, "function"); break;
            }

            VisitElementList(x.Uses, VisitUse, Tokens.T_COMMA, ",");
            ConsumeToken(Tokens.T_SEMI, ";", x.Span.End - 1);
        }
コード例 #11
0
        public QsiChangeSearchPathActionNode VisitUseStatement(UseStatement useStatement)
        {
            var node = new QsiChangeSearchPathActionNode
            {
                Identifiers = new[]
                {
                    IdentifierVisitor.CreateIdentifier(useStatement.DatabaseName),
                }
            };

            SqlServerTree.PutFragmentSpan(node, useStatement);

            return(node);
        }
コード例 #12
0
        protected internal override Node VisitUseStatement(UseStatement node)
        {
            node = (UseStatement)base.VisitUseStatement(node);

            var context  = Expression.Parameter(typeof(IExecutionContext), "context");
            var getValue = Expression.Lambda <Func <IExecutionContext, object> >(
                GenericVisitor.Visit(
                    (ExecutionContextExpression e) => context,
                    (CompareExpression e) => e.CreateComparer(),
                    this.data.ConvertToLinqExpression(node.SettingFunction)),
                context).Compile();

            this.data.SetQueryPlan(node, new UseDefaultQueryPlan(node.SettingFunction.Name, node.FunctionName, getValue));

            return(node);
        }
コード例 #13
0
        public override void Accept(UseStatement useStmt)
        {
            string import = !useStmt.Relative ? useStmt.Module : Path.Combine(
                Path.GetDirectoryName(useStmt.Location.File),
                useStmt.Module);

            /*
             * Implementation detail: The use statement in all reality is simply an
             * alias for the function require (); Here we translate the use statement
             * into a call to the require function
             */
            if (useStmt.Wildcard)
            {
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.LoadConst,
                                                   module.DefineConstant(new IodineString(import)));
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.BuildTuple, 0);
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.LoadGlobal,
                                                   module.DefineConstant(new IodineName("require")));
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.Invoke, 2);
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.Pop);
            }
            else
            {
                IodineObject[] items = new IodineObject [useStmt.Imports.Count];

                module.Initializer.EmitInstruction(useStmt.Location, Opcode.LoadConst,
                                                   module.DefineConstant(new IodineString(import)));
                if (items.Length > 0)
                {
                    for (int i = 0; i < items.Length; i++)
                    {
                        items [i] = new IodineString(useStmt.Imports [i]);
                        module.Initializer.EmitInstruction(useStmt.Location, Opcode.LoadConst,
                                                           module.DefineConstant(new IodineString(useStmt.Imports [i])));
                    }
                    module.Initializer.EmitInstruction(useStmt.Location, Opcode.BuildTuple, items.Length);
                }
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.LoadGlobal,
                                                   module.DefineConstant(new IodineName("require")));
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.Invoke,
                                                   items.Length == 0 ? 1 : 2);
                module.Initializer.EmitInstruction(useStmt.Location, Opcode.Pop);
            }
        }
コード例 #14
0
        protected virtual void ParseNodeStatement(ParserContext context)
        {
            var token = context.PeekNextToken();

            switch (token.Text)
            {
            case "DEF":
                ParseDefNodeStatement(context);
                break;

            case "USE":
                var useStatement = UseStatement.Parse(context);
                var node         = context.FindNode(useStatement.NodeName);
                context.AcceptChild(node);
                break;

            default:
                ParseNode(context);
                break;
            }
        }
コード例 #15
0
 /// <summary>
 /// Visits <c>declare</c> statement and its inner statement.
 /// </summary>
 virtual public void VisitUseStatement(UseStatement x)
 {
     // nothing
 }
コード例 #16
0
 public override void Accept(UseStatement useStmt)
 {
     errorLog.AddError(ErrorType.ParserError, useStmt.Location,
                       "use statement not valid inside function body!");
 }
コード例 #17
0
 public virtual void EnterUseStatement(UseStatement useStatement)
 {
     Enter(new Use(useStatement), useStatement);
     Exit();
 }
コード例 #18
0
ファイル: NodeVisitor.cs プロジェクト: MaartenX/ConnectQl
 /// <summary>
 /// Visits a <see cref="UseStatement"/>.
 /// </summary>
 /// <param name="node">
 /// The node.
 /// </param>
 /// <returns>
 /// The node, or a new version of the node.
 /// </returns>
 protected internal virtual Node VisitUseStatement([NotNull] UseStatement node)
 {
     return(node.VisitChildren(this));
 }
コード例 #19
0
ファイル: AllNodesVisitor.cs プロジェクト: yaakoviyun/sqlskim
 public override void Visit(UseStatement node) { this.action(node); }
コード例 #20
0
ファイル: FunctionCompiler.cs プロジェクト: parhelia512/nginz
 public override void Accept(UseStatement useStmt)
 {
 }
コード例 #21
0
 public override void ExplicitVisit(UseStatement fragment)
 {
     _fragments.Add(fragment);
 }
コード例 #22
0
 /// <summary>
 /// Visits a <see cref="UseStatement"/>.
 /// </summary>
 /// <param name="node">
 /// The node.
 /// </param>
 /// <returns>
 /// The node, or a new version of the node.
 /// </returns>
 protected internal override Node VisitUseStatement(UseStatement node)
 {
     return(this.VisitImplementation(node) ?? base.VisitUseStatement(node));
 }
コード例 #23
0
 public override void Accept(UseStatement useStmt)
 {
     errorLog.AddError(ErrorType.ParserError, useStmt.Location,
                       "statement can not exist inside pattern!");
 }
コード例 #24
0
ファイル: AstVisitor.cs プロジェクト: josh-127/Iodine
 public virtual void Accept(UseStatement useStmt)
 {
 }