parseexpr.test
来自「tcl是工具命令语言」· TEST 代码 · 共 654 行 · 第 1/3 页
TEST
654 行
} {- {} 0 subexpr {1<<2 < 3} 9 operator < 0 subexpr 1<<2 5 operator << 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-9.2 {ParseRelationalExpr procedure, error in LHS shift subexpr} { list [catch {testexprparser {1>=foo < 3} -1} msg] $msg} {1 {syntax error in expression "1>=foo < 3": variable references require preceding $}}test parseExpr-9.3 {ParseRelationalExpr procedure, next lexeme isn't relational op} { testexprparser {1<<2? 1 : 0} -1} {- {} 0 subexpr {1<<2? 1 : 0} 11 operator ? 0 subexpr 1<<2 5 operator << 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 1 1 text 1 0 subexpr 0 1 text 0 0 {}}test parseExpr-9.4 {ParseRelationalExpr procedure, next lexeme is relational op} { testexprparser {1<<2 < 3} -1} {- {} 0 subexpr {1<<2 < 3} 9 operator < 0 subexpr 1<<2 5 operator << 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-9.5 {ParseRelationalExpr procedure, next lexeme is relational op} { testexprparser {1>>2 > 3} -1} {- {} 0 subexpr {1>>2 > 3} 9 operator > 0 subexpr 1>>2 5 operator >> 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-9.6 {ParseRelationalExpr procedure, next lexeme is relational op} { testexprparser {1<<2 <= 3} -1} {- {} 0 subexpr {1<<2 <= 3} 9 operator <= 0 subexpr 1<<2 5 operator << 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-9.7 {ParseRelationalExpr procedure, next lexeme is relational op} { testexprparser {1<<2 >= 3} -1} {- {} 0 subexpr {1<<2 >= 3} 9 operator >= 0 subexpr 1<<2 5 operator << 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-9.8 {ParseRelationalExpr procedure, bad lexeme after relational op} {wideIntegerUnparsed} { list [catch {testexprparser {1<<2 < 12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-9.9 {ParseRelationalExpr procedure, valid RHS subexpression} { testexprparser {1<<2 < 3 < 4} -1} {- {} 0 subexpr {1<<2 < 3 < 4} 13 operator < 0 subexpr {1<<2 < 3} 9 operator < 0 subexpr 1<<2 5 operator << 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 subexpr 4 1 text 4 0 {}}test parseExpr-9.10 {ParseRelationalExpr procedure, error in RHS subexpression} { list [catch {testexprparser {1<<2 < 3 > martha} -1} msg] $msg} {1 {syntax error in expression "1<<2 < 3 > martha": variable references require preceding $}}test parseExpr-10.1 {ParseShiftExpr procedure, valid LHS add subexpr} { testexprparser {1+2 << 3} -1} {- {} 0 subexpr {1+2 << 3} 9 operator << 0 subexpr 1+2 5 operator + 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-10.2 {ParseShiftExpr procedure, error in LHS add subexpr} { list [catch {testexprparser {1-foo << 3} -1} msg] $msg} {1 {syntax error in expression "1-foo << 3": variable references require preceding $}}test parseExpr-10.3 {ParseShiftExpr procedure, next lexeme isn't "<<" or ">>"} { testexprparser {1+2? 1 : 0} -1} {- {} 0 subexpr {1+2? 1 : 0} 11 operator ? 0 subexpr 1+2 5 operator + 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 1 1 text 1 0 subexpr 0 1 text 0 0 {}}test parseExpr-10.4 {ParseShiftExpr procedure, next lexeme is "<<" or ">>"} { testexprparser {1+2 << 3} -1} {- {} 0 subexpr {1+2 << 3} 9 operator << 0 subexpr 1+2 5 operator + 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-10.5 {ParseShiftExpr procedure, next lexeme is "<<" or ">>"} { testexprparser {1+2 >> 3} -1} {- {} 0 subexpr {1+2 >> 3} 9 operator >> 0 subexpr 1+2 5 operator + 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-10.6 {ParseShiftExpr procedure, bad lexeme after "<<" or ">>"} {wideIntegerUnparsed} { list [catch {testexprparser {1+2 << 12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-10.7 {ParseShiftExpr procedure, valid RHS subexpression} { testexprparser {1+2 << 3 << 4} -1} {- {} 0 subexpr {1+2 << 3 << 4} 13 operator << 0 subexpr {1+2 << 3} 9 operator << 0 subexpr 1+2 5 operator + 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 subexpr 4 1 text 4 0 {}}test parseExpr-10.8 {ParseShiftExpr procedure, error in RHS subexpression} { list [catch {testexprparser {1+2 << 3 >> martha} -1} msg] $msg} {1 {syntax error in expression "1+2 << 3 >> martha": variable references require preceding $}}test parseExpr-11.1 {ParseAddExpr procedure, valid LHS multiply subexpr} { testexprparser {1*2 + 3} -1} {- {} 0 subexpr {1*2 + 3} 9 operator + 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-11.2 {ParseAddExpr procedure, error in LHS multiply subexpr} { list [catch {testexprparser {1/foo + 3} -1} msg] $msg} {1 {syntax error in expression "1/foo + 3": variable references require preceding $}}test parseExpr-11.3 {ParseAddExpr procedure, next lexeme isn't "+" or "-"} { testexprparser {1*2? 1 : 0} -1} {- {} 0 subexpr {1*2? 1 : 0} 11 operator ? 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 1 1 text 1 0 subexpr 0 1 text 0 0 {}}test parseExpr-11.4 {ParseAddExpr procedure, next lexeme is "+" or "-"} { testexprparser {1*2 + 3} -1} {- {} 0 subexpr {1*2 + 3} 9 operator + 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-11.5 {ParseAddExpr procedure, next lexeme is "+" or "-"} { testexprparser {1*2 - 3} -1} {- {} 0 subexpr {1*2 - 3} 9 operator - 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-11.6 {ParseAddExpr procedure, bad lexeme after "+" or "-"} {wideIntegerUnparsed} { list [catch {testexprparser {1*2 + 12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-11.7 {ParseAddExpr procedure, valid RHS subexpression} { testexprparser {1*2 + 3 + 4} -1} {- {} 0 subexpr {1*2 + 3 + 4} 13 operator + 0 subexpr {1*2 + 3} 9 operator + 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 subexpr 4 1 text 4 0 {}}test parseExpr-11.8 {ParseAddExpr procedure, error in RHS subexpression} { list [catch {testexprparser {1*2 + 3 - martha} -1} msg] $msg} {1 {syntax error in expression "1*2 + 3 - martha": variable references require preceding $}}test parseExpr-12.1 {ParseAddExpr procedure, valid LHS multiply subexpr} { testexprparser {1*2 + 3} -1} {- {} 0 subexpr {1*2 + 3} 9 operator + 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-12.2 {ParseAddExpr procedure, error in LHS multiply subexpr} { list [catch {testexprparser {1/foo + 3} -1} msg] $msg} {1 {syntax error in expression "1/foo + 3": variable references require preceding $}}test parseExpr-12.3 {ParseAddExpr procedure, next lexeme isn't "+" or "-"} { testexprparser {1*2? 1 : 0} -1} {- {} 0 subexpr {1*2? 1 : 0} 11 operator ? 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 1 1 text 1 0 subexpr 0 1 text 0 0 {}}test parseExpr-12.4 {ParseAddExpr procedure, next lexeme is "+" or "-"} { testexprparser {1*2 + 3} -1} {- {} 0 subexpr {1*2 + 3} 9 operator + 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-12.5 {ParseAddExpr procedure, next lexeme is "+" or "-"} { testexprparser {1*2 - 3} -1} {- {} 0 subexpr {1*2 - 3} 9 operator - 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-12.6 {ParseAddExpr procedure, bad lexeme after "+" or "-"} {wideIntegerUnparsed} { list [catch {testexprparser {1*2 + 12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-12.7 {ParseAddExpr procedure, valid RHS subexpression} { testexprparser {1*2 + 3 + 4} -1} {- {} 0 subexpr {1*2 + 3 + 4} 13 operator + 0 subexpr {1*2 + 3} 9 operator + 0 subexpr 1*2 5 operator * 0 subexpr 1 1 text 1 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 subexpr 4 1 text 4 0 {}}test parseExpr-12.8 {ParseAddExpr procedure, error in RHS subexpression} { list [catch {testexprparser {1*2 + 3 - martha} -1} msg] $msg} {1 {syntax error in expression "1*2 + 3 - martha": variable references require preceding $}}test parseExpr-13.1 {ParseMultiplyExpr procedure, valid LHS unary subexpr} { testexprparser {+2 * 3} -1} {- {} 0 subexpr {+2 * 3} 7 operator * 0 subexpr +2 3 operator + 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 {}}test parseExpr-13.2 {ParseMultiplyExpr procedure, error in LHS unary subexpr} {wideIntegerUnparsed} { list [catch {testexprparser {-12345678901234567890 * 3} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-13.3 {ParseMultiplyExpr procedure, next lexeme isn't "*", "/", or "%"} { testexprparser {+2? 1 : 0} -1} {- {} 0 subexpr {+2? 1 : 0} 9 operator ? 0 subexpr +2 3 operator + 0 subexpr 2 1 text 2 0 subexpr 1 1 text 1 0 subexpr 0 1 text 0 0 {}}test parseExpr-13.4 {ParseMultiplyExpr procedure, next lexeme is "*", "/", or "%"} { testexprparser {-123 * 3} -1} {- {} 0 subexpr {-123 * 3} 7 operator * 0 subexpr -123 3 operator - 0 subexpr 123 1 text 123 0 subexpr 3 1 text 3 0 {}}test parseExpr-13.5 {ParseMultiplyExpr procedure, next lexeme is "*", "/", or "%"} { testexprparser {+-456 / 3} -1} {- {} 0 subexpr {+-456 / 3} 9 operator / 0 subexpr +-456 5 operator + 0 subexpr -456 3 operator - 0 subexpr 456 1 text 456 0 subexpr 3 1 text 3 0 {}}test parseExpr-13.6 {ParseMultiplyExpr procedure, next lexeme is "*", "/", or "%"} { testexprparser {+-456 % 3} -1} {- {} 0 subexpr {+-456 % 3} 9 operator % 0 subexpr +-456 5 operator + 0 subexpr -456 3 operator - 0 subexpr 456 1 text 456 0 subexpr 3 1 text 3 0 {}}test parseExpr-13.7 {ParseMultiplyExpr procedure, bad lexeme after "*", "/", or "%"} {wideIntegerUnparsed} { list [catch {testexprparser {--++5 / 12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-13.8 {ParseMultiplyExpr procedure, valid RHS subexpression} { testexprparser {-2 / 3 % 4} -1} {- {} 0 subexpr {-2 / 3 % 4} 11 operator % 0 subexpr {-2 / 3} 7 operator / 0 subexpr -2 3 operator - 0 subexpr 2 1 text 2 0 subexpr 3 1 text 3 0 subexpr 4 1 text 4 0 {}}test parseExpr-13.9 {ParseMultiplyExpr procedure, error in RHS subexpression} { list [catch {testexprparser {++2 / 3 * martha} -1} msg] $msg} {1 {syntax error in expression "++2 / 3 * martha": variable references require preceding $}}test parseExpr-14.1 {ParseUnaryExpr procedure, first token is unary operator} { testexprparser {+2} -1} {- {} 0 subexpr +2 3 operator + 0 subexpr 2 1 text 2 0 {}}test parseExpr-14.2 {ParseUnaryExpr procedure, first token is unary operator} { testexprparser {-2} -1} {- {} 0 subexpr -2 3 operator - 0 subexpr 2 1 text 2 0 {}}test parseExpr-14.3 {ParseUnaryExpr procedure, first token is unary operator} { testexprparser {~2} -1} {- {} 0 subexpr ~2 3 operator ~ 0 subexpr 2 1 text 2 0 {}}test parseExpr-14.4 {ParseUnaryExpr procedure, first token is unary operator} { testexprparser {!2} -1} {- {} 0 subexpr !2 3 operator ! 0 subexpr 2 1 text 2 0 {}}test parseExpr-14.5 {ParseUnaryExpr procedure, error in lexeme after unary op} {wideIntegerUnparsed} { list [catch {testexprparser {-12345678901234567890} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-14.6 {ParseUnaryExpr procedure, simple unary expr after unary op} { testexprparser {+"1234"} -1} {- {} 0 subexpr +\"1234\" 3 operator + 0 subexpr {"1234"} 1 text 1234 0 {}}test parseExpr-14.7 {ParseUnaryExpr procedure, another unary expr after unary op} { testexprparser {~!{fred}} -1} {- {} 0 subexpr ~!{fred} 5 operator ~ 0 subexpr !{fred} 3 operator ! 0 subexpr {{fred}} 1 text fred 0 {}}test parseExpr-14.8 {ParseUnaryExpr procedure, error in unary expr after unary op} { list [catch {testexprparser {+-||27} -1} msg] $msg} {1 {syntax error in expression "+-||27": unexpected operator ||}}test parseExpr-14.9 {ParseUnaryExpr procedure, error in unary expr after unary op} { list [catch {testexprparser {+-||27} -1} msg] $msg} {1 {syntax error in expression "+-||27": unexpected operator ||}}test parseExpr-14.10 {ParseUnaryExpr procedure, first token is not unary op} { testexprparser {123} -1} {- {} 0 subexpr 123 1 text 123 0 {}}test parseExpr-14.11 {ParseUnaryExpr procedure, not unary expr, complex primary expr} { 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-14.12 {ParseUnaryExpr procedure, not unary expr, error in primary expr} {wideIntegerUnparsed} { list [catch {testexprparser {(12345678901234567890)} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-15.1 {ParsePrimaryExpr procedure, just parenthesized subexpr} { testexprparser {({abc}/{def})} -1} {- {} 0 subexpr {{abc}/{def}} 5 operator / 0 subexpr {{abc}} 1 text abc 0 subexpr {{def}} 1 text def 0 {}}test parseExpr-15.2 {ParsePrimaryExpr procedure, bad lexeme after "("} {wideIntegerUnparsed} { list [catch {testexprparser {(12345678901234567890)} -1} msg] $msg} {1 {integer value too large to represent}}test parseExpr-15.3 {ParsePrimaryExpr procedure, valid parenthesized subexpr} { testexprparser {({abc}? 2*4 : -6)} -1} {- {} 0 subexpr {{abc}? 2*4 : -6} 13 operator ? 0 subexpr {{abc}} 1 text abc 0 subexpr 2*4 5 operator * 0 subexpr 2 1 text 2 0 subexpr 4 1 text 4 0 subexpr -6 3 operator - 0 subexpr 6 1 text 6 0 {}}test parseExpr-15.4 {ParsePrimaryExpr procedure, error in parenthesized subexpr} { list [catch {testexprparser {(? 123 : 456)} -1} msg] $msg} {1 {syntax error in expression "(? 123 : 456)": unexpected ternary 'then' separator}}test parseExpr-15.5 {ParsePrimaryExpr procedure, missing ")" after in parenthesized subexpr} { list [catch {testexprparser {({abc}/{def}} -1} msg] $msg} {1 {syntax error in expression "({abc}/{def}": looking for close parenthesis}}test parseExpr-15.6 {ParsePrimaryExpr procedure, primary is literal} { testexprparser {12345} -1} {- {} 0 subexpr 12345 1 text 12345 0 {}}test parseExpr-15.7 {ParsePrimaryExpr procedure, primary is literal} { testexprparser {12345.6789} -1} {- {} 0 subexpr 12345.6789 1 text 12345.6789 0 {}}test parseExpr-15.8 {ParsePrimaryExpr procedure, primary is var reference} { testexprparser {$a} -1} {- {} 0 subexpr {$a} 2 variable {$a} 1 text a 0 {}}test parseExpr-15.9 {ParsePrimaryExpr procedure, primary is var reference} { testexprparser {$a(hello$there)} -1} {- {} 0 subexpr {$a(hello$there)} 5 variable {$a(hello$there)} 4 text a 0 text hello 0 variable {$there} 1 text there 0 {}}test parseExpr-15.10 {ParsePrimaryExpr procedure, primary is var reference} { testexprparser {$a()} -1} {- {} 0 subexpr {$a()} 3 variable {$a()} 2 text a 0 text {} 0 {}}test parseExpr-15.11 {ParsePrimaryExpr procedure, error in var reference} { list [catch {testexprparser {$a(} -1} msg] $msg} {1 {missing )}}test parseExpr-15.12 {ParsePrimaryExpr procedure, primary is quoted string} { testexprparser {"abc $xyz def"} -1} {- {} 0 subexpr {"abc $xyz def"} 5 word {"abc $xyz def"} 4 text {abc } 0 variable {$xyz} 1 text xyz 0 text { def} 0 {}}test parseExpr-15.13 {ParsePrimaryExpr procedure, error in quoted string} { list [catch {testexprparser {"$a(12"} -1} msg] $msg} {1 {missing )}}test parseExpr-15.14 {ParsePrimaryExpr procedure, quoted string has multiple tokens} { testexprparser {"abc [xyz] $def"} -1} {- {} 0 subexpr {"abc [xyz] $def"} 6 word {"abc [xyz] $def"} 5 text {abc } 0 command {[xyz]} 0 text { } 0 variable {$def} 1 text def 0 {}}test parseExpr-15.15 {ParsePrimaryExpr procedure, primary is command} { testexprparser {[def]} -1} {- {} 0 subexpr {[def]} 1 command {[def]} 0 {}}test parseExpr-15.16 {ParsePrimaryExpr procedure, primary is multiple commands} { testexprparser {[one; two; three; four;]} -1} {- {} 0 subexpr {[one; two; three; four;]} 1 command {[one; two; three; four;]} 0 {}}test parseExpr-15.17 {ParsePrimaryExpr procedure, primary is multiple commands} {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?