Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.8.0 - Qt Creator : 4.2.2 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

langage interprete

bonsoir et salut à tous!Ma question est de savoir si on peux creer un petit langage interprete avec Qt5?
«1

Réponses

  • coment donc proceder?
  • lol la réponse gbdivers :D
  • Pour être un peu plus loquace: javascript est le langage interprété utilisé dans le module QtQml.
  • @ness si la question de @arnold est "montrez moi comment on crée un langage interprété avec une grammaire une syntaxe des mots clés un interpréteur etc., etc... en Qt", je la trouve très lol également. ;)
  • Allez, je vais etre genereux,voici le code source d'un interpreteur JavaScript : https://code.woboq.org/qt5/qtdeclarative/src/qml/qml/v8/

    Bon, plus serieusement, tu peux commencer par un simple interpreteur bytecode. Cf http://gameprogrammingpatterns.com/bytecode.html
  • Bonsoir à tous!merci gbdivers pour tes liens.En fait je ne veux pas un truc de bien compliquer,meme si le langage ne possède de que 5mots clé.
  • Salut, arnold,

    Donne plus de précisions sur ce que tu veux faire.
    Mais dans tous les cas, faire un mini langage est loin d'être simple !
  • Bonsoir à tous .En fait je veux un début de code pour mon interpréteur ou si non des liens qui pourons me servir(de préference en français)
  • Bonsoir ! Explique le but de ce langage stp.

    Un langage interprété est complexe à développer quand sa grammaire, sa syntaxe sont compliquées. Mais s'il y a 5 mots clé m1 à m5 qu'on peut combiner sur une ligne je ne vois pas de difficulté à écrire un programme qui lit
    "M3 m2 m2 m5" puis l'exécute, ni à un programme qui lit
    " m2 m66 h8" puis affiche qu'il ne comprend pas la fin.
    Si c'est 1 mot clé par ligne, ça ne devient pas simple, mais élémentaire...
  • Salut!
    Mon but est de réaliser un langage trés simple en français,qui permetra d aprendre à des enfants la programmation.
  • Je vais dabord commencer par un mit clé par ligne.
  • je vais dabord commencer par un mot clé par ligne.
  • Un outil du genre langage logo ?
    http://tortue-logo.fr/fr/apropos-logo-tortue
    Ou autre chose ?

    Dis nous en plus, ou nous allons penser que tu n'as même pas fait la cahier des charges de ton projet !
    Quels sont les mots clés que tu as choisis ?
  • Bonjour,
    ah le logo, mes premières lignes de "code" en cm1-cm2 sur un TO7.
    Nostalgie quand tu nous tiens.
  • je voudrai un langage du genre Linotte
  • pour les mots clé je les ai déjà choisit!Mais si vous avez des propositions je suis tout oui.
  • le langage s'appel ""Aurion"
    pour les mots clé:
    -var :pour déclarer les variables
    -pour les structures de control(if,for,while,....) elles seront simplement declarée en français(Si,pour,tantque...)
    -img:pour la creation d image
    et bien d autres,mais pour commencer c est ceux là que je vais dabord réaliser
  • Ok.
    Bon. Je lance ton application, qu'est-ce qui se passe ? Elle m'affiche une zone de saisie c'est cela ?
    Ensuite je tape une ligne, je fais Entrée, et quoi ? Elle est interprétée tout de suite ? Ou tu peux en taper d'autres et le programme se lance quand tu appuies sur un bouton ?
    Quelles sont les fonctionnalités de l'éditeur, celles de ton application ?

    À l'école ils t'ont certainement appris qu'il faut définir comment une application va se comporter avant d'en écrire le premier octet de code ?
  • J'ai donné le lien vers un interpréteur de bytecode, tu l'as lu ? Tu n'as pas compris quoi ?
  • lorsque tu lance l application,une interface du genre Notepad s affiche,tu saisis ton code puis tu clique sur le bouton "lancer",l application interprète directement le code et affiche le résultat dans une fenêtre
  • merci pour le liens @gbdivers.Mais je n ai pas un très grand niveau en anglais,ceki fait ke beaucoup de trucs m ont échappés
  • Ce que tu veux faire ressemble à ça:
    image
    C'est ma calculatrice programmable dont le langage ressemble un peu au basic.

    La principale difficulté n'est pas la gestion des mots clefs (une ligne commence toujours par un mot clef) mais ce qui ce passe après.
    a=100
    print a
    print a*2
    print "hello"
    if a>100 ...

    Ici, à chaque ligne j'ai un type d'expression différent, une expression d'affectation, une variable, une expression arithmétique, une expression chaine de caractères, une expression conditionnelle.

    Donc le pilier du programme sur lequel tout repose, c'est l'analyseur d'expressions.

    a=10
    b=20
    c=-1+(a+1*b)

    Si on décompose la dernière expression, on a des opérandes (1, a, b), des opérateurs (-, +, *) et même une expression imbriquée (a+1*b) (récursivité)
    Pour les opérateurs, on a un opérateur unaire (-), des opérateurs binaires (+, *) avec un niveau de priorité différent ( * est prioritaire sur +)
    Pour les opérandes, on a des nombres et des variables (a, b, c)
    Si pour les expressions, l'évaluation arithmétique se fait de gauche à droite, pour l'affectation c'est l'inverse:
    c=b=a=100;
    l'affectation doit se faire de droite à gauche.

    Moralité, y a du boulot !

    Dans ton cas, je me demande si tu ne devrais pas t'orienter vers une application web, ainsi tu pourrais te servir du langage JavaScript comme moteur de ton propre langage. Il suffirait au moment de l'exécution, de le traduire en JavaScript et de récupérer les résultats pour les afficher dans ton programme.
  • ça ressamble un peu à ceque je veux faire,mais je n ai pas vraiment envi de passer par le javaScrip.
    Mais supposons que j utile le javaScrip,une fois la traduction du code en javaScript,comment faire pour afficher les résultats dans mon programme?
  • April 2016 modifié
    Essaye de faire un effort sur l'orthographe, il y a presque une faute par mot ...

    Pour communiquer avec JavaScript à partir de Qt, il a qtwebchannel

    J'ai fait un test et ç'est assez simple à mettre en place.
    Coté JavaScript:
    function initWebChannel()   // initialisation WebChannel
    {
    new QWebChannel(qt.webChannelTransport, function (channel)
    {
    var client = channel.objects.client;
    client.essai("Hello from html");
    });

    }
    Coté Qt, il faut enregistrer l'objet qui recevra les messages de JavaScript via des slots:
    QWebEngineView* view=new QWebEngineView();
    view->page()->setWebChannel(new QWebChannel(this));
    view->page()->webChannel()->registerObject("client",this);
    Pour recevoir le message envoyé par client.essai("Hello from html")
    dans l'objet "client" il faut définir un slot "essai":
    void essai(const QString& msg);

    La doc Qt est incompréhensible, mais ça semble bien fonctionner.

    Sinon, il est toujours possible d'exécuter un script sur une page web:
    webView->page()->runJavaScript("document.documentElement.scrollHeight", [=](const QVariant &var)
    {
    const QString content = var.toString();
    QTLog(<<"taille de la page:"<<content)
    });
  • Bonjour !!
    Un nouveau problème se pose à moi.
    Comment faire pour que mon éditeur lise le texte qui y ai écrit mot par mot?
  • s'il-vous-plaît à l aide!
  • j ai déjà réalisé l'éditeur avec tout le design.Il me faut maintenant coder le coeur de mon langage.
    Mais je n arrive pas à faire que mon éditeur lise les mots des lignes un à un.
    Il est possible de le faire en C /Qt mais j aimerai le faire avec QtQuick.
    Que faire,je suis bloqué !!!!!!
  • en javascript, les strings se découpent via la méthode split, comme QString d'ailleurs.
  • November 2016 modifié
    Pour la solution on peut exploiter ceci:

    QFile file("traduct.dico");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    return;

    QTextStream out(&file);
    out << ui->barre->text();
    file.close();
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;
    QTextStream in(&file);
    QString line = in.readAll();
    line.replace("good","bon"),line.replace("papa","mama"),line.replace("tonton","tata");

    file.close();
Connectez-vous ou Inscrivez-vous pour répondre.