2010-02-08 4 views
2

Y at-il un moyen de définir de nouvelles déclarations comme def, with, for, .. de mes propres en python. Bien sûr, je ne veux pas remplacer les déclarations existantes. Seulement en créer quelques-unes.Python: faire vos propres déclarations

Si oui, comment le faire? Pouvez-vous me montrer de bons docs sur le sujet?

Répondre

7

Non, vous ne pouvez pas ajouter de nouvelle syntaxe dans un programme Python. La seule façon de modifier le langage est d'éditer et de recompiler le fichier de grammaire et le code C pris en charge, pour obtenir un nouvel interpréteur, un compilateur et un runtime modifiés.

+0

Et donnez-lui un nouveau nom, ça n'a rien à voir avec le mot "python". S'il vous plaît ne nous confondez pas avec un langage qui est "principalement python" mais autrement incompatible à cause d'une nouvelle syntaxe. –

+1

essayez pythong, potang, pifun, haha ​​ –

+1

Oui, pythong est bon. Comme c'est le phyton, pour la particule élémentaire de la végétation :) – tzot

3

Vous ne pouvez pas (re) définir des mots-clés de langue sans réécrire un compilateur/interpréteur/etc. Ce que vous pourriez faire est peut-être d'écrire quelque chose comme un langage DSL (langage spécifique au domaine) et quelque chose qui traduit vos énoncés de mots clés en déclarations Python, ce qui pourrait être un itinéraire plus facile.

2

Bien que vous ne puissiez pas modifier la syntaxe de Python elle-même (sans la recompiler comme Alex l'a mentionné), vous pouvez utiliser des techniques de métaprogrammation. Voici un lien vers une présentation sur la création d'un DSL en Python.

http://blog.brianbeck.com/post/53538107/python-dsl-i

Si vous n'êtes pas marié à Python, Ruby est un langage pour la définition du DSL, car il a plus larges capacités de métaprogrammation.

http://www.themomorohoax.com/2009/02/25/how-to-write-a-clean-ruby-dsl-rails

+2

... et si vous êtes vraiment sérieux au sujet des DSL, pensez aussi à Tcl. Il vous permet de créer vos propres commandes de base, telles que vos propres instructions if, vos propres boucles while et repeat, etc. Il n'y a pas de mots réservés dans Tcl, donc vous pouvez réinventer absolument n'importe quoi. –

1

Ren'Py est un exemple d'une extension pour Python qui permet des déclarations personnalisées en mettant en œuvre son propre analyseur et le compilateur.

0

Il existe des langages de programmation qui vous permettent de faire cela (Tcl, par exemple), mais Python n'est pas l'un de ces langages.

Questions connexes