J'ai développé du code et je suis confronté à un problème avec l'erreur d'erreur de l'interprète TCL sur une machine Linux.
#!/usr/bin/tclsh if {1} { puts "abc1" } elseif {} { puts "abc2" }
4 Réponses :
TCL ne trouve pas d'erreur au moment de la compilation et dans l'échantillon ci-dessus, il peut déterminer qu'il n'aura jamais besoin d'examiner les clauses Maintenant, dans le cas où il y a une première condition non triviale, c'est le cas que les erreurs dans l'expression elseif code> en premier lieu; Il est simplement question que le premier
met code> directement. p>
elseif code> ne sont pas rapportées tant qu'elles sont atteintes. C'est ainsi que la sémantique de TCL - et en particulier de la commande
si code> est définie; Les erreurs d'évaluation (par opposition à la syntaxe majeure brute) sont rapportées au moment de l'exécution de la commande. Je peux comprendre votre frustration avec cela, et vous suggérer de consulter le page wiki de TCLER sur des outils d'analyse de la syntaxe statique , qui peut signaler des problèmes potentiels pour vous (selon des hypothèses très modestes qui sont pratiquement toujours vraies). En particulier, j'ai entendu de bonnes choses sur frink et L'outil Checker dans TDK (ce dernier étant un outil commercial, mais de très haute qualité). P>
Nagelfar est une autre option pour un vérificateur de syntaxe TCL statique.
@schlenk: +1; J'aurais dû me souvenir de l'énumérer aussi.
Elaborer sur la réponse de Donal, TCL ne trouve pas d'erreur lors de la compilation de la compilation car, dans le cas général, il ne peut être effectué, aucun code exécuté avant que le SI aurait redéfini la commande Si elle pourrait être valide, le seul moyen de Déterminez si tel est le cas d'exécuter le code (c'est-à-dire que c'est le problème d'arrêt)
considérer ce script: p> Il est impossible de déterminer de manière statique si le Si {1} ligne a le bon nombre d'arguments sans exécuter le programme P> TCL n'a vraiment pratiquement aucune syntaxe, il n'y a rien de compilateur peut vérifier, le meilleur que vous puissiez faire est des avertissements de style de peluche, ce qui ne fera que être précis dans certains cas p> p>
TCL ne trouve pas d'erreur au moment de la compilation, mais nous pouvons vérifier la syntaxe en utilisant
Il existe un vérificateur de syntaxe statique TCL pouvant trouver de tels problèmes.
Voici la liste de tels contrôles: http. : //wiki.tcl.tk/3162 p>
Le ttclchecker http: // www.xdobry.de/ttclcheck
Produit le message d'erreur suivant pour ce script court p>
Une bonne syntaxe en surbrillance dans votre éditeur pourrait vous aider.
@schlenk comme ...?