Ejemplo n.º 1
0
 /// <summary>
 /// Prevents a default instance of the <see cref="ShaderParser"/> class from being created.
 /// </summary>
 /// <param name="languageData">The language data.</param>
 /// <param name="root">The root of the language.</param>
 private ShaderParser(ShaderLanguageData languageData, NonTerminal root)
 {
     LanguageData = languageData;
     Grammar      = (ShaderGrammar)languageData.Grammar;
     Tokenizer    = new Tokenizer(languageData);
     Parser       = new Irony.Parsing.Parser(languageData, null, root);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the language.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static T GetGrammar <T>() where T : ShaderGrammar, new()
        {
            ShaderLanguageData languageData;

            lock (LanguageDatas)
            {
                if (!LanguageDatas.TryGetValue(typeof(T), out languageData))
                {
                    languageData = new ShaderLanguageData(new T());
                    LanguageDatas.Add(typeof(T), languageData);
                }

                return((T)languageData.Grammar);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets the parser.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static ShaderParser GetParser <T>(NonTerminal root = null) where T : ShaderGrammar, new()
        {
            ShaderLanguageData languageData;

            lock (LanguageDatas)
            {
                if (!LanguageDatas.TryGetValue(typeof(T), out languageData))
                {
                    languageData = new ShaderLanguageData(new T());
                    LanguageDatas.Add(typeof(T), languageData);
                }
            }

            return(new ShaderParser(languageData, root));
        }