2010-10-08 18 views
0

Je vais travailler avec des fichiers XML contenant des phrases logiques comme celles-ci:Comment évaluer/traduire des phrases logiques définies dans les fichiers XML

<condition> 
    <or> 
     <not> 
      <eq> 
       <variable> 
        <name>X</name> 
        <variabletype>Test</variabletype> 
        <datatype>String</datatype> 
       </variable> 
       <constant> 
        <value>finished</value> 
        <datatype>String</datatype> 
       </constant> 
      <eq> 
     </not> 
     <gt> 
      <variable> 
       <name>X</name> 
       <variabletype>Result</variabletype> 
       <datatype>int</datatype> 
      </variable> 
      <constant> 
       <value>50</value> 
       <datatype>int</datatype> 
      </constant> 
     </gt> 
    </or> 

Mes questions: 1- Y at-il la norme Schéma XML pour l'affichage de phrases logiques dans des fichiers XML? Je cherche quelque chose comme RFC (Demande de commentaires).

2- Quelle est la meilleure façon de traduire et d'évaluer ces phrases dans des fichiers XML à l'aide de Java? 3- Je veux écrire du code pour générer automatiquement une interface graphique qui avec l'aide des utilisateurs peut changer la valeur des variables dans les phrases logiques? Existe-t-il une technique spéciale pour générer une interface graphique (Swing ou Jface) à partir de fichiers XML?

Appréciant votre conseiller et vous aider

+0

Vous pouvez analyser la structure avec CUP (et JFlex). http://www2.cs.tum.edu/projects/cup/ – Nabb

Répondre

0

1- Pas pour autant que je sais. Cela ressemble un peu à MathML, mais spécifique aux phrases logiques, et aux types ajoutés. Vous semblez déjà avoir une idée précise, donc je doute qu'une norme convienne à ce que vous cherchez.

2- Vous avez besoin de classes intermédiaires, telles que Phrase, Function, Variable et Constant, et implémentez une méthode comme evaluate(). Il existe plusieurs façons de créer les objets correspondants. Un moyen simple en Java (sans bibliothèque supplémentaire) serait d'analyser le XML comme un arbre DOM, et de le parcourir pour créer un arbre correspondant avec vos classes.

3- Vous pouvez utiliser un éditeur XML comme Jaxe, avec un fichier de configuration pour personnaliser l'interface graphique. Cependant, dans ce cas, je considérerais également la définition d'une syntaxe de texte pour vos phrases logiques et un analyseur associé. Vous pouvez laisser les utilisateurs entrer un texte comme "! (X =" fini ") | (Y> 50)" et utiliser plus de GUI pour définir le type pour X et Y. Comme avec MathML, si vous demandez à l'utilisateur de XML, même avec une belle interface graphique, vous vous retrouvez avec quelque chose de plutôt verbeux.

+0

1- Merci. Je vais vérifier MathML. 2- J'ai aussi pensé aux classes intermédiaires. Ce sera intéressant s'il est possible de générer le code à l'aide de la transformation XSL. Mais je pense que c'est impossible ou trop difficile et je dois choisir l'analyse syntaxique. 3- Ce sera l'analyse XML pour la génération de l'interface graphique. Merci encore – Govan