示例#1
0
            /// <summary>
            /// Get the value indicating if the given constant is evaluable in compile time.
            /// </summary>
            /// <param name="type"></param>
            /// <returns></returns>
            private bool IsEvaluable(PseudoConstUse.Types type)
            {
                switch (type)
                {
                case PseudoConstUse.Types.File:
                case PseudoConstUse.Types.Dir:
                    return(false);

                default:
                    return(true);
                }
            }
示例#2
0
        /// <summary>
        /// Gets token corresponding to given pseudo constant <paramref name="type"/>.
        /// </summary>
        /// <param name="type">Pseudo constant type.</param>
        /// <returns>Corresponding token.</returns>
        public static Tokens GetPseudoConstUseToken(PseudoConstUse.Types type)
        {
            switch (type)
            {
            case PseudoConstUse.Types.Class: return(Tokens.T_CLASS_C);

            case PseudoConstUse.Types.Trait: return(Tokens.T_TRAIT_C);

            case PseudoConstUse.Types.Namespace: return(Tokens.T_NS_C);

            case PseudoConstUse.Types.Function: return(Tokens.T_FUNC_C);

            case PseudoConstUse.Types.Method: return(Tokens.T_METHOD_C);

            case PseudoConstUse.Types.File: return(Tokens.T_FILE);

            case PseudoConstUse.Types.Line: return(Tokens.T_LINE);

            case PseudoConstUse.Types.Dir: return(Tokens.T_DIR);

            default:
                throw new ArgumentException();
            }
        }
示例#3
0
 public virtual LangElement PseudoConstUse(Span span, PseudoConstUse.Types type)
 {
     return(new PseudoConstUse(span, type));
 }
示例#4
0
 public BoundPseudoConst(PseudoConstUse.Types type)
 {
     this.Type = type;
 }
示例#5
0
 public override LangElement PseudoConstUse(Span span, PseudoConstUse.Types type)
 => CountLE(base.PseudoConstUse(span, type));