Index

Lexèmes et structure de données

Les lexèmes sont des unités lexicales ou syntaxiques (mots, phrases...).

Il faut pouvoir former avec les lexèmes un arbre de données.
Pour cela, la fonction globale Lexeme nous retourne un objet noeud pouvant réaliser cette tâche.

NB: La création de ces noeuds et les opérations réalisées dessus prennent du temps.
Une structure adéquate nous permet de gagner du temps !

Syntaxe

var oNode = Lexeme ( oLexeme )

Argument

Elle prend en argument l'objet oLexeme issu d'une analyse.

Pour l'analyse lexicale, il est de la forme :

oLexeme={
	token:'INCREMENT_OPE', 	// nom du token (renommé si défini)
	value:'++',		// valeur du token, NB: la valeur d'un parent est égale à ''
	css:'operator numeric',	// classes css associées
	rule:'JS',		// Syntaxe qui à créé le lexème
    // Position dans la source
	index:12, 		// index du premier caractère
	lineStart:2,		// ligne du premier caractère
	lineEnd:2, 		// ligne du dernier caractère
    // Propriétés avancées
	bParent:false,		// Indique si il s'agit d'un lexème parent
	bParentLimit:false,	// Indique si il s'agit d'une limite d'un parent
	bRescan:false		// Indique si il s'agit d'un lexème parent issu d'un double scannage
	}

Pour l'analyse syntaxique il est à définir...

Valeur retournée

Elle retourne un objet noeud pouvant former une structure arborescente.
A cet objet est ajouté l'attribut oValue, affecté avec la valeur oLexeme: oNode.oValue === oLexeme.

L'objet retourné est au choix :

Interface requise

Exemple de fonction

var Lexeme =function( o ){
	var m = document.createElement( o.token )
	m.oValue = o

	// Stylisation de l'élément
	m.className = o.css
	
	// Affichage en info bulle du lexème
	m.title = JSON.stringify( o, null, '\n' )

	// Contenu texte de l'élément
	if( o.value ) m.innerHTML = o.value
	
	return m
	}