コード例 #1
0
 public ILanguageRuntime Load(IGrammarSource source)
 {
     var provider = new NamedLanguageProvider(source);
     ILanguageRuntime result;
     ResourceContext.Instance.LoadOrBuild(provider, out result);
     return result;
 }
コード例 #2
0
        public ILanguageRuntime Load(IGrammarSource name)
        {
            var cilLanguageName = name as CilGrammarSource;
            if (cilLanguageName == null)
            {
                return null;
            }

            var typeName = cilLanguageName.LanguageTypeName;
            string[] assemblyNameCandidates = {
                cilLanguageName.SourceAssembly.GetName().Name,
                cilLanguageName.SourceAssembly.GetName().Name + ".Derived"
            };

            foreach (var assemblyName in assemblyNameCandidates)
            {
                var fullTypeName = typeName + ", " + assemblyName;
                var type = Type.GetType(fullTypeName);
                if (type == null)
                {
                    continue;
                }

                return (ILanguageRuntime)Activator.CreateInstance(type, cilLanguageName);
            }

            return null;
        }
コード例 #3
0
        public Grammar Read(IGrammarSource source, ILogging logging)
        {
            var cilSource = source as CilGrammarSource;

            if (cilSource == null)
            {
                return(null);
            }

            this.logging = logging;

            CilGrammar definition = null;

            logging.WithTimeLogging(
                cilSource.LanguageName,
                cilSource.Origin,
                () =>
            {
                definition = new CilGrammar(cilSource, logging);
            },
                "parsing language definition");

            if (definition == null || !definition.IsValid)
            {
                return(null);
            }

            var grammar = BuildGrammar(definition);

            grammar.Options = (IronText.Reflection.RuntimeOptions)Attributes.First <LanguageAttribute>(cilSource.DefinitionType).Flags;
            return(grammar);
        }
コード例 #4
0
        public ILanguageRuntime Load(IGrammarSource name)
        {
            var cilLanguageName = name as CilGrammarSource;

            if (cilLanguageName == null)
            {
                return(null);
            }

            var typeName = cilLanguageName.LanguageTypeName;

            string[] assemblyNameCandidates =
            {
                cilLanguageName.SourceAssembly.GetName().Name,
                cilLanguageName.SourceAssembly.GetName().Name + ".Derived"
            };

            foreach (var assemblyName in assemblyNameCandidates)
            {
                var fullTypeName = typeName + ", " + assemblyName;
                var type         = Type.GetType(fullTypeName);
                if (type == null)
                {
                    continue;
                }

                return((ILanguageRuntime)Activator.CreateInstance(type, cilLanguageName));
            }

            return(null);
        }
コード例 #5
0
        public static ILanguageRuntime Get(IGrammarSource source)
        {
            ILanguageRuntime result;

            if (languages.TryGetValue(source, out result))
            {
                return(result);
            }
            else
            {
                var loader = GetLoader() ?? new CilExistingLanguageLoader();
                result = loader.Load(source);
                if (result == null)
                {
                    throw new InvalidOperationException(
                              string.Format(
                                  "Unable to load language '{0}'.",
                                  source.LanguageName));
                }

                if (!IsBootstrap(result))
                {
                    languages[source] = result;
                }

                ((IInternalInitializable)result).Init();
            }

            return(result);
        }
コード例 #6
0
        public Grammar Read(IGrammarSource source, ILogging logging)
        {
            var cilSource = source as CilGrammarSource;
            if (cilSource == null)
            {
                return null;
            }

            this.logging = logging;

            CilGrammar definition = null;

            logging.WithTimeLogging(
                cilSource.LanguageName,
                cilSource.Origin,
                () =>
                {
                    definition = new CilGrammar(cilSource, logging);
                },
                "parsing language definition");

            if (definition == null || !definition.IsValid)
            {
                return null;
            }

            var grammar = BuildGrammar(definition);

            grammar.Options = (IronText.Reflection.RuntimeOptions)Attributes.First<LanguageAttribute>(cilSource.DefinitionType).Flags;
            return grammar;
        }
コード例 #7
0
        public ILanguageRuntime Load(IGrammarSource source)
        {
            var provider = new NamedLanguageProvider(source);
            ILanguageRuntime result;

            ResourceContext.Instance.LoadOrBuild(provider, out result);
            return(result);
        }
コード例 #8
0
ファイル: ReportData.cs プロジェクト: sucaba/IronTextLibrary
 internal ReportData(
     IGrammarSource source,
     LanguageData data,
     ParserConflictInfo[] parserConflicts,
     DotState[]           parserStates)
 {
     this.source          = source;
     this.data            = data;
     this.parserConflicts = parserConflicts;
     this.parserStates    = parserStates;
 }
コード例 #9
0
 internal ReportData(
     IGrammarSource       source,
     LanguageData         data,
     ParserConflictInfo[] parserConflicts,
     DotState[]           parserStates)
 {
     this.source = source;
     this.data = data;
     this.parserConflicts = parserConflicts;
     this.parserStates = parserStates;
 }
コード例 #10
0
 public NamedLanguageProvider(IGrammarSource languageName)
 {
     this.languageName = languageName;
 }
コード例 #11
0
 public virtual Grammar GetGrammar(IGrammarSource grammarSource)
 {
     return(new Grammar(grammarSource.FilePath));
 }
コード例 #12
0
 public LanguageDataProvider(IGrammarSource source, bool bootstrap)
 {
     this.source    = source;
     this.bootstrap = bootstrap;
     this.Getter    = Build;
 }