Forum Programmation.autre Recherche une description BNF du C, C++, Python et autres, sous licence libre

Posté par  (site web personnel) . Licence CC By‑SA.
0
16
nov.
2013

J’aimerais pouvoir coder en espéranto, ou plus précisément dans des langages de programmation qui s’inspirent de sa grammaire régulière et puise leurs lexiques de l’espéranto. Comme à ma connaissance ça n’existe pas encore, j’ai décidé de m’y coller. Mais avant de créer un nouveau langage, je me suis dit qu’il serait intéressant de « traduire » des langages existants, histoire de me faire la main et en même temps de mieux dégager les idiomes que j’aimerais inclure et exclure dans ce projet de langage(s).

Pour ceux que ça intéresse (et ceux qui voudrait éventuellement contribuer) ça se passe sur la wikiversité.

Bref, du coups, je recherche des description BNF du C, C++, Python et autres, sous licence libre ainsi que des modèles de code utilisant tous les mots clés, pour pouvoir les mettre côte à côte avec leur « traduction ».

On trouve assez facilement des BNF, mais trouver quelque chose avec une licence libre clairement indiqué est plus difficile. Or c’est indispensable si je souhaite pouvoir inclure ça dans mon projet sur la Wikiversité où tout doit être sous licence libre.

  • # Doc officiel python ?

    Posté par  . Évalué à 1.

    La documentation officielle (1)de python semble être compatible GPL.

    http://docs.python.org/3/copyright.html

    Python and this documentation is:
    Copyright © 2001-2013 Python Software Foundation. All rights reserved.

    Et en suivant les liens on a un tableau qui explique les détails:

    Release     Derived from    Year    Owner   GPL compatible?
    2.2 and above   2.1.1   2001-now    PSF     yes
    
  • # OCaml ?

    Posté par  (site web personnel) . Évalué à 2.

    Sur le manuel tu trouveras disséminées des bouts de BNF, qui en les regroupant te donneront à peu près tout. Et d'ailleurs, grâce à camlp4 (le préprocesseur à base de grammaires d'OCaml) se serait facile de faire la translitération rigoureusement.

    Ça me rappelle un fois que j'avais tenté de faire ça à coup de Filter::Simple en perl, le résultat était assez rigolo, mais c'était pas très fiable car à coup de filtres utilisant des substitutions avec des regexps.

    Mais bon, je suis en fait assez sceptique sur l'intérêt réel de ces traductions, parce que si je comprends bien tu traduits les mots-clés, du coup c'est soit des mots « descriptifs », soit des verbes à l'impératif, donc au final la régularité de l'espéranto n'apporte ici pas grand chose (c'est pas comme si on faisait des vraies phrases). Je veux dire : en anglais le manque d'information grammaticale sur un mot et la compléxité de la langue sont gênantes pour la prose, mais en programmation la fonction grammaticale est en général évidente de toutes façon et ne s'apparente pas vraiment à celle d'un langage naturel. Quant-au vocabulaire il ne faut pas vraiment y penser comme si c'était de l'anglais, mais plutôt une poignée de mots magiques, parce que c'est de ça qu'il s'agit en vrai.

    Ce qui serait plus intéressant, et mettrait en lumière une vraie discrimination, ce serait de faire des traductions de documentation de librairies par exemple, parce que du coup là, pour bien comprendre ce que fait chaque fonction il faut comprendre l'anglais un minimum bien, et pour écrire soi-même une doc en anglais sans faire étalage d'une orthographe ridicule aussi, mais ce serait aussi beaucoup plus laborieux :)

    Ceci dit, si c'est juste pour s'amuser, dans les essais plus tordus, il y a Perligata, qui permet d'écrire du perl en latin, mais pour le coup toutes les structures s'écrivent à l'aide de mots latins, il n'y a plus d'accolades, dollars ou autres, car des mots ou déclinaisons latines sont utilisées pour les fonctions grammaticales, et les phrases se terminent par un point. Alors, c'est pas très utile, mais c'est rigolo, et un truc comme ça en espéranto serait, à défaut d'être utile, plus simple que la version latine, ça c'est sûr.

    • [^] # Re: OCaml ?

      Posté par  (site web personnel) . Évalué à 2.

      Merci, c'est très intéressant ce Perligata. En fait je ne souhaite pas spécialement m'orienter vers des ré-implémentations du C et compagnie en espéranto, je passe par cette démarche uniquement pour constater les "ah, mais en espéranto, on pourrait exprimer ça comme ceci ou comme cela, en respectant la grammaire de la langue (càd lisible par tout à chacun) tout en gardant quelque chose d'au moins aussi simple en terme d'analyse syntaxique (càd dont la syntaxe est bien adapté à un traitement dans une chaîne de compilation)". Aussi au passage je peux collecter le vocabulaire utile.

      • [^] # Re: OCaml ?

        Posté par  (site web personnel) . Évalué à 1.

        tout en gardant quelque chose d'au moins aussi simple en terme d'analyse syntaxique (càd dont la syntaxe est bien adapté à un traitement dans une chaîne de compilation)"

        Pour perl ça pourrait pas être beaucoup plus compliqué que maintenant, où l'analyseur lexical triche pour faire avaler une grammaire contextuelle (et dont l'analyse est indécidable) à un analyseur LALR ;)

        Mais sinon c'est vrai que mettre à profit les terminaisons régulières comme les pluriels en -jen analogie avec les @ de perls (ou -aro), ordonner les phrases comme on veut grâce à l'accusatif ou d'autres choses en ce genre est assez intéressant d'un point de vue linguistique, et pourrait au moins peut-être servir de base à un DSL utile.

  • # Plutôt allers vers du "xTalk"

    Posté par  (site web personnel) . Évalué à 2.

    Ces langages essaient de se rapprocher de phrases "naturelles" avec des mots courants du langage, même si elles ont une grammaire bien plus stricte. Ils sont destinés à ouvrir la programmation au plus grand nombre.

    Tu as quelques exemples par ici:

    Personnellement j'ai pratiqué HyperTalk (HyperCard, Apple, Bill Atkinson) et SuperTalk (SuperCard)

    À mon avis, si le but est de faire un langage de programmation avec de l'espéranto, autant qu'il s'en rapproche dans l'expression, et tu auras plus cette possibilité avec un dérivé de xTalk qu'avec les langages C / C++ / Python.

    En googlant à la recherche d'un BNF je suis tombé sur cette page qui donne une référence vers Open Source xTalk Interpreter Archive

    Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

    • [^] # Re: Plutôt allers vers du "xTalk"

      Posté par  (site web personnel) . Évalué à 3.

      Merci, c'est également une piste intéressante à inspecter. En revanche une syntaxe comme :

           if the last word of the first line of card field 1 contains "hello" then say "Okay"
      

      c'est typiquement le genre de code vers lequel je ne souhaiterais pas tendre. :)

  • # Pas de langage à conseiller

    Posté par  (site web personnel) . Évalué à 1. Dernière modification le 18 novembre 2013 à 14:25.

    Et c'est le faiseur qui choisi, mais tant qu'a faire pourquoi pas utiliser une langue faite pour la programmation tel que lojban ?

    • [^] # Re: Pas de langage à conseiller

      Posté par  (site web personnel) . Évalué à 2. Dernière modification le 18 novembre 2013 à 16:54.

      C’est expliqué dans la page du projet sœur nommé Fabeleblo : «  À l’inverse, des langues comme le lojban, qui pourraient s’avérer intéressantes en terme de grammaire et de morphologie lexicale, manquent encore cruellement de locuteurs. ». :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.