JSreal - Conception - Unites

En JavaScript, un objet n'est qu'un ensemble de propriétés et de méthodes. Dans JSreal, chaque unité, comme A('bas') ou NP(D('le'), N('température')), a comme prototype le même objet: JSrealE, pour ¦JSreal Element. Toutes les unités ont donc les mêmes propriétés possibles et peuvent utiliser les mêmes méthodes.

L'objet JSrealE n'est jamais utilisé directement par l'usager, qui manipule uniquement les unités qui en héritent.

Mots

Les unités de base sont les catégories de mots, N, V, D, A, Pro, Adv, P et C. Ces catégories sont énumérées dans une liste JavaScript pour qu'une boucle les intègre toutes comme fonctions globales dans le code, chacune retournant un objet JSrealE dont une propriété est la catégorie correspondante. Cette automatisation est possible car les fonctions globales ne sont que des propriétés de l'objet JavaScript tout en haut de la hiérachie, appelé window (la "fenêtre" d'un navigateur web), et JavaScript permet leur manipulation.

Pour créer un mot, il suffit d'utiliser la fonction correspondant à sa catégorie avec son lemme comme argument. Par exemple, pour créer l'adjectif "bas" et l'assigner à la variable low:

Assignation d'adjectif à une variable var low = A('bas')

Les noms, adjectifs et déterminant peuvent aussi accepte un nombre comme argument au lieu d'un lemme.

Groupes

D'autres unités sont les groupes de mots, NP, VP, AP, PP, CP, J, S et SP. Ils ne sont pas déclarés en série comme les mots car chacun requiert une attention spéciale à sa création et ses méthodes.

Expressions temporelles

Les expressions temporelles se créent avec les fonctions DT et DTR.

Lors de la réalisation, tant DTR que DT utilisent d'autres unités JSreal pour construire les expressions temporelles qui les représentent, s'assurant ainsi de respecter la grammaire et la syntaxe des groupes de mots dont elles font partie.

Balises HTML

Plusieurs balises HTML peuvent être crées dans JSreal avec des fonctions similaires à celles des mots et des groupes. Chacune de ces fonctions utilise la fonction be base DOM, qui retourne un objet JSrealE avec quelques propriétés et méthodes spécifiques aux balises. Comme pour les catégories, les fonctions associées aux balises sont déclarées en série à partir d'une liste.

Ajout de constituants

Toutes les manières d'ajouter un constituant à un groupe passent par la méthode add, lui donnant comme arguments les unités à ajouter. Cette méthode appartient à JSrealE et est donc exactement la même pour chaque groupe, qui accumule ses constituants pour le moment, ne les classant que lors de la réalisation.

Si la méthode add est appelée sur un mot comme N ou A, sa catégorie est utilisée avec eval pour créer une instance du groupe de mots qui l'utilise comme noyau (ici, respectivement NP ou AP) et y intégrer le mot et son ajout. Ainsi, les deux lignes suivantes sont exactement équivalentes:

Ajout d'adverbe à un adjectif; changement en syntagme adjectival A('bas').add(Adv('plus'))
Ajout d'adjectif et d'adverbe à un syntagme adjectival AP().add(A('bas'), Adv('plus'))

Ajouter l'adjectif à l'adverbe aurait échoué, tentant de construire une syntagme adverbial avec la fonction AdvP, qui n'existe pas présentement; même si elle existait, l'adjectif n'a aucune fonction possible dans un syntagme adverbial et la réalisation aurait donc été imprévisible.

En pratique, l'usager utilise les constituants d'un groupe comme arguments de la fonction associée à ce groupe; JSreal appelle alors add sur ces arguments. Ainsi, la ligne de code suivante est exactement équivalente aux deux précédentes:

Adjectif et adverbe arguments de syntagme adjectival AP(A('bas'), Adv('plus'))