2017-07-11 2 views
1

J'ai hérité du code VFP qui a une instruction IF Endif où le endif est codé ENDIF- * 9 Pour une raison quelconque, cela dépasse le compilateur et ne génère aucune erreur d'exécution. Quelqu'un sait pourquoi cela fonctionne?Pourquoi le code VFP ENDIF- * 9 fonctionne

Répondre

1

Il n'est pas spécifique à ENDIF. Ça marcherait aussi pour endfor, enddo, endscan ... Je pense que VFP se soucie seulement de voir le mot "endif" et rejette le reste comme commentaire.

+0

cela semble être vrai, mais si vous mettez un autre caractère en place ou devant le "-", il générera une erreur de compilation. Alors, cela a-t-il une signification particulière pour VFP? – david

+0

Je voulais dire que n'importe quel caractère agit comme un séparateur pour "mot". Il suffit donc de voir "endif" comme un "mot". Toute lettre, trait de soulignement ou chiffre en ferait un "mot" différent et donc une erreur de syntaxe. Ces caractères sont ceux utilisés pour les noms dans VFP. –

1

De l'aide pour WHILE ... ENDDO:

Comments can be placed after DO WHILE and ENDDO on the same line. The comments are ignored during program compilation and execution. 

Je connais cela et toujours pensé que ce fut le cas. Dans votre exemple, cependant, vous ne laissez aucun espace entre la fin du mot-clé et le début du texte «supplémentaire». Ma conjecture serait que le lexer dans VFP reconnaît - (et j'ai testé + ainsi) comme un terminateur pour le ENDIF (ou ENDDO, etc) et traite le reste de la ligne comme un commentaire. Si vous avez juste des choses supplémentaires immédiatement après ENDIF (comme ENDIFblah), VFP ne reconnaît pas le mot-clé et le traite comme indésirable, ce qui entraîne une erreur de syntaxe.