mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-07 00:50:50 +00:00
libdtrace: Work around a warning from flex
When compiling dt_lex.l, flex produces warnings of the form: dt_lex.l:413: warning, trailing context made variable due to preceding '|' action dt_lex.l:412: warning, dangerous trailing context dt_lex.l:412: warning, dangerous trailing context Here, trailing context refers to the use of "$", which expands to "/\n". The meaning behind these warnings is described in the first two paragraphs of the flex manual's DEFICIENCIES/BUGS section: Some trailing context patterns cannot be properly matched and generate warning messages ("dangerous trailing context"). These are patterns where the ending of the first part of the rule matches the beginning of the second part, such as "zx*/xy*", where the 'x*' matches the 'x' at the beginning of the trailing context. (Note that the POSIX draft states that the text matched by such patterns is undefined.) For some trailing context rules, parts which are actually fixed-length are not recognized as such, leading to the above mentioned performance loss. In particular, parts using '|' or {n} (such as "foo{3}") are always considered variable-length. Here, the warnings appear to be bogus in this case. The lexer has no problem matching either of the referenced patterns, e.g., printf("foobar or # 1 "asdfasdf Introduce a small amount of code duplication to silence the warning. MFC after: 2 weeks
This commit is contained in:
parent
be2f92a96b
commit
4bddff0833
|
@ -407,7 +407,7 @@ if (yypcb->pcb_token != 0) {
|
|||
|
||||
<S0>{RGX_FP} yyerror("floating-point constants are not permitted\n");
|
||||
|
||||
<S0>\"{RGX_STR}$ |
|
||||
<S0>\"{RGX_STR}$ xyerror(D_STR_NL, "newline encountered in string literal");
|
||||
<S3>\"{RGX_STR}$ xyerror(D_STR_NL, "newline encountered in string literal");
|
||||
|
||||
<S0>\"{RGX_STR}\" |
|
||||
|
|
Loading…
Reference in a new issue