molily: linguistischer syntaxparser javascript

Beitrag lesen

Hallo,

Beispielimplementierung:

var Detf = ['la', 'une'];  
var Detm = ['le', 'un'];  
var Nf = ['fille'];  
var Nm = ['soleil', 'vent', 'garçon'];  
var Vi = ['brille', 'chante'];  
var Vt = ['sent', 'voit', 'chante'];  
  
// Mögliche Grammatiken in einem Array of Arrays  
var grammars = [  
  [Detf, Nf, Vi],  
  [Detm, Nm, Vi],  
  [Detf, Nf, Vt, Detm, Nm],  
  [Detf, Nf, Vt, Detf, Nf],  
  [Detm, Nm, Vt, Detm, Nm],  
  [Detm, Nm, Vt, Detf, Nf]  
];  
  
var string = 'Le soleil voit la fille';  
//var string = window.prompt('Satz eingeben');  
  
// Vorbereitung des Strings, entfernen aller Nicht-Buchstaben, wandle in Kleinschreibung um  
string = string.toLowerCase().replace(/[^a-z\s]/g, '');  
// Splitten an Leerzeichen (Whitespace), sodass ein Array entsteht  
var words = string.split(/\s+/);  
// Words ist jetzt ein Array of Strings: ['le', 'soleil', 'voit', 'la', 'fille']  
// Durchlaufe die möglichen grammars, bis die Iterator-Funktion true zurückgibt  
var valid = grammars.some(function(grammar) {  
  // Durchlaufe alle Worte, jedes Mal muss die Iterator-Funktion true zurückgeben  
  return words.every(function(word, index) {  
    // Prüfe, ob das Wort in dem jeweiligen Wortart-Array enthalten ist  
    var lexicalClass = grammar[index];  
    return lexicalClass.indexOf(word) > -1;  
  });  
});  
alert(valid);

Hier wird mit ECMAScript-5-Funktionen gearbeitet, die in neueren Browsern verfügbar sind.

some – Durchläuft eine Liste, führt für jedes Element die angegebene Funktion aus. Wenn die Funktion für ein Element true zurückgibt, wird abgebrochen und true zurückgegeben, ansonsten false. (Kriterium muss für ein Element zutreffen.)
every – Durchläuft eine Liste, führt für jedes Element die angegebene Funktion aus. Wenn die Funktion für alle Elemente true zurückgibt, wird true zurückgegeben, ansonsten false. (Kriterium muss für alle Elemente zutreffen.)
indexOf – Gibt den index des angegebenen Elements im Array zurück. Falls der Wert nicht im Array enthalten ist, wird -1 zurückgegeben.

Grüße
Mathias