在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 3479|回复: 3

[原创] 请问各位大神,有没有可以方便地检查TCL脚本的语法的工具?

[复制链接]
发表于 2017-3-27 10:23:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本人做TCL的脚本,经常需要花很多时间检查语法的Bug,很浪费时间,用什么工具可以检查TCL语法?或者什么方法可以方便的查处错误。
自己平时做都是一行一行地puts。
发表于 2017-5-3 13:08:44 | 显示全部楼层
用TCLpro debug
回复 支持 反对

使用道具 举报

发表于 2019-11-7 11:07:34 | 显示全部楼层
同问,楼主作为过来人能指点一下吗
回复 支持 反对

使用道具 举报

发表于 2025-8-2 16:27:35 | 显示全部楼层
国产 TclOK 工具可以完成这类检查。比如检查最近流行的 贪吃蛇脚本


   

        

                
  1. TclOK(TM) Script Checker
  2. Copyright(c) 2025, Challensys, Ltd. All rights reserved.

  3. Version:     v2025.06-Alpha3, build 2025/07/23
  4. Date:        2025/08/02 16:23:07 / PID 5223
  5. Host:        wenhengdeMacBook-Air.local / 8 Threads
  6. Launch:      tclok -v snake.tcl -log tclok.log
  7. Feedback:    support@challensys.com

  8. Info: checked out license 'FusionShell-Lint'. (LIC-CO)

  9. checking: set ::grid_size 20
  10. checking: set ::cell_size 10
  11. checking: set ::snake { {5 5} {5 6} {5 7} }
  12. checking: expr int(rand()*15)
  13. ( expr ): { int(rand()*15) }
  14. ( expr ): <internal> ::tcl::mathop::* 0.5162100800708124 15
  15. ( expr ): <internal> ::tcl::mathfunc::int 7.743151201062186
  16. ( expr ): <internal> return 7
  17. checking: expr int(rand()*15)
  18. ( expr ): { int(rand()*15) }
  19. ( expr ): <internal> ::tcl::mathop::* 0.7671742836157501 15
  20. ( expr ): <internal> ::tcl::mathfunc::int 11.507614254236252
  21. ( expr ): <internal> return 11
  22. checking: list 7 11
  23. checking: set ::food {7 11}
  24. checking: set ::direction RIGHT
  25. checking: set ::game_over 0
  26. checking: catch {delete_obj [get_db gui_shapes]}
  27. checking: get_db gui_shapes
  28. <info> line 8: calling unknown command 'get_db', returning result will be unknown.
  29. checking: delete_obj ...
  30. <info> line 8: calling unknown command 'delete_obj', returning result will be unknown.
  31. checking: catch {delete_obj [get_db gui_texts]}
  32. checking: get_db gui_texts
  33. checking: delete_obj ...
  34. checking: proc create_game_area {} ...
  35. checking: proc delete_game_element name ...
  36. checking: proc create_snake_segment {x y} ...
  37. checking: proc create_food {x y} ...
  38. checking: proc move_snake {} ...
  39. checking: proc check_collision pos ...
  40. checking: proc key_control key ...
  41. checking: bindKey Up {key_control Up}
  42. <info> line 116: calling unknown command 'bindKey', returning result will be unknown.
  43. checking: bindKey Down {key_control Down}
  44. checking: bindKey Left {key_control Left}
  45. checking: bindKey Right {key_control Right}
  46. checking: create_game_area
  47. in_proc: expr 20 * 10
  48. ( expr ): { 20 * 10 }
  49. ( expr ): <internal> return 200
  50. in_proc: list 0 0 200
  51. in_proc: expr 20 * 10
  52. ( expr ): { 20 * 10 }
  53. ( expr ): <internal> return 200
  54. in_proc: create_gui_shape -name boundary -layer M1 -rect {0 0 200} 200\]
  55. <info> line 15: calling unknown command 'create_gui_shape', returning result will be unknown.
  56. in_proc: foreach segment { {5 5} {5 6} {5 7} } ...
  57. in_proc: lassign {5 5} x y
  58. in_proc: create_snake_segment 5 5
  59. in_proc: expr 5 * 10
  60. ( expr ): { 5 * 10 }
  61. ( expr ): <internal> return 50
  62. in_proc: set x1 50
  63. in_proc: expr 5 * 10
  64. ( expr ): { 5 * 10 }
  65. ( expr ): <internal> return 50
  66. in_proc: set y1 50
  67. in_proc: expr 50 + 10 - 1
  68. ( expr ): { 50 + 10 - 1 }
  69. ( expr ): <internal> ::tcl::mathop::- 60 1
  70. ( expr ): <internal> return 59
  71. in_proc: set x2 59
  72. in_proc: expr 50 + 10 - 1
  73. ( expr ): { 50 + 10 - 1 }
  74. ( expr ): <internal> ::tcl::mathop::- 60 1
  75. ( expr ): <internal> return 59
  76. in_proc: set y2 59
  77. in_proc: list 50 50 59 59
  78. in_proc: create_gui_shape -name snake_5_5 -layer M2 -rect {50 50 59 59}
  79. <info> line 34: result of command call is 'UNKNOWN_returned_by_[create_gui_shape ...]', breaking foreach loop...
  80. in_proc: lindex {7 11} 0
  81. in_proc: lindex {7 11} 1
  82. in_proc: create_food 7 11
  83. in_proc: expr 7 * 10
  84. ( expr ): { 7 * 10 }
  85. ( expr ): <internal> return 70
  86. in_proc: set x1 70
  87. in_proc: expr 11 * 10
  88. ( expr ): { 11 * 10 }
  89. ( expr ): <internal> return 110
  90. in_proc: set y1 110
  91. in_proc: expr 70 + 10 - 1
  92. ( expr ): { 70 + 10 - 1 }
  93. ( expr ): <internal> ::tcl::mathop::- 80 1
  94. ( expr ): <internal> return 79
  95. in_proc: set x2 79
  96. in_proc: expr 110 + 10 - 1
  97. ( expr ): { 110 + 10 - 1 }
  98. ( expr ): <internal> ::tcl::mathop::- 120 1
  99. ( expr ): <internal> return 119
  100. in_proc: set y2 119
  101. in_proc: list 70 110 79 119
  102. in_proc: create_gui_shape -name food -layer M3 -rect {70 110 79 119}
            

   

    复制代码



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

X

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-10 21:16 , Processed in 0.012833 second(s), 3 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表