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 |
checkNatural | bool | If true, part of the requirement for /// returning true will be that IsNaturalOperator(bareName) == true. |
return | bool |
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); }
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); }