Guide du développeur

 

Guide de langage PC-BASIC

 

Les fonctionnalités décrites dans ce guide sont destinées aux développeurs Python uniquement. Ils sont expérimentaux, peuvent ne pas fonctionner comme prévu et peuvent être supprimés des versions futures sans avertissement. Vous ne pourrez peut-être pas obtenir d'aide si vous rencontrez des problèmes. Heureusement, aucune des fonctionnalités décrites ici n'est nécessaire au fonctionnement normal de PC-BASIC.

 

API de session
PC-BASIC peut être chargé en tant que package depuis Python, ce qui permet d'appeler du code BASIC directement depuis Python.

Session de classe (**kwargs)


Ouvrez une session PC-BASIC. L'objet de session contient l'état de l'interpréteur, par ex. la valeur des variables, le code de programme et les pointeurs, l'état de l'écran, etc. Notez que Session peut être utilisé comme gestionnaire de contexte avec l'instruction with.


Les arguments de mot-clé sont en grande partie (mais pas entièrement) analogues aux options de ligne de commande PC-BASIC.


Par défaut, l'objet Session saisit l'entrée et la sortie standard comme clavier et écran.


Cela peut être indésirable dans certaines applications ; dans de tels cas, définissez explicitement les arguments des mots-clés input_streams et output_streams (par exemple, sur None ).

exécuter (code_de_base)
Exécutez le code BASIC. basic_code peut être des commandes ou des lignes de programme, séparées par \n ou \r .

évaluer(basic_expr)
Evalue une expression BASIC et renvoie sa valeur en tant que valeur Python. Pour les règles de conversion de type, voir get_variable.

set_variable(nom, valeur)
Définissez la valeur d'un scalaire ou d'un tableau sur une valeur Python.


name est un nom BASIC valide, y compris le sigil, et n'est pas sensible à la casse. Si la cible est un tableau, name doit se terminer par () .


value doit être d'un type compatible : int , bool ou float pour les variables numériques et bytes ou unicode pour les chaînes. Si la cible est un tableau, la valeur doit être une liste de ces valeurs. Les tableaux multidimensionnels doivent être spécifiés sous forme de listes imbriquées.


bool s sera représenté comme en BASIC, avec -1 pour True . unicode sera converti en fonction de la page de code active.

 

get_variable(nom)
Récupère la valeur d'un scalaire ou d'un tableau en tant que valeur Python.
name est un nom BASIC valide, y compris le sigil, et n'est pas sensible à la casse. Si la cible est un tableau, name doit se terminer par () .


Les entiers seront renvoyés sous la forme int , les valeurs simple et double précision sous la forme float et la chaîne sous la forme bytes . Si la cible est un tableau, la fonction renvoie une liste (imbriquée) de ces valeurs.

close()
Fermer la session : ferme tous les fichiers ouverts et quitte PC-BASIC. S'il est utilisé comme gestionnaire de contexte,
cette méthode est appelée automatiquement.

 

Extensions


Il est possible d'activer vos propres instructions BASIC à l'aide d'extensions. Une extension est un objet ou un module Python chargé via l'option --extension ou via le paramètre d'extension de l'objet Session.


Les fonctions Python et autres objets appelables dans l'espace de noms de l'extension seront rendus accessibles via des instructions d'extension de base ou des fonctions dont le nom commence par un trait de soulignement _

Pour que cela fonctionne, la fonction doit avoir un nom qui est également un nom de variable BASIC valide : alphanumérique uniquement, pas de traits de soulignement, pas égal à un mot-clé BASIC.

 

Le nom ne sera pas sensible à la casse en BASIC ; c'est-à-dire, def mytestfunc() : print 1 et def myTestFunc() :
print 2 mappe à la fois sur l'instruction d'extension ou la fonction _MYTESTFUNC . Laquelle de ces fonctions serait choisie n'est pas définie, évitez donc cette situation.


Tous les arguments fournis à l'instruction ou à la fonction d'extension sont fournis à la fonction Python en tant que type correspondant : les entiers BASIC deviennent des int s, les nombres simple et double précision deviennent des float s et les chaînes deviennent des octets (pas d'unicode et aucune conversion de page de code n'est appliquée) .

Par exemple, un appel à _MYTESTFUNC 5, "test-string" s'attendrait à trouver une fonction Python mytestfunc(i, s) avec deux paramètres, et fournirait i=int(5) et a=bytes('test-string' ).


La même fonction Python peut également être appelée en tant que fonction d'extension, par ex. A = _MYTESTFUNC(5, "test-string") .

 

S'il est appelé en tant que fonction, mytestfunc(i, s) doit renvoyer une valeur parmi int , float , qui seront toutes deux converties en un float double précision BASIC ; bool , qui sera converti en un entier BASIC ; ou bytes ou unicode , qui sera converti en une chaîne BASIC.

 

Examples


import pcbasic
import random

with pcbasic.Session(extension=random) as s:
    s.execute('a=1')
    print s.evaluate('string$(a+2, "@")')
    s.set_variable('B$', 'abcd')
    s.execute('''
        10 a=5
        20 print a
        run
        _seed(42)
        b = _uniform(a, 25.6)
        print a, b
''')

 

 

 

 

 

 

 

 

 

 

 

Recherche personnalisée