private static bool ContainsInvalidKind(Parser.ExpressionNode node) { if (node == null) { return(false); } if (node.Kind == Parser.ExpressionKind.Cast || node.Kind == Parser.ExpressionKind.FunctionCall) { return(true); } return(ContainsInvalidKind(node.LeftNode) || ContainsInvalidKind(node.RightNode)); }
public static bool IsValidConstant(NativeConstant constant) { if (constant.ConstantKind == ConstantKind.MacroMethod) { return(false); } Parser.ExpressionParser p = new Parser.ExpressionParser(); Parser.ExpressionNode node = null; if (!p.TryParse(constant.Value.Expression, out node)) { return(false); } return(!ContainsInvalidKind(node)); }