From: SourceForge.net <no...@so...> - 2006-06-01 17:06:55
|
Bugs item #1029267, was opened at 2004-09-16 19:22 Message generated for change (Comment added) made by flatworm You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1029267&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 44. Parsing and Eval Group: obsolete: 8.5a2 Status: Open Resolution: None Priority: 7 Submitted By: Don Porter (dgp) Assigned to: Don Porter (dgp) Summary: bad [expr] syntax error message Initial Comment: % expr 1=2 syntax error in expression "1=2": extra tokens at end of expression The error message "single equality character not legal in expressions" is present in tclParseExpr.c and would be more fitting here. Why isn't it returned? ---------------------------------------------------------------------- Comment By: Konstantin Khomoutov (flatworm) Date: 2006-06-01 21:06 Message: Logged In: YES user_id=1350198 A kind of "silent error" when just one double quote is passed to the expr: % if {"} { puts then } else { puts else } % set errorCode NONE % set errorInfo while executing "if {"} { puts then } else { puts else }" On the other hand, if {(")} ... produces the sensible error message: missing " ---------------------------------------------------------------------- Comment By: Donal K. Fellows (dkf) Date: 2004-09-19 21:11 Message: Logged In: YES user_id=79902 Getting sensible failures out of a parser is notoriously difficult. At least we aren't in the previous situation where all the parser would say was "syntax error", which was singularly uninformative in complex expressions... ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2004-09-19 19:20 Message: Logged In: YES user_id=148712 Another one: % expr cos(1=2) syntax error in expression "cos(1=2)": missing close parenthesis at end of function call What is happening is that the expr parser considers the subexpression '1=2' finished at the '1', with extra tokens '=2)'. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2004-09-19 18:24 Message: Logged In: YES user_id=148712 At least some of the tests (notably parseExpr-16.33) expect this behaviour. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2004-09-19 18:18 Message: Logged In: YES user_id=148712 Oh my ... the whole "wrong lexeme type" section of ParsePrimaryExpr() seems non-functional. Another example is % expr 1,2 syntax error in expression "1,2": extra tokens at end of expression What is happening is that the parser sees the '1' as a complete literal expression, and complains about '=2' or ',2' or 'a2' following it. The correct message is produced for [expr =2], as the first lexeme is the bare = sign. Another beauty: % expr (1=2) syntax error in expression "(1=2)": looking for close parenthesis ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1029267&group_id=10894 |