Code Search for Developers
 
 
  

CompilerContext.cs from p4shelf at Krugle


Show CompilerContext.cs syntax highlighted

/* **********************************************************************************
 *
 * Copyright (c) Microsoft Corporation. All rights reserved.
 *
 * This source code is subject to terms and conditions of the Shared Source License
 * for IronPython. A copy of the license can be found in the License.html file
 * at the root of this distribution. If you can not locate the Shared Source License
 * for IronPython, please send an email to ironpy@microsoft.com.
 * By using this source code in any fashion, you are agreeing to be bound by
 * the terms of the Shared Source License for IronPython.
 *
 * You must not remove this notice, or any other, from this software.
 *
 * **********************************************************************************/

using IronPython.Hosting;
using IronPython.Compiler.Ast;

namespace IronPython.Compiler {
    public class CompilerContext {
        /// <summary>
        /// Error reporting for the compiler
        /// </summary>
        private CompilerSink sink;

        /// <summary>
        /// from __future__ import division
        /// </summary>
        private bool trueDivision = Options.Division == DivisionOption.New;
        private bool allowWithStatement = false;

        /// <summary>
        /// store name of current file being compiled in the CompilerContext
        /// </summary>
        private string sourceFile;

        private const int DefaultErrorCode = -1;

        public string SourceFile {
            get {
                return sourceFile;
            }
        }

        public bool TrueDivision {
            get {
                return trueDivision;
            }
            internal set {
                trueDivision = value;
            }
        }

        public bool AllowWithStatement {
            get {
                return allowWithStatement;
            }
            internal set {
                allowWithStatement = value;
            }
        }

        public CompilerSink Sink {
            get { return sink; }
        }

        public CompilerContext()
            : this("<string>", new SimpleParserSink()) {
        }

        public CompilerContext(string sourceFile)
            : this(sourceFile, new SimpleParserSink()) {
        }

        public CompilerContext(string sourceFile, CompilerSink sink) {
            this.sourceFile = sourceFile;
            this.sink = sink;
        }

        public void AddError(string message, string lineText, int startLine, int startColumn, int endLine, int endColumn, Severity severity) {
            sink.AddError(sourceFile, message, lineText, new CodeSpan(startLine, startColumn, endLine, endColumn), DefaultErrorCode, severity);
        }

        public void AddError(string message, string lineText, int startLine, int startColumn,
                             int endLine, int endColumn, int errorCode, Severity severity) {
            sink.AddError(sourceFile, message, lineText, new CodeSpan(startLine, startColumn, endLine, endColumn), errorCode, severity);
        }

        public void AddError(string message, Node node) {
            AddError(message, node, Severity.Error);
        }


        public void AddError(string message, Node node, Severity severity) {
            sink.AddError(sourceFile, message, null, node.Span, DefaultErrorCode, severity);
        }

        public CompilerContext CopyWithNewSourceFile(string newSourceFile) {
            CompilerContext ret = new CompilerContext(newSourceFile, sink);
            ret.trueDivision = this.trueDivision;
            return ret;
        }
    }
}




See more files for this project here

p4shelf

A feature in Visual Studio Team Studio that was immediately appealing to me was shelving. The goal of this tool is replicate that general functionality in Perforce.

Project homepage: http://code.google.com/p/p4shelf/
Programming language(s): C#,C++,Python
License: gpl2

  AST/
    Binder.cs
    ClassDef.cs
    Expressions.cs
    FlowChecker.cs
    FuncDef.Generated.cs
    FuncDef.cs
    Node.cs
    Operator.Generated.cs
    Operator.cs
    ScopeStatement.Generated.cs
    ScopeStatement.cs
    Statements.cs
    Walker.Generated.cs
  Generation/
    AssemblyGen.cs
    CodeGen.cs
    EnvironmentFactory.cs
    EnvironmentNamespace.cs
    EnvironmentReference.cs
    Namespace.cs
    NewSubtypeMaker.cs
    NewTypeMaker.cs
    OutputGenerator.cs
    Slot.cs
    SlotFactory.cs
    TypeGen.cs
    UserTypeGenerator.cs
  CompiledModule.cs
  CompilerContext.cs
  CompilerHelpers.cs
  MethodBinder.cs
  MethodTracker.cs
  NameConverter.cs
  NameEnv.cs
  NewTypeInfo.cs
  Options.cs
  Parser.cs
  ParserSink.cs
  Token.cs
  TokenKind.Generated.cs
  Tokenizer.Generated.cs
  Tokenizer.cs