Axiom.Compiler.Framework.PrologOperatorTable.AddInfixOperator C# (CSharp) Метод

AddInfixOperator() публичный Метод

public AddInfixOperator ( string name, bool left, bool right, int precedence ) : void
name string
left bool
right bool
precedence int
Результат void
        public void AddInfixOperator(string name, bool left, bool right, int precedence)
        {
            PrologOperator op = null;
            if (IsOperator(name))
            {
                op = GetOperator(name);
                op.InfixPrecedence = precedence;
                op.IsInfixLeftAssociative = left;
                op.IsInfixRightAssociative = right;
            }
            else
            {
                op = new PrologOperator(name, 0, 0, precedence);
                op.IsInfixLeftAssociative = left;
                op.IsInfixRightAssociative = right;
                _operatorTable.Add(name, op);
            }
        }

Usage Example

        private void UpdateOperatorTable(int priority, string associativity, string name)
        {
            switch (associativity)
            {
            case "xfx":
                /* xfx */
                _operators.AddInfixOperator(name, false, false, priority);
                break;

            case "xfy":
                _operators.AddInfixOperator(name, false, true, priority);
                break;

            case "yfx":
                _operators.AddInfixOperator(name, true, false, priority);
                break;

            case "fx":
                _operators.AddPrefixOperator(name, false, priority);
                break;

            case "fy":
                _operators.AddPrefixOperator(name, true, priority);
                break;

            case "xf":
                _operators.AddPostfixOperator(name, false, priority);
                break;

            default:
                _errors.Add(new PrologCompilerError("P0010", "Invalid operator associativity specifier.", "", false, _scanner.Current.Line, _scanner.Current.Column));
                break;
            }
        }