IsSuffixOperatorName() public static method

Decides whether the name appears to represent a suffix operator of the form sufOP or OP\.
public static IsSuffixOperatorName ( Symbol name, Symbol &bareName, bool checkNatural ) : bool
name Symbol Potential operator name to evaluate.
bareName Symbol If the name ends with "suf", this is the same /// name without "suf", otherwise it is set to name itself. This /// output is calculated even if the function returns false.
checkNatural bool If true, part of the requirement for /// returning true will be that IsNaturalOperator(bareName) == true.
return bool
Beispiel #1
0
        private bool AutoPrintPrefixOrSuffixOp(ILNode node, Precedence context)
        {
            Symbol bareName;

            if (LesPrecedenceMap.IsSuffixOperatorName(node.Name, out bareName, false))
            {
                var prec = GetPrecedenceIfOperator(node, OperatorShape.Suffix, context);
                if (prec == null || prec.Value == LesPrecedence.Other)
                {
                    return(false);
                }
                Print(node[0], prec.Value.LeftContext(context));
                SpaceIf(prec.Value.Lo < _o.SpaceAfterPrefixStopPrecedence);
                WriteOpName(bareName, node.Target, prec.Value);
            }
            else
            {
                var prec = GetPrecedenceIfOperator(node, OperatorShape.Prefix, context);
                if (prec == null)
                {
                    return(false);
                }
                var spaceAfter = prec.Value.Lo < _o.SpaceAfterPrefixStopPrecedence;
                WriteOpName(node.Name, node.Target, prec.Value, spaceAfter);
                Print(node[0], prec.Value.RightContext(context));
            }
            return(true);
        }
Beispiel #2
0
        private bool AutoPrintPrefixOrSuffixOp(LNode node, Mode mode, Precedence context)
        {
            Symbol bareName;

            if (LesPrecedenceMap.IsSuffixOperatorName(node.Name, out bareName, false))
            {
                var prec = GetPrecedenceIfOperator(node, OperatorShape.Suffix, context);
                if (prec == null || prec.Value == LesPrecedence.Backtick)
                {
                    return(false);
                }
                Print(node.Args[0], mode, prec.Value.LeftContext(context));
                SpaceIf(prec.Value.Lo < SpaceAfterPrefixStopPrecedence);
                WriteOpName(bareName, prec.Value);
            }
            else
            {
                var prec = GetPrecedenceIfOperator(node, OperatorShape.Prefix, context);
                if (prec == null)
                {
                    return(false);
                }
                WriteOpName(node.Name, prec.Value);
                SpaceIf(prec.Value.Lo < SpaceAfterPrefixStopPrecedence);
                Print(node.Args[0], mode, prec.Value.RightContext(context));
            }
            return(true);
        }