Пример #1
0
        public ProjectHost(ProgramOptions options, IServiceProvider serviceProvider, ILanguageServer languageServer, ILogger <ProjectHost> logger)
        {
            _logger         = logger;
            _name           = options.Name;
            _languageServer = languageServer;

            _program = serviceProvider.CreateInstance <PapyrusProgram>(options);
            _program.OnScriptFileChanged += HandleScriptFileChanged;
        }
Пример #2
0
        public ScriptType(PapyrusProgram program, ScriptSymbol symbol, ScriptObjectType compilerType)
            : base(program, symbol, compilerType)
        {
#if FALLOUT4
            _structTypes = symbol.Children.OfType <StructSymbol>().Select(s =>
            {
                CompilerType.TryGetStruct(s.Name, out var structType);

                return(new StructType(program, s, structType));
            }).ToDictionary(s => s.Name);
#endif
        }
Пример #3
0
        public DiagnosticResult <ScriptNode> Bind(ScriptFile file, PapyrusProgram program, IReadOnlyScriptText text, ITokenStream tokenStream, CommonTree objectNode)
        {
            return(DiagnosticResult <ScriptNode> .TryWithDiagnostics((diagnostics) =>
            {
                _text = text;
                _tokenStream = tokenStream;
                _diagnostics = diagnostics;

                _scriptNode = new ScriptNode
                {
                    File = file,
                    Program = program
                };
                _scriptNode.Script = _scriptNode;
                _scriptNode.CompilerNode = objectNode;
                _scriptNode.Range = objectNode.GetRange(tokenStream, text);
                _scriptNode.Text = text.Text;

                var children = new Scanner <CommonTree>(objectNode.GetChildren());
                children.Next();

                _scriptNode.Header = BindScriptHeader(_scriptNode, children);

                foreach (var child in children.AllRemaining())
                {
                    var blockChildren = new Scanner <CommonTree>(new CommonTree[] { child });
                    blockChildren.Next();

                    var definition = BindDefinition(_scriptNode, blockChildren);
                    if (definition != null)
                    {
                        lock (_definitionsLock)
                        {
                            _scriptNode.Definitions.Add(definition);
                        }
                    }
                }

                return _scriptNode;
            }));
        }
Пример #4
0
 protected ProgramTestBase()
 {
     _program = ProgramTestHarness.CreateProgram();
     _program.ResolveSources().Wait();
 }
Пример #5
0
 public TypeChecker(PapyrusProgram program)
 {
     _program               = program;
     _compilerTypeTable     = new CompilerTypeTable();
     _typeEvaluationVisitor = new TypeEvaluationVisitor(this);
 }
Пример #6
0
 public ArrayType(PapyrusProgram program, ScriptSymbol symbol, ScriptObjectType compilerType, ObjectIdentifier elementType)
     : base(program, symbol, compilerType)
 {
     Symbol.SyntheticArrayType = this;
     _elementType = elementType;
 }
Пример #7
0
 public IntrinsicType(PapyrusProgram program, ObjectIdentifier name) : base(program, name)
 {
 }
Пример #8
0
 internal ComplexType(PapyrusProgram program, TypeSymbol symbol, ScriptComplexType compilerType) :
     base(program, symbol.Id)
 {
     _symbol       = symbol;
     _compilerType = compilerType;
 }
Пример #9
0
 internal PapyrusType(PapyrusProgram program, ObjectIdentifier name)
 {
     _program = program;
     _name    = name;
 }
Пример #10
0
 public StructType(PapyrusProgram program, StructSymbol symbol, ScriptStructType compilerType)
     : base(program, symbol, compilerType)
 {
 }