_Core/Lang/Integration/Plugins.cs

(开头部分) 27KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComLib.Lang.Extensions;

namespace ComLib.Lang
{    
    /// <summary>
    /// Stores all the combinators.
    /// </summary>
    public class Plugins 
    {
        // e.g.
        // [ "monday"   ] = [ DayPlugin ]
        // [ "$IdToken" ] = [ LinqPlugin, ]
        private IDictionary<string, List<ILangPlugin>> _sysStmtPlugins = new Dictionary<string, List<ILangPlugin>>();
        private IDictionary<string, List<ILangPlugin>> _expPlugins     = new Dictionary<string, List<ILangPlugin>>();
        private IDictionary<string, List<ILangPlugin>> _tokPlugins     = new Dictionary<string, List<ILangPlugin>>();
        private IDictionary<string, List<ILangPlugin>> _lexPlugins     = new Dictionary<string, List<ILangPlugin>>();
        private IDictionary<string, List<ILangPlugin>> _postfixPlugins = new Dictionary<string, List<ILangPlugin>>();
        private IDictionary<string, List<ILangPlugin>> _stmtPlugins    = new Dictionary<string, List<ILangPlugin>>();
        private IDictionary<string, List<ILangPlugin>> _expStmtPlugins = new Dictionary<string, List<ILangPlugin>>();
        

        private int _totalExpPlugins = 0;
        private bool _hasLiteralCombinators = false;
        private bool _hasTokenPlugins = false;
        private bool _hasPostfixPlugins = false;

        private IExprPlugin _lastMatchedExp;
        private ITokenPlugin _lastMatchedTok;
        private ILexPlugin _lastMatchedLex;
        private IStmtPlugin _lastMatchedSysStmt;
        private IExprBasePlugin _lastMatchedExtStmt;
        private IDictionary<string, ILangPlugin> _sysMap;
        private IDictionary<string, ILangPlugin> _extMap;
        private IDictionary<string, object> _pluginSettings;
        private IList<IDisposable> _disposablePlugins;


        /// <summary>
        /// Initialize plugins.
        /// </summary>
        public Plugins()
        {
            _sysMap = new Dictionary<string, ILangPlugin>();
            _extMap = new Dictionary<string, ILangPlugin>();
            _pluginSettings = new Dictionary<string, object>();
        }


        /// <summary>
        /// Initialize
        /// </summary>
        public void Init()
        {
            // System plugins ( basic features - loops, if etc )
            _sysMap["Break"]           =  new BreakPlugin();
            _sysMap["Continue"]        =  new ContinuePlugin();
后面还有 694 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。