Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend comment syntax in Khiops dictionaries #496

Closed
marcboulle opened this issue Dec 17, 2024 · 0 comments · Fixed by #503
Closed

Extend comment syntax in Khiops dictionaries #496

marcboulle opened this issue Dec 17, 2024 · 0 comments · Fixed by #503
Assignees
Labels
Size/Days Some days of work Type/Enhancement New feature or request

Comments

@marcboulle
Copy link
Collaborator

marcboulle commented Dec 17, 2024

Description

Extension de la gestion des commentaires dans les dictionnaires Khiops

Contexte: gestion des commentaires dans la version actuelle (V10)

  • les commentaires sont préfixés par '//'
  • on peut mettre des commentaires a peu près partout
  • pour chaque groupe de lignes de commentaire, on ne conserve que la première ligne de commentaire, les autres sont ignorées
  • on garde les commentaires suivants, attachés aux entités du langage
    • dictionnaire: commentaire précédent le début de déclaration du dictionnaire
    • variable: commentaire de fin de déclaration d'une variable
  • tous les autres commentaire sont tolérés, mais simplement ignorés
    • n'étant rattaché à aucune entité du langage, ils ne sont pas gérés
    • quand on ré-écrit un dictionnaire, ils ont disparus

Besoins d'extension:

  • pour une ligne de déclaration de variable trop longue, on préfère parfois mettre un commentaire avant la déclaration d'une variable
  • besoins potentiels de commentaires multi-lignes
  • besoin de commenter tout ou partie d'un dictionnaire, sans perdre les spécifications après lecture/écriture d'un fichier dictionnaire

Analyse du besoin

Problèmes à résoudre

  • on ne devrait pas prendre en compte le caractère fin de ligne '\n' comme un jeton du langage
  • chaque commentaire doit être rattaché à une entité du langage (dictionnaire ou variable)
    • c'est le cas quand on programme un dictionnaire depuis pykhiops depuis python plutôt que depuis un éditeur de texte
  • dans la partie textuelle, comment savoir si un commentaire est rattaché à la variable suivante ou à la variable suivante?
  • faible intérêt si rapport coût/bénéfice peu favorable

Piste de solution

  • un test rapide avec l'analyseur lexical (KWClex.lex) a montré que l'on pouvait facilement distinguer les commentaires lignes
    • ^[ \t\n\f\r\v]*\/\/ pour un commentaire ligne n'ayant que des espaces entre le début de ligne et le début de commentaire
    • \/\/ pour un commentaire précédé d'autres jetons lexicaux
  • on peut donc distinguer deux type de commentaires, sans explicitement utiliser '\n' comme un jeton du langage

Spécification

A chaque entité d'un langage, on associe:

  • un libellé court
    • label actuel dans pykhiops, pour les entités Dictionary, Variable et VariableBlock
    • dans un fichier kdic, en fin de déclaration, sur la même ligne
    • dans la GUI: champ Label dans la liste des caractéristique d'un dictionnaire, obtenus via "Inspect dictionary"
  • un commentaire multi-lignes
    • comments à ajouter dans pykhiops, pour les entités ayant déjà un label
      • commentaire multi-lignes
    • dans un fichier kdic, liste des commentaire lignes précédent une déclaration d'entité
      • les commentaires parsés sont trimés (comme les labels)
      • on peut ainsi avoir plusieurs lignes devant une variable, ou devant un dictionnaire
      • mais les lignes blanches restent ignorées
      • quand on ré-écrit un dictionnaire, on écrit les commentaires lignes
        • en tout début de ligne pour les commentaires associés au Dictionary
        • au niveau de la déclaration de type pour les commentaire de Variable ou VariableBlock
    • dans la GUI, on ne voit pas les commentaires

Compatibilité ascendante

  • le label d'un dictionnaire (actuellement avant la déclaration) devient un comments
  • cela ne semble pas grave

Avantages

  • extension significative avec des commentaires multi-lignes
  • faible coût de développement
  • on peut faire une documentation plus pédagogique, compatible avec le parser de kdic
  • on garde l'essentiel des commentaires, auparavant ignorés
  • on peut commenter plusieurs variables
    • effet de bord: leur commentaire sera associé à la variable suivante (pas grave)
    • seul problème: si on commente les dernières variables d'un dictionnaire, elles seront perdues, car il n'y pas de variable suivante
    • introduire un champ de type end_comments, internal_comments, private_comments associé au Dictionary, pour la fin des déclarations: préférence (pour pykhiops) pour la terminologie internal_comments

Context

  • Khiops version: V11
@marcboulle marcboulle added Size/Days Some days of work Type/Enhancement New feature or request labels Dec 17, 2024
@marcboulle marcboulle self-assigned this Dec 17, 2024
@marcboulle marcboulle linked a pull request Dec 20, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Size/Days Some days of work Type/Enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant