Faculté I&C, Claude Petitpierre, André Maurer JavaCC Java compilers compiler (version générant du Javascript)

Slides:



Advertisements
Présentations similaires
Réaliser en Java un programme client d’une Base de Données
Advertisements

Formation universitaire à .NET: Introduction à C#
LE LANGAGE JAVASCRIPT LES FENETRES.
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Algorithmes et structures de données 9ème cours Patrick Reuter maître de conférences
Le mécanisme des exceptions
Programmation Web Les JSP.
(Classes prédéfinies – API Java)
C.
Introduction : Compilation et Traduction
1 Le mécanisme des exceptions Qu'est-ce qu'une exception? Comment définir et signaler des exceptions? Comment récupérer des exceptions?
Parallel Programming in C with MPI and OpenMP
Javascript les spécificités du langage - Partie 7 -
Firebug Dévermineur Debugger.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre
Faculté I&C, Claude Petitpierre, André Maurer 1 Héritage par prototype Héritage dattributs ou de méthodes Héritage de constructeurs.
Introduction : Compilation et Traduction
CLUB DES UTILISATEURS SAS DE QUÉBEC
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
Analyse lexicale Généralités Expressions rationnelles Automates finis
Faculté I&C, Claude Petitpierre, André Maurer Les objets Introduction.
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Faculté I&C, Claude Petitpierre, André Maurer setTimeout ( nomDeFonction, 1000 ) setTimeout ( instructions, 1000 ) setTimeout ( nomDeFonction(), 1000 )
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
Faculté I&C, Claude Petitpierre, André Maurer Evénements en Javascript prototype.js.
IFT313 Introduction aux langages formels
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
Introduction à la programmation (Java)
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Le langage Javascript pour le web
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Gestion des fichiers de LemanOS Ne fonctionne que sous LemanOS. On peut voir les fichiers créés dans ce système.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Animateur : Med HAIJOUBI
Javascript 1° PARTIE : LES BASES
2.1 - Historique Chapitre 2 : Introduction au langage C++
Projet de semestre Responsable :Prof. Claude Petitpierre Superviseur :Duy Vo Duc.
PROGRAMMATION WEB FRONT-END.
JavaScript.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Créer des packages.
Faculté I&C, Claude Petitpierre, André Maurer 1 JSON Templates json.org (fin de la page: json-template.js)
Les balises HTML et les objets JavaScript correspondants Objet document L'objet document est important dans la mesure ou il contient tous les objets du.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Technologies web chapitre III : Le langage JavaScript
Résumé des concepts liés aux objets C. Petitpierre, EPFL.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Asynchronous JavaScript And XML AJAX C. Petitpierre
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
6ième Classe (Mercredi, 17 novembre) CSI2572
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Faculté I&C, Claude Petitpierre, André Maurer Exercice sur les bases de données Quelques rappels et conseils (voir Aides > Accès à la base de données)
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
Modules créés au moyen d’objets C. Petitpierre. Objets construits sans constructeurs ( en Java on a introduit la réflexion pour cela ) var obj1 = { }
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Transcription de la présentation:

Faculté I&C, Claude Petitpierre, André Maurer JavaCC Java compilers compiler (version générant du Javascript)

Faculté I&C, Claude Petitpierre, André Maurer JavaCC (zones de la source) 1.Options 2.Program header 3.Tokens 4.Productions

Faculté I&C, Claude Petitpierre, André Maurer options { STATIC = true; } PARSER_BEGIN(ExpressionCompiler) // Header class ExpressionCompiler{ var variables = new Array(); // Javascript == Java var varMap = new Array(); function keepVarName(name) { // code auxiliaire if (varMap[name] == undefined) { // si nécessaire varMap[name] = true; variables.push(name); } } } PARSER_END(ExpressionCompiler) Option + header

Faculté I&C, Claude Petitpierre, André Maurer Tokens SPECIAL_TOKEN : // ignorés dans la grammaire, mais mémorisés { | | | | } TOKEN : { | | | | } TOKEN : { | <IDENTIFIER: ( ["a"-"z"] | ["A"-"Z"] ) ( ["a"-"z"] | ["A"-"Z"] | ["0"-"9"] )* > }

Faculté I&C, Claude Petitpierre, André Maurer Règles de production « pour un parseur dexpressions: 3 + ((x+11)*5 + 8) » void prog() : { var t; } { t=expr() } void factor() : { } { ( | | "(" expr() ")" ) } void expr() : { } { term() ("+" term() )* } void term() : { var t; } { factor() ("*" factor() )* }

Faculté I&C, Claude Petitpierre, André Maurer Répétitions void product() : { /*déclarations, init*/ } { tag() + ( ) * endTag() } ( x )* 0 – n fois ( x )+ 1 – n fois ( x )? optionel [ x ] même que ci-dessus

Faculté I&C, Claude Petitpierre, André Maurer LOOKHEAD void statement() : { var nb = 0; } { "add" ( LOOKAHEAD (3) "A" "," nb=number(null) | "A" "," "B" | LOOKAHEAD ( "B" "," number() ) "B" "," nb=number(null) | "B" "," "B" ) }

Faculté I&C, Claude Petitpierre, André Maurer Actions à faire générer par le parseur void expr() : { } { term() ( "+" term() { var x = res.shift(); res[0] += x); } )* } x x+3

Faculté I&C, Claude Petitpierre, André Maurer Exécution des instructions void term() : { var t; } { factor() ( "*" factor() { var x = res.shift(); res[0] *= x); } )*

Faculté I&C, Claude Petitpierre, André Maurer Génération dun programme exécutable après compilation void factor() : { var myToken; } { ( {program.print("res.unshift(parseInt("+token.image+"))\n");} | myToken = { program.print("var x = gEById('"+myToken.image+"').value\n"); program.print("res.unshift(parseInt(x))\n"); keepVarName(myToken.image); } | "(" expr() ")" ) } automatique

Faculté I&C, Claude Petitpierre, André Maurer Tokens avec même débuts TOKEN : { | } Texte lu: : :aaa Le token choisi est celui qui est le plus long possible. Sil y a deux solutions de même longueur, la première est sélectionnée.

Faculté I&C, Claude Petitpierre, André Maurer JavaCC: queue des tokens et des special tokens Token next specialToken Token next specialToken Token next specialToken Token next specialToken Token next specialToken special tokens dans lordre inverse des flèches

Faculté I&C, Claude Petitpierre, André Maurer Fichiers à importer Les 2 premiers fichiers sont créés en compilant un fichier.jj Le troisième est disponible à ladresse indiquée Compilation

Faculté I&C, Claude Petitpierre, André Maurer Appel dune compilation var res function compile() { res = [ ] source à try { compiler initTokenManager(); ExpressionParserTokenManager( new inputStream(document.getElementById('prog').value) ) prog() // appel de la production initiale alert(res[0]) // montre le résultat } catch (e) { alert(!e.mess?e:e.mess) // erreurs } }