summaryrefslogtreecommitdiffstats
path: root/server/util_expr_parse.y (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Non terminal cannot have string aliases (only tokens appear in errorJoe Orton2019-11-131-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | messages). %token is used to define tokens, and %nterm non terminals. The hidden %type (which was only recently documented) is meant for both tokens and non terminals. Yet %type <foo> expr "expression" is actually more or less equivalent to %nterm <foo> expr %token <foo> "expression" which is clearly not the intention of the author here. * server/util_expr_parse.y: Remove useless string-literal only tokens. Prefer %nterm to %type to avoid this error. PR: #72 Submitted by: Akim Demaille <akim.demaille gmail.com> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869724 13f79535-47bb-0310-9956-ffa450edef68
* ap_expr: follow up to r1810605.Yann Ylavic2017-10-041-88/+71
| | | | | | | | | The "split" and "join" operators are now a prefix, ala perl. Add the "sub" operator for string substitutions, prefix still. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1811104 13f79535-47bb-0310-9956-ffa450edef68
* ap_expr: follow up to r1810605.Yann Ylavic2017-10-031-18/+18
| | | | | | | | Better token/type descriptors for better parsing error messages. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1811010 13f79535-47bb-0310-9956-ffa450edef68
* ap_expr: open string expressions to the <word>.Yann Ylavic2017-10-021-52/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduces the syntax "%{:<word>:}", borrowed from the <var>'s one, and which likewise can be embedded anywhere in a string expression (the same reserved character ':' gets reused in an unambiguous manner). This allows the two types of expressions (boolean and string) to now share fully the same language set, namely: strings, lists, vars, regexes, backrefs, functions with multiple or complex arguments, and especially combinations thereof. Most of them were reserved to boolean expressions only, while complex string constructions can also benefit to, well, strings. The <word> construct allows that (say the syntax "%{:<word>:}" looks like a temporary variable constructed in a string). Since string expressions may now have to deal with lists (arrays), they also need a way to produce/extract strings from list and vice versa. This can be done with the new "join" and "split" operators, while the new substitution regexes (like "s/<pattern>/<substitute>/<flags>") may be used to manipulate strings in place. All this of course available for both string and boolean expressions. Tests and doc updates upcoming.. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1810605 13f79535-47bb-0310-9956-ffa450edef68
* * ap_exr: Add replace(string, from, to) function.Jan Kaluža2014-11-271-0/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1642154 13f79535-47bb-0310-9956-ffa450edef68
* Provide better token names for error messagesStefan Fritsch2013-06-151-47/+47
| | | | | | | | Use either human readable names or the exact spelling from the BNF from the docs. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1493414 13f79535-47bb-0310-9956-ffa450edef68
* Limit recursion in ap_expr evaluation to avoid unbounded stack usageStefan Fritsch2011-11-191-4/+4
| | | | | | | | | * evaluate chains of ||, &&, and string concatenation non-recursively * limit other types of recursion to 20 levels * avoid some string copies if concatenating more than 2 strings git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1204087 13f79535-47bb-0310-9956-ffa450edef68
* Improve error message by removing 'unexpected T_ERROR' in one case.Stefan Fritsch2011-10-101-1/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1181230 13f79535-47bb-0310-9956-ffa450edef68
* Do proper length checks in the expression scanner. This allows to remove theStefan Fritsch2011-08-131-0/+1
| | | | | | | | 8K length limit for expressions. Strings/Regexs in an expression are still limited to 8K, though. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1157362 13f79535-47bb-0310-9956-ffa450edef68
* Add string valued expressions to ap_expr, do some API cleanupStefan Fritsch2011-07-021-1/+5
| | | | | | | | | | | - add possibility to have expressions that evaluate to a string and not to a boolean value - modify ap_expr_parse_cmd() interface to support this and make it more convenient to use in general - rename AP_EXPR_FLAGS_* to AP_EXPR_FLAG_* for consistency git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1142164 13f79535-47bb-0310-9956-ffa450edef68
* Rename ap_expr's typedef names:Stefan Fritsch2010-12-041-5/+5
| | | | | | | | | | | ap_expr -> ap_expr_t ap_expr_parse_ctx -> ap_expr_parse_ctx_t ap_expr_eval_ctx -> ap_expr_eval_ctx_t ap_expr_lookup_fn -> ap_expr_lookup_fn_t ap_expr_node_op -> ap_expr_node_op_e git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1042146 13f79535-47bb-0310-9956-ffa450edef68
* - add -ipmatch, -str(c)match, -fnmatch, -R operators to ap_exprStefan Fritsch2010-11-281-2/+3
| | | | | | | | | | - allow lookup function to pre-parse string constant arguments (used for subnet masks so far) - various bug fixes for binary operators - do strdup() for error messages created on the stack to avoid corruption git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1039900 13f79535-47bb-0310-9956-ffa450edef68
* Fix some Windows build issuesStefan Fritsch2010-11-251-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1039204 13f79535-47bb-0310-9956-ffa450edef68
* ap_expr related fixes/enhancements:Stefan Fritsch2010-11-211-1/+12
| | | | | | | | | | | - implement regex backreferences and make them available for setting envvars in SetEnvIfExpr - implement nested function calls in %-syntax: %{func1:%{func2:arg}} - actually implement evaluation of concatenation operator (oops...) - Fix <If ... > treating an internal error as success git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1037504 13f79535-47bb-0310-9956-ffa450edef68
* Replace ap_expr with a parser derived from mod_ssl's parser. Make mod_ssl useStefan Fritsch2010-11-061-0/+199
the new parser. Rework ap_expr's public interface and provide hooks for modules to add variables and functions. The Netware and Windows build files still need to be adjusted git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1032073 13f79535-47bb-0310-9956-ffa450edef68