parseexpr.test

来自「tcl是工具命令语言」· TEST 代码 · 共 654 行 · 第 1/3 页

TEST
654
字号
    testexprparser {[one; two; three; four;]} -1} {- {} 0 subexpr {[one; two; three; four;]} 1 command {[one; two; three; four;]} 0 {}}test parseExpr-15.18 {ParsePrimaryExpr procedure, missing close bracket} {    list [catch {testexprparser {[one} -1} msg] $msg} {1 {missing close-bracket}}test parseExpr-15.19 {ParsePrimaryExpr procedure, primary is braced string} {    testexprparser {{hello world}} -1} {- {} 0 subexpr {{hello world}} 1 text {hello world} 0 {}}test parseExpr-15.20 {ParsePrimaryExpr procedure, error in primary, which is braced string} {    list [catch {testexprparser "\{abc\\\n" -1} msg] $msg} {1 {missing close-brace}}test parseExpr-15.21 {ParsePrimaryExpr procedure, primary is braced string with multiple tokens} {    testexprparser "\{  \\ +123 \}" -1} {- {} 0 subexpr \{\ \ \\\n\ +123\ \} 4 word \{\ \ \\\n\ +123\ \} 3 text {  } 0 backslash \\\n\  0 text {+123 } 0 {}}test parseExpr-15.22 {ParsePrimaryExpr procedure, primary is function call} {    testexprparser {foo(123)} -1} {- {} 0 subexpr foo(123) 3 operator foo 0 subexpr 123 1 text 123 0 {}}test parseExpr-15.23 {ParsePrimaryExpr procedure, bad lexeme after function name} {wideIntegerUnparsed} {    list [catch {testexprparser {foo 12345678901234567890 123)} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-15.24 {ParsePrimaryExpr procedure, lexeme after function name isn't "("} {    list [catch {testexprparser {foo 27.4 123)} -1} msg] $msg} {1 {syntax error in expression "foo 27.4 123)": variable references require preceding $}}test parseExpr-15.25 {ParsePrimaryExpr procedure, bad lexeme after "("} {wideIntegerUnparsed} {    list [catch {testexprparser {foo(12345678901234567890)} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-15.26 {ParsePrimaryExpr procedure, function call, one arg} {    testexprparser {foo(27*4)} -1} {- {} 0 subexpr foo(27*4) 7 operator foo 0 subexpr 27*4 5 operator * 0 subexpr 27 1 text 27 0 subexpr 4 1 text 4 0 {}}test parseExpr-15.27 {ParsePrimaryExpr procedure, error in function arg} {    list [catch {testexprparser {foo(*1-2)} -1} msg] $msg} {1 {syntax error in expression "foo(*1-2)": unexpected operator *}}test parseExpr-15.28 {ParsePrimaryExpr procedure, error in function arg} {    list [catch {testexprparser {foo(*1-2)} -1} msg] $msg} {1 {syntax error in expression "foo(*1-2)": unexpected operator *}}test parseExpr-15.29 {ParsePrimaryExpr procedure, function call, comma after arg} {    testexprparser {foo(27-2, (-2*[foo]))} -1} {- {} 0 subexpr {foo(27-2, (-2*[foo]))} 15 operator foo 0 subexpr 27-2 5 operator - 0 subexpr 27 1 text 27 0 subexpr 2 1 text 2 0 subexpr {-2*[foo]} 7 operator * 0 subexpr -2 3 operator - 0 subexpr 2 1 text 2 0 subexpr {[foo]} 1 command {[foo]} 0 {}}test parseExpr-15.30 {ParsePrimaryExpr procedure, bad lexeme after comma} {wideIntegerUnparsed} {    list [catch {testexprparser {foo(123, 12345678901234567890)} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-15.31 {ParsePrimaryExpr procedure, lexeme not "," or ")" after arg} {    list [catch {testexprparser {foo(123 [foo])} -1} msg] $msg} {1 {syntax error in expression "foo(123 [foo])": missing close parenthesis at end of function call}}test parseExpr-15.32 {ParsePrimaryExpr procedure, bad lexeme after primary} {wideIntegerUnparsed} {    list [catch {testexprparser {123 12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-15.33 {ParsePrimaryExpr procedure, comma-specific message} {    list [catch {testexprparser {123+,456} -1} msg] $msg} {1 {syntax error in expression "123+,456": commas can only separate function arguments}}test parseExpr-15.34 {ParsePrimaryExpr procedure, single equal-specific message} {    list [catch {testexprparser {123+=456} -1} msg] $msg} {1 {syntax error in expression "123+=456": single equality character not legal in expressions}}test parseExpr-15.35 {ParsePrimaryExpr procedure, error in parenthesized subexpr} {    list [catch {testexprparser {(: 123 : 456)} -1} msg] $msg} {1 {syntax error in expression "(: 123 : 456)": unexpected ternary 'else' separator}}test parseExpr-15.36 {ParsePrimaryExpr procedure, missing close-bracket} {    # Test for Bug 681841    list [catch {testexprparser {[set a [format bc]} -1} msg] $msg} {1 {missing close-bracket}}test parseExpr-16.1 {GetLexeme procedure, whitespace before lexeme} {    testexprparser {   123} -1} {- {} 0 subexpr 123 1 text 123 0 {}}test parseExpr-16.2 {GetLexeme procedure, whitespace before lexeme} {    testexprparser {  \456} -1} {- {} 0 subexpr 456 1 text 456 0 {}}test parseExpr-16.3 {GetLexeme procedure, no lexeme after whitespace} {    testexprparser { 123 \   } -1} {- {} 0 subexpr 123 1 text 123 0 {}}test parseExpr-16.4 {GetLexeme procedure, integer lexeme} {    testexprparser {000} -1} {- {} 0 subexpr 000 1 text 000 0 {}}test parseExpr-16.5 {GetLexeme procedure, integer lexeme too big} {wideIntegerUnparsed} {    list [catch {testexprparser {12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-16.6 {GetLexeme procedure, bad integer lexeme} -body {    testexprparser {0999} -1} -returnCodes error -match glob -result {*invalid octal number*}test parseExpr-16.7 {GetLexeme procedure, double lexeme} {    testexprparser {0.999} -1} {- {} 0 subexpr 0.999 1 text 0.999 0 {}}test parseExpr-16.8 {GetLexeme procedure, double lexeme} {    testexprparser {.123} -1} {- {} 0 subexpr .123 1 text .123 0 {}}test parseExpr-16.9 {GetLexeme procedure, double lexeme} {nonPortable unixOnly} {    testexprparser {nan} -1} {- {} 0 subexpr nan 1 text nan 0 {}}test parseExpr-16.10 {GetLexeme procedure, double lexeme} {nonPortable unixOnly} {    testexprparser {NaN} -1} {- {} 0 subexpr NaN 1 text NaN 0 {}}test parseExpr-16.11 {GetLexeme procedure, bad double lexeme too big} {    list [catch {testexprparser {123.e+99999999999999} -1} msg] $msg} {1 {floating-point value too large to represent}}test parseExpr-16.12 {GetLexeme procedure, bad double lexeme} {    list [catch {testexprparser {123.4x56} -1} msg] $msg} {1 {syntax error in expression "123.4x56": extra tokens at end of expression}}test parseExpr-16.13 {GetLexeme procedure, lexeme is "["} {    testexprparser {[foo]} -1} {- {} 0 subexpr {[foo]} 1 command {[foo]} 0 {}}test parseExpr-16.14 {GetLexeme procedure, lexeme is open brace} {    testexprparser {{bar}} -1} {- {} 0 subexpr {{bar}} 1 text bar 0 {}}test parseExpr-16.15 {GetLexeme procedure, lexeme is "("} {    testexprparser {(123)} -1} {- {} 0 subexpr 123 1 text 123 0 {}}test parseExpr-16.16 {GetLexeme procedure, lexeme is ")"} {    testexprparser {(2*3)} -1} {- {} 0 subexpr 2*3 5 operator * 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.17 {GetLexeme procedure, lexeme is "$"} {    testexprparser {$wombat} -1} {- {} 0 subexpr {$wombat} 2 variable {$wombat} 1 text wombat 0 {}}test parseExpr-16.18 "GetLexeme procedure, lexeme is '\"'" {    testexprparser {"fred"} -1} {- {} 0 subexpr {"fred"} 1 text fred 0 {}}test parseExpr-16.19 {GetLexeme procedure, lexeme is ","} {    testexprparser {foo(1,2)} -1} {- {} 0 subexpr foo(1,2) 5 operator foo 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.20 {GetLexeme procedure, lexeme is "*"} {    testexprparser {$a*$b} -1} {- {} 0 subexpr {$a*$b} 7 operator * 0 subexpr {$a} 2 variable {$a} 1 text a 0 subexpr {$b} 2 variable {$b} 1 text b 0 {}}test parseExpr-16.21 {GetLexeme procedure, lexeme is "/"} {    testexprparser {5/6} -1} {- {} 0 subexpr 5/6 5 operator / 0 subexpr 5 1 text 5 0 subexpr 6 1 text 6 0 {}}test parseExpr-16.22 {GetLexeme procedure, lexeme is "%"} {    testexprparser {5%[xxx]} -1} {- {} 0 subexpr {5%[xxx]} 5 operator % 0 subexpr 5 1 text 5 0 subexpr {[xxx]} 1 command {[xxx]} 0 {}}test parseExpr-16.23 {GetLexeme procedure, lexeme is "+"} {    testexprparser {1+2} -1} {- {} 0 subexpr 1+2 5 operator + 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.24 {GetLexeme procedure, lexeme is "-"} {    testexprparser {.12-0e27} -1} {- {} 0 subexpr .12-0e27 5 operator - 0 subexpr .12 1 text .12 0 subexpr 0e27 1 text 0e27 0 {}}test parseExpr-16.25 {GetLexeme procedure, lexeme is "?" or ":"} {    testexprparser {$b? 1 : 0} -1} {- {} 0 subexpr {$b? 1 : 0} 8 operator ? 0 subexpr {$b} 2 variable {$b} 1 text b 0 subexpr 1 1 text 1 0 subexpr 0 1 text 0 0 {}}test parseExpr-16.26 {GetLexeme procedure, lexeme is "<"} {    testexprparser {2<3} -1} {- {} 0 subexpr 2<3 5 operator < 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.27 {GetLexeme procedure, lexeme is "<<"} {    testexprparser {2<<3} -1} {- {} 0 subexpr 2<<3 5 operator << 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.28 {GetLexeme procedure, lexeme is "<="} {    testexprparser {2<=3} -1} {- {} 0 subexpr 2<=3 5 operator <= 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.29 {GetLexeme procedure, lexeme is ">"} {    testexprparser {2>3} -1} {- {} 0 subexpr 2>3 5 operator > 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.30 {GetLexeme procedure, lexeme is ">>"} {    testexprparser {2>>3} -1} {- {} 0 subexpr 2>>3 5 operator >> 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.31 {GetLexeme procedure, lexeme is ">="} {    testexprparser {2>=3} -1} {- {} 0 subexpr 2>=3 5 operator >= 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.32 {GetLexeme procedure, lexeme is "=="} {    testexprparser {2==3} -1} {- {} 0 subexpr 2==3 5 operator == 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.33 {GetLexeme procedure, bad lexeme starting with "="} {    list [catch {testexprparser {2=+3} -1} msg] $msg} {1 {syntax error in expression "2=+3": extra tokens at end of expression}}test parseExpr-16.34 {GetLexeme procedure, lexeme is "!="} {    testexprparser {2!=3} -1} {- {} 0 subexpr 2!=3 5 operator != 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.35 {GetLexeme procedure, lexeme is "!"} {    testexprparser {!2} -1} {- {} 0 subexpr !2 3 operator ! 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.36 {GetLexeme procedure, lexeme is "&&"} {    testexprparser {2&&3} -1} {- {} 0 subexpr 2&&3 5 operator && 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.37 {GetLexeme procedure, lexeme is "&"} {    testexprparser {1&2} -1} {- {} 0 subexpr 1&2 5 operator & 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.38 {GetLexeme procedure, lexeme is "^"} {    testexprparser {1^2} -1} {- {} 0 subexpr 1^2 5 operator ^ 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.39 {GetLexeme procedure, lexeme is "||"} {    testexprparser {2||3} -1} {- {} 0 subexpr 2||3 5 operator || 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.40 {GetLexeme procedure, lexeme is "|"} {    testexprparser {1|2} -1} {- {} 0 subexpr 1|2 5 operator | 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.41 {GetLexeme procedure, lexeme is "~"} {    testexprparser {~2} -1} {- {} 0 subexpr ~2 3 operator ~ 0 subexpr 2 1 text 2 0 {}}test parseExpr-16.42 {GetLexeme procedure, lexeme is func name} {    testexprparser {george()} -1} {- {} 0 subexpr george() 1 operator george 0 {}}test parseExpr-16.43 {GetLexeme procedure, lexeme is func name} {    testexprparser {harmonic_ratio(2,3)} -1} {- {} 0 subexpr harmonic_ratio(2,3) 5 operator harmonic_ratio 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-16.44 {GetLexeme procedure, unknown lexeme} {    list [catch {testexprparser {@27} -1} msg] $msg} {1 {syntax error in expression "@27": character not legal in expressions}}test parseExpr-17.1 {PrependSubExprTokens procedure, expand token array} {    testexprparser {[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]} -1} {- {} 0 subexpr {[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]} 13 operator && 0 subexpr {[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]} 9 operator && 0 subexpr {[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]} 5 operator && 0 subexpr {[string compare [format %c $i] [string index $a $i]]} 1 command {[string compare [format %c $i] [string index $a $i]]} 0 subexpr {[string compare [format %c $i] [string index $a $i]]} 1 command {[string compare [format %c $i] [string index $a $i]]} 0 subexpr {[string compare [format %c $i] [string index $a $i]]} 1 command {[string compare [format %c $i] [string index $a $i]]} 0 subexpr {[string compare [format %c $i] [string index $a $i]]} 1 command {[string compare [format %c $i] [string index $a $i]]} 0 {}}test parseExpr-18.1 {LogSyntaxError procedure, error in expr longer than 60 chars} {    list [catch {testexprparser {(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)/} -1} msg] $msg} {1 {syntax error in expression "(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+0123456)*(+012...": premature end of expression}}test parseExpr-19.1 {TclParseInteger: [Bug 648441]} {    # Should see this as integer "0" followed by incomplete function "x"    # Thus, syntax error.    # If Bug 648441 is not fixed, "0x" will be seen as floating point 0.0    list [catch {expr 0x} result] $result} [list 1 {syntax error in expression "0x": extra tokens at end of expression}]# cleanup::tcltest::cleanupTestsreturn

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?