// // Main entry point for parser. // You pass in the expression you want to parse, and you get an // ExpressionTree out the back end. // internal GenericExpressionNode Parse(string expression, XmlAttribute conditionAttributeRef, ParserOptions optionSettings) { // We currently have no support (and no scenarios) for disallowing property references // in Conditions. ErrorUtilities.VerifyThrow(0 != (optionSettings & ParserOptions.AllowProperties), "Properties should always be allowed."); this.conditionAttribute = conditionAttributeRef; this.options = optionSettings; lexer = new Scanner(expression, options); if (!lexer.Advance()) { errorPosition = lexer.GetErrorPosition(); ProjectErrorUtilities.VerifyThrowInvalidProject(false, this.conditionAttribute, lexer.GetErrorResource(), expression, errorPosition, lexer.UnexpectedlyFound); } GenericExpressionNode node = Expr(expression); if (!lexer.IsNext(Token.TokenType.EndOfInput)) { errorPosition = lexer.GetErrorPosition(); ProjectErrorUtilities.VerifyThrowInvalidProject(false, this.conditionAttribute, "UnexpectedTokenInCondition", expression, lexer.IsNextString(), errorPosition); } return(node); }
private GenericExpressionNode BooleanTerm(string expression) { GenericExpressionNode node = RelationalExpr(expression); if (node == null) { errorPosition = lexer.GetErrorPosition(); ProjectErrorUtilities.VerifyThrowInvalidProject(false, this.conditionAttribute, "UnexpectedTokenInCondition", expression, lexer.IsNextString(), errorPosition); } if (!lexer.IsNext(Token.TokenType.EndOfInput)) { node = BooleanTermPrime(expression, node); } return(node); }
// // Main entry point for parser. // You pass in the expression you want to parse, and you get an // ExpressionTree out the back end. // internal GenericExpressionNode Parse(string expression, XmlAttribute conditionAttributeRef, ParserOptions optionSettings) { // We currently have no support (and no scenarios) for disallowing property references // in Conditions. ErrorUtilities.VerifyThrow(0 != (optionSettings & ParserOptions.AllowProperties), "Properties should always be allowed."); this.conditionAttribute = conditionAttributeRef; this.options = optionSettings; lexer = new Scanner(expression, options); if (!lexer.Advance()) { errorPosition = lexer.GetErrorPosition(); ProjectErrorUtilities.VerifyThrowInvalidProject(false, this.conditionAttribute, lexer.GetErrorResource(), expression, errorPosition, lexer.UnexpectedlyFound); } GenericExpressionNode node = Expr(expression); if (!lexer.IsNext(Token.TokenType.EndOfInput)) { errorPosition = lexer.GetErrorPosition(); ProjectErrorUtilities.VerifyThrowInvalidProject(false, this.conditionAttribute, "UnexpectedTokenInCondition", expression, lexer.IsNextString(), errorPosition); } return node; }