示例#1
0
文件: Program.cs 项目: MasterQ32/psi
        public static Symbol AddOperator(this SimpleScope scope, PsiOperator op, FunctionType type)
        {
            var sym = new Symbol(type, op)
            {
                Initializer = new Intermediate.FunctionLiteral(new BuiltinFunction(type)),
                IsConst     = true,
                IsExported  = false,
                Kind        = SymbolKind.Builtin
            };

            scope.Add(sym);
            return(sym);
        }
示例#2
0
 public Signature(ITypeSignature type, PsiOperator op) : this(type, op.ToSymbolName())
 {
 }
示例#3
0
		/// <summary>
		/// Converts the operator into its syntactical form (Plus will be +).
		/// </summary>
		public static string ToSyntax(this PsiOperator op)
		{
			switch(op)
			{

				case PsiOperator.Dot: return ".";

				case PsiOperator.Meta: return "'";

				case PsiOperator.Invert: return "~";

				case PsiOperator.New: return "new";

				case PsiOperator.ArithmeticShiftRight: return ">>>";

				case PsiOperator.ShiftLeft: return "<<";

				case PsiOperator.ShiftRight: return ">>";

				case PsiOperator.Plus: return "+";

				case PsiOperator.Minus: return "-";

				case PsiOperator.Concat: return "--";

				case PsiOperator.Multiply: return "*";

				case PsiOperator.Divide: return "/";

				case PsiOperator.Modulo: return "%";

				case PsiOperator.Exponentiate: return "**";

				case PsiOperator.And: return "&";

				case PsiOperator.Or: return "|";

				case PsiOperator.Xor: return "^";

				case PsiOperator.Forward: return "->";

				case PsiOperator.Backward: return "<-";

				case PsiOperator.CopyAssign: return "=";

				case PsiOperator.SemanticAssign: return ":=";

				case PsiOperator.WritebackArithmeticShiftRight: return ">>>=";

				case PsiOperator.WritebackShiftLeft: return "<<=";

				case PsiOperator.WritebackShiftRight: return ">>=";

				case PsiOperator.WritebackPlus: return "+=";

				case PsiOperator.WritebackMinus: return "-=";

				case PsiOperator.WritebackConcat: return "--=";

				case PsiOperator.WritebackMultiply: return "*=";

				case PsiOperator.WritebackDivide: return "/=";

				case PsiOperator.WritebackModulo: return "%=";

				case PsiOperator.WritebackExponentiate: return "**=";

				case PsiOperator.WritebackAnd: return "&=";

				case PsiOperator.WritebackOr: return "|=";

				case PsiOperator.WritebackXor: return "^=";

				case PsiOperator.LessOrEqual: return "<=";

				case PsiOperator.MoreOrEqual: return ">=";

				case PsiOperator.Equals: return "==";

				case PsiOperator.NotEquals: return "!=";

				case PsiOperator.Less: return "<";

				case PsiOperator.More: return ">";

				default: return null;
			}
		}
示例#4
0
		/// <summary>
		/// Converts the operator into its symbol form (Plus will be operator '+').
		/// </summary>
		public static string ToSymbolName(this PsiOperator op) => "operator '" + ToSyntax(op) + "'";
示例#5
0
文件: Symbol.cs 项目: MasterQ32/psi
 public Symbol(Type type, PsiOperator id) :
     this(type, id.ToSymbolName())
 {
 }
示例#6
0
 public BinaryOperation(PsiOperator @operator, Expression lhs, Expression rhs)
 {
     this.Operator      = @operator;
     this.LeftHandSide  = lhs.NotNull();
     this.RightHandSide = rhs.NotNull();
 }
示例#7
0
 public UnaryOperation(PsiOperator @operator, Expression operand)
 {
     this.Operator = @operator;
     this.Operand  = operand.NotNull();
 }