CoMe_Ng, le cousin éloigné de Melissa
Rendu obsolÚte par son petit frÚre CUJaS (Convertisseur unifié en Java pour les SiTac).
La création d'un compilateur, composé impérativement :
- d'un lexer
- d'un parser
- d'un générateur d'AST
- d'un pretty-printer permis par le pattern Visiteur
Le sujet, au-delĂ du projet de compilation en lui-mĂȘme, est rĂ©alisĂ© au profit des Ă©quipages CN-235 de l'ArmĂ©e de l'Air et de l'Espace, et peut donc sembler plutĂŽt spĂ©cifique. Nous allons donc le prĂ©senter ici.
Les équipages de transport, lors de vols tactique, ont besoin en amont de préparer leur "Situation Tactique" (SiTac). Cette derniÚre, réalisée sur des outils spécialisés (tels Melissa_NG
), est alors généralement imprimée puis emportée dans le cockpit en version papier.
NĂ©anmoins, dans le cadre de vols d'entraĂźnement, pour lesquels les donnĂ©es sont Non ProtĂ©gĂ©es car imaginĂ©es pour besoin d'exercice, il devient intĂ©ressant de pouvoir disposer d'une version numĂ©rique de cette SiTac, pouvant ĂȘtre affichĂ©e sur les iPads des Ă©quipages.
Les logiciels ne possédant pas nativement de capacités d'exportation au format kml
, il était nécessaire de fournir un tel outil, permettant de générer un fichier kml
à partir d'une SiTac exportée dans le format permis par le logiciel.
Une premiÚre version trÚs succincte de ce projet, réalisée en VBA
sur Microsoft Excel, a été réalisée par mes soins au sein de l'unité, et il semblait indispensable d'en proposer une version plus adaptée et facile d'utilisation.
Un fichier exporté par un logiciel de cartographie spécialisée, au format XML, de forme dépendant du logiciel utilisé (NTK
, Melissa_NG
...).
Un fichier kml
contenant les objets de la SITAC, qu'il est possible d'afficher sur un outil de cartographie grand public (Google Earth, TacView...)
Le projet, intitulé "CoMe_NG", pour "Convertisseur Melissa de Nouvelle Génération", écrit en Ruby
, permet donc de réaliser cette conversion de maniÚre simple et rapide.
On donne un fichier test.xml
, dans le répertoire input
, Ă des fins de test. D'autres fichiers, gĂ©nĂ©rĂ©s par ntk, pourront ĂȘtre ajoutĂ©s au fur et Ă mesure des essais menĂ©s en escadron.
- Commencer par installer les dépendances
Ruby
depuis le répertoire du projet :
bundle install
- Puis lancer simplement l'interface graphique :
ruby lib/come_ui.rb
Une fois l'interface graphique lancée, elle ressemble à ceci : Il suffit alors de choisir le fichier à ouvrir, puis de générer le kml. Le programme demandera l'emplacement souhaité pour le fichier à générer (le nom du fichier est généré automatiquement).
Une fois le fichier généré, on peut ouvrir le répertoire le contenant en cliquant sur le bouton correspondant.
Le projet est composé des fichiers Ruby
suivants :
come_andline.rb
: le fichier principal permettant un fonctionnement en ligne de commande (obsolĂšte)come_ui.rb
: le fichier principal permettant un fonctionnement en interface graphiquesitac_lexer.rb
: le lexer, qui permet de "découper" le fichier XML en tokenssitac_parser.rb
: le parser, qui permet de "parser" les tokens et de générer l'ASTast.rb
permettant la génération de l'ASTsitac_objects.rb
: le fichier contenant les classes génériques des objets de la SiTacsem_ntk.rb
: le fichier contenant la sémantique spécifique à la SiTac NTKkml_maker.rb
: conversion des objets créés en fichier KMLlog_utils.rb
implémentant un logger, permettant d'afficher des informations claires dans la consoletoken.rb
implémentant la classe Token, permettant de représenter les tokens
classDiagram
direction BT
class Bullseye {
vradius
name
center
ring_distance
hradius
rings
}
class Circle
class Corridor {
name
width
end_point
start_point
}
class Ellipse {
vradius
name
center
hradius
}
class Figure
class Line {
name
points
}
class Point {
name
longitude
latitude
}
class Polygon
class Rectangle {
name
start
horizontal
vertical
}
class SITACObjects
Figure --> Bullseye
Ellipse --> Circle
Figure --> Corridor
Figure --> Ellipse
SITACObjects ..> Figure
Figure --> Line
Figure --> Point
Line --> Polygon
Figure --> Rectangle