Projets-2015-2016-SSSL: Difference between revisions

From air
Jump to navigation Jump to search
 
(35 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Speeding Simplified Script Language =

== Membres ==
== Membres ==
* Adèle BERTRAND-DALECHAMPS
* '''Adèle BERTRAND-DALECHAMPS'''
* Florian POPEK
* '''Florian POPEK'''
* Wei WEI
* '''Wei WEI'''
Responsable:
Responsable:
* Olivier RICHARD
* '''Olivier RICHARD'''


== Objectif ==
== Objectif ==
Line 38: Line 40:
= Divers =
= Divers =
== Liens utiles ==
== Liens utiles ==
* GitHub: https://github.com/FlorianPO/Speeding-Simplified-Script-Language
* '''GitHub: https://github.com/FlorianPO/Speeding-Simplified-Script-Language'''
* AST:
* AST: https://docs.python.org/3.4/library/ast.html
** https://docs.python.org/3.4/library/ast.html
** '''https://greentreesnakes.readthedocs.org/en/latest/'''
* Liste de parser en python: https://wiki.python.org/moin/LanguageParsing
* Liste de parser en python: https://wiki.python.org/moin/LanguageParsing
* A Lire Parsing expression grammar (PEG'): https://en.wikipedia.org/wiki/Parsing_expression_grammar
* A Lire Parsing expression grammar (PEG'): https://en.wikipedia.org/wiki/Parsing_expression_grammar
Line 48: Line 52:
* Arpeggio http://igordejanovic.net/Arpeggio/
* Arpeggio http://igordejanovic.net/Arpeggio/
* Grammaire EBNF : http://www.garshol.priv.no/download/text/bnf.html#id2.3.
* Grammaire EBNF : http://www.garshol.priv.no/download/text/bnf.html#id2.3.
* GO : https://gobyexample.com/
**http://blog.golang.org/


== Installation d'Astmonkey ==
== Installation d'Astmonkey ==
Line 61: Line 67:
Prise de connaissance du sujet et des technologies mises en jeu (beaucoup de doc à lire).
Prise de connaissance du sujet et des technologies mises en jeu (beaucoup de doc à lire).
* Mise en place de l'environnement de développement Python (IDE + dépendances / pré-requis)
* Mise en place de l'environnement de développement Python (IDE + dépendances / pré-requis)
* Création du Git https://github.com/FlorianPO/Speeding-Simplified-Script-Language
* Création du '''Git https://github.com/FlorianPO/Speeding-Simplified-Script-Language'''
* Axes de recherche établis, plan de travail débroussaillé
* Axes de recherche établis, plan de travail débroussaillé


Line 71: Line 77:
== Semaine 3 (1 Février - 7 Février) ==
== Semaine 3 (1 Février - 7 Février) ==
* Création d'une mini grammaire pour tester Grako
* Création d'une mini grammaire pour tester Grako
* Grosse galère, bien grosse...
* Grosse galère avec Grako












== Semaine 4 (8 Février - 14 Février) ==
* Le premier parser est disponible sur GitHub (test d'une grammaire)
** Télécharger le code
** Installer les dépendances si nécessaire
*** '''Python3''': sudo apt-get install python3
*** '''Pip3''' (pour installer des modules python): sudo apt-get install python3-pip
*** '''Grako''': sudo pip3 install grako
** Faire '''make''' dans le répertoire src/


== Semaine 5 (15 Février - 21 Février) ==
Début de l'écriture du générateur de code, à faire:
* Parser l'AST
* Créer les noeuds (classes) de l'AST (-> définir définitivement la grammaire)
* Analyse sémantique
* Génération de code


== Semaine 6 (29 Février - 6 Mars) ==
* Continuation du générateur de code
* AST augmenté: utiliser TOKEN:TOKEN au lieu de TOKEN


== Semaine 6 (29 Février - 6 Mars) ==
* Continuation du générateur de code
* AST augmenté: utiliser TOKEN:TOKEN au lieu de TOKEN


== Semaine 6-7-8 (07 Mars - 27 Mars) ==
* '''https://github.com/FlorianPO/Speeding-Simplified-Script-Language/commits/master'''


== Semaine 9 (28 Mars - 3 Avril) ==
* Implémentation de la partie génération de GO.
* Création d'un panel de test.
* Réglage des derniers bugs.


== Design Pattern (8 Février) ==
* Chaîne de responsabilité
** Le projet est très linaire: Langage SSSL -> parser (syntaxe) -> analyseur (sémantique) -> génération de code Go
* Testing Pattern
** Il s'agit de s'assurer que le code généré mais aussi toute la grammaire SSSL vérifient la sémantique d'un tel script


=Sources=
== Persicup - Design Pattern ==
*[[Media:Sources_SSSL.tar.gz|Sources_SSSL.tar.gz]]
Modèles GoF:
* State (machine à états)
* Singleton (une ou peu d'instances par classe)

Latest revision as of 06:43, 6 April 2016

Speeding Simplified Script Language

Membres

  • Adèle BERTRAND-DALECHAMPS
  • Florian POPEK
  • Wei WEI

Responsable:

  • Olivier RICHARD

Objectif

Le but à long terme de ce projet est de pouvoir partager des codes sources simples de différent langage de scripts, de permettre une execution efficace de ces codes par traduction en langage compilable et permettre l'interaction avec ce code compilé depuis les différents langages de script.

Dans un premier temps on se propose d'identifier un langage de script minimal proche de Python et Ruby. De traduire ce language dans un langage compilable (C++ ou le langage Go) et de permettre l'interaction entre les langages de script et le version compilée.

Plan de travail

  • Découverte du sujet et des technologies
  • Analyse du projet Project-2014-2015-ESP8266
  • Définir langage de script minimal à partir Python
    • orienté objet
    • type de variable simple

Piste de développement

  • Apprendre Python
  • Apprendre Go
  • Créer un code Python extrémement simple
    • obtenir l'AST associé
    • comprendre cet AST
  • Définir le langage SSSL
  • Traducteur AST -> SSSL
  • Traducteur SSSL -> Go
  • ?
  • Profit

Divers

Liens utiles

Installation d'Astmonkey

  • Python 3.4
  • Installation de pydot
  • Récupérer une archive de https://github.com/nlhepler/pydot
  • Décompresser (unzip) et installer par python setup.py install
  • Installer Astmonkey par pip install astmonkey

Journal de Bord

Semaine 1 (18 Janvier - 24 Janvier)

Prise de connaissance du sujet et des technologies mises en jeu (beaucoup de doc à lire).

Semaine 2 (25 Janvier - 31 Janvier)

Choix d'un générateur de parser: Grako

  • Installation
  • Exécution d'un exemple

Semaine 3 (1 Février - 7 Février)

  • Création d'une mini grammaire pour tester Grako
  • Grosse galère avec Grako

Semaine 4 (8 Février - 14 Février)

  • Le premier parser est disponible sur GitHub (test d'une grammaire)
    • Télécharger le code
    • Installer les dépendances si nécessaire
      • Python3: sudo apt-get install python3
      • Pip3 (pour installer des modules python): sudo apt-get install python3-pip
      • Grako: sudo pip3 install grako
    • Faire make dans le répertoire src/

Semaine 5 (15 Février - 21 Février)

Début de l'écriture du générateur de code, à faire:

  • Parser l'AST
  • Créer les noeuds (classes) de l'AST (-> définir définitivement la grammaire)
  • Analyse sémantique
  • Génération de code

Semaine 6 (29 Février - 6 Mars)

  • Continuation du générateur de code
  • AST augmenté: utiliser TOKEN:TOKEN au lieu de TOKEN

Semaine 6 (29 Février - 6 Mars)

  • Continuation du générateur de code
  • AST augmenté: utiliser TOKEN:TOKEN au lieu de TOKEN

Semaine 6-7-8 (07 Mars - 27 Mars)

Semaine 9 (28 Mars - 3 Avril)

  • Implémentation de la partie génération de GO.
  • Création d'un panel de test.
  • Réglage des derniers bugs.

Design Pattern (8 Février)

  • Chaîne de responsabilité
    • Le projet est très linaire: Langage SSSL -> parser (syntaxe) -> analyseur (sémantique) -> génération de code Go
  • Testing Pattern
    • Il s'agit de s'assurer que le code généré mais aussi toute la grammaire SSSL vérifient la sémantique d'un tel script

Sources