Tests pour JSreal

En principe tous les textes générés devraient être en vert...

Noms pluriels

chat chats cas cas château châteaux cheval chevaux époux époux gaz gaz bregh breghs

Noms féminins

chat chatte époux épouse blateur blatrice

Adjectifs féminins

calme calme continuel continuelle pareil pareille ancien ancienne bon bonne cadet cadette creux creuse léger légère beau belle aigu aiguë long longue moqueur moqueuse meilleur meilleure migrateur migratrice attentif attentive

Verbe placer

p 1 place f 2 placeras i 3 plaçait ps 4 plaçâmes ip 2 place s 4 placions

Verbe aller

p 1 vais

Ensemble d'expressions de test

    # "gars" au féminin pluriel irrégulier N('gars').g('f').n('p') filles # syntagme nominal au pluriel, "beau" avant le nom NP(D('un'), N('chien'), A('beau'), A('sale')).n('p') des beaux chiens sales # complément du nom NP(D('un'), N('voiture'), A('beau'), PP(P('de'), N('course'))).n('p') des belles voitures de course # verbe dans syntagme prépositionnel NP(D('le'), N('rage'), PP(P('de'), V('vivre'))) la rage de vivre # syntagme verbal isolé avec complément VP(V('avoir'), NP(D('son'), N('voyage'))) avoir son voyage # phrase complète, avec sujet, verbe et complément S(NP(D('le'),N('chat')),VP(V('manger'),NP(D('le'),N('souris')))) Le chat mange la souris. # accord du verbe avec le sujet S(NP(D('le'),N('chat').n('p')),VP(V('manger'),NP(D('un'),N('souris')))) Les chats mangent une souris. # proposition subordonnée NP(D('le'),N('souris'),SP(C('que'),S(NP(D('le'),N('chat')),VP(V('manger'))))) la souris que le chat mange # proposition subordonnée par pronom "dont" NP(D('le'), N('chose'), SP(Pro('dont'), S(Pro('tu'), V('parler')))) la chose dont tu parles # phrase avec pronom sujet et complément indirect S(Pro('je'),VP(V('faire'),N('attention'),PP(P('à'),NP(D('mon'),N('ami').n('p'))))) Je fais attention à mes amis. # impératif présent, 2e personne VP(V('passer').f('ip').pe(2),PP(P('par'),NP(D('ce'),N('autoroute')).g('f'))) passe par cette autoroute # pronom personnel comme complément indirect S(Pro('je'),VP(V('donner'),NP(D('un'),N('cadeau')),PP(P('à'),Pro('toi')))) Je te donne un cadeau. # pronom personnel comme complément direct, phrase exclamative S(Pro('je'),VP(V('détester'),Pro('elle'))).t('exc') Je la déteste! # pronom personnel comme complément direct, adjectif comme attribut S(Pro('je'),VP(V('trouver'),A('bizarre'),Pro('elle'))) Je la trouve bizarre. # pronoms personnels comme compléments direct et indirect S(Pro('je'),VP(V('donner').f('f'),Pro('elle'),PP(P('à'),Pro('elle')))) Je la lui donnerai. # adjectifs automatiquement placés avant ou après le nom NP(D('le'),N('tache'),A('noir'),A('laid'),A('gros')) la grosse tache noire laide # compléments du nom emboîtés NP(D('un'),N('sacramouille'),PP(P('de'),NP(A('beau'),N('projet'),PP(P('de'),N('fou'))))) un sacramouille de beau projet de fou # pronoms coordonnés par "ou" sujets du verbe S(CP(C('ou'),Pro('moi'),Pro('toi'),Pro('elle')),V('manger')) Moi, toi ou elle mange. # pronoms coordonnés par "et" sujets du verbe S(CP(C('et'),Pro('moi'),Pro('toi'),Pro('elle')),V('manger')) Moi, toi et elle mangeons. # juste "toi" et "moi" S(CP(C('ou'), Pro('tu'), Pro('je')), VP(V('aller'), Pro('y'))) Toi ou moi y va. # noms coordonnés par trait d'union NP(D('le'),CP(C('-'),N('vaisseau'),N('mère'))).n('p') les vaisseaux-mères # noms joints par espace NP(D('un'),A('beau'), J(N('bleu'),N('ciel'))) un beau bleu ciel # adjectifs coordonnés par trait d'union NP(D('un'),N('mur'),CP(A('rouge'),C('-'),A('orange'))) un mur rouge-orange # mots coordonnées par "et/ou" CP(C('et/ou'),N('glucose'),N('fructose'),N('sucrose')) glucose, fructose et/ou sucrose # syntagme coordonné comme complément S(Pro('il'),VP(V('pleuvoir'),CP(NP(D('un'),N('chat')),C('et'),NP(D('un'),N('chien'))).n('p'))) Il pleut des chats et des chiens. # positionnement forcé d'adjectifs à travers jonction NP(N('grammaire'), J(A('gros'),A('gras'),A('grand')).pos('pre')) grosse grasse grande grammaire # jonction par deux-points, phrase incomplète S(J(N('verdict'), N('OK'), C(':'))) Verdict: OK. # date et heure, pas de jour de la semaine DT().y(2015).m(10).d(21).h(16).min(29).noDay(true) le 21 octobre 2015 à 16 h 29 # date seulement, avec jour de la semaine DT().y(2015).m(10).d(21).h(16).min(29).only('date') le mercredi 21 octobre 2015 # heure seulement DT().y(2015).m(10).d(21).h(16).min(29).only('time') 16 h 29 # heures, minutes et secondes DT().h(2).min(3).s(38) 2 h 3 min 38 s # dates négatives DT().y(-480).m(8).d(11).noDay(true) le 11 août -480 # juste mois et année DT().y(2000).m(10) en octobre 2000 # juste année DT().y(2000) en 2000 # "demain" comme complément de phrase S(Adv('demain').pos('end'), Pro('je'), VP(V('continuer').f('f'), NP(D('ce'), N('projet')))) Je continuerai ce projet demain. # complément de phrase au début S(Adv('demain').pos('beg'), Pro('je'), VP(V('continuer').f('f'), NP(D('ce'), N('projet')))) Demain, je continuerai ce projet. # élision de "je", liaison de "ma" S(Pro('je'), VP(V('aimer'), NP(D('mon'), N('auto')))) J'aime mon auto. # élision et liaison de "ce" selon qu'il est pronom ou déterminant S(Pro('ce'), VP(V('être'), NP(D('ce'), N('ordinateur')))) C'est cet ordinateur. # "de le" contracté en "du" S(NP(D('le'),N('homme')),VP(V('descendre'),PP(P('de'),NP(D('le'), N('singe'))))) L'homme descend du singe. # élision de "le", donc "de le" pas contracté S(NP(D('le'),N('homme')),VP(V('descendre'),PP(P('de'),NP(D('le'), N('arbre'))))) L'homme descend de l'arbre. # "demain" naturellement généré DT(new Date().getTime()+24*60*60*1000).t('nat').only('date') demain # intervalle de dates distantes, contraction automatique en "du" et "au" DTR(DT().y(2014).m(10).d(14), DT().y(2015).m(10).d(17)).noDay(true) du 14 octobre 2014 au 17 octobre 2015 # intervalle de dates rapprochées DTR(DT().y(2015).m(10).d(14), DT().y(2015).m(10).d(17)).noDay(true) du 14 au 17 octobre 2015 # intervalle de dates en termes naturels DTR(DT(new Date().getTime()-24*60*60*1000), DT(new Date().getTime()+24*60*60*1000)).t('nat').only('date') d'hier à demain # liste de dates en termes naturels DTR(DT(new Date().getTime()), DT(new Date().getTime()+24*60*60*1000)).t('nat').only('date') aujourd'hui et demain # intervalle de dates avec juste année DTR(DT().y(2000), DT(new Date().getTime())).t('nat').only('date') de 2000 à aujourd'hui # liste de dates des mêmes mois et année DTR(DT().y(2000).m(10).d(10),DT().y(2000).m(10).d(11)) les mardi 10 et mercredi 11 octobre 2000 # numéro de téléphone à 7 chiffres dans syntagme PP(P('à'), NP(D('le'), N(5556426).num('t'))) au 555-6426 # numéro de téléphone à 10 chiffres N(5145556426).num('t') 514-555-6426 # numéro de téléphone à 11 chiffres N(18005556426).num('t') 1-800-555-6426 # impératif avec pronom comme complément indirect S(VP(V('donner'), NP(D('le'), N('récompense')), PP(P('à'),Pro('je')))).t('exc').f('ip').pe(2) Donne-moi la récompense! # impératif avec pronoms comme compléments S(VP(V('donner'), Pro('elle'), PP(P('à'),Pro('je')))).t('exc').f('ip').pe(2) Donne-la-moi! # conversion de syntagme nominal en pronom approprié S(VP(V('donner'), NP(D('le'), N('récompense')).pro(1), PP(P('à'),Pro('je')))).t('exc').f('ip').pe(2) Donne-la-moi! # imparfait à partir du radical, points de suspension S(Pro('il'), VP(V('être').f('i'), NP(D('un'), N('fois')))).a('...') Il était une fois... # articles défini et indéfini par méthode, ajout à un syntagme S(NP(N('hyperbole')).d('d'), VP(V('être'), NP(N('figure'), PP(P('de'), N('style'))).d('i'))) L'hyperbole est une figure de style. # sujet féminin, attribut féminin invariable S(NP(N('orange')).d('d'), VP(V('être'), NP(N('couleur')).d('i'))) L'orange est une couleur. # sujet féminin, attribut masculin invariable S(NP(N('orange')).d('d'), VP(V('être'), NP(N('fruit')).d('i'))) L'orange est un fruit. # sujet féminin, attribut masculin variable S(NP(N('orange')).d('d'), VP(V('être'), NP(N('allié')).d('i'))) L'orange est une alliée. # accord de l'attribut indésirable S(NP(N('suspect')).d('d'), VP(V('être'), NP(N('femme')).d('i'))) Le suspect est un homme. # verbe impersonnel forcé, pas d'accord de l'attribut S(NP(N('suspect')).d('d'), VP(V('être').imp(1), NP(N('femme')).d('i'))) Le suspect est une femme. # verbe avec attributs multiples S(Pro('il'), VP(V('être').f('i').imp(1), NP(N('fois')).d('i'), NP(N('fille'), A('petit')).d('i'))).a('...') Il était une fois une petite fille... # .d(): raccourci pour syntagme nominal simple S(N('voiture').d('dem'),VP(V('dépasser'),N('autre').d('d'))) Cette voiture dépasse l'autre. # nombre sans modification S(N(2080218071.45718), VP(V('être'), N('nombre').d('i'))) 2080218071.45718 est un nombre. # écriture décimale française N(2080218071.45718).num('d') 2 080 218 071,457 18 # écriture en toutes lettres, fraction décimale N(2080218071.45718).num('l') deux milliards quatre-vingt millions deux cent dix-huit mille soixante-et-onze et quarante-cinq mille sept cent dix-huit cent-millièmes # syntagme verbal comme complément de verbe S(Pro('je'), VP(V('détester'), VP(V('être'), A('coupé')))) Je déteste être coupé. # subordonnée comme complément de verbe S(Pro('je'), VP(V('détester'), SP(C('quand'), S(Pro('on'), VP(V('couper'), Pro('moi')))))) Je déteste quand on me coupe. # pronoms "y" et "en" comme compléments de verbe S(Pro('il'), VP(V('avoir'), Pro('en'), Adv('trop'), Pro('y'))).t('exc') Il y en a trop! # syntagme adjectival AP(Adv('très'), A('fier')) très fier # syntagme adjectival complexe S(Pro('elle'), VP(V('être'), AP(Adv('vraiment'), Adv('très'), A('fier'), PP(P('de'),NP(D('son'),N('travail')))))) Elle est vraiment très fière de son travail. # syntagme adjectival avec subordonnée S(N('voiture').d('dem'),VP(V('être'),AP(Adv('plus'),A('rapide'),SP(Pro('que'), N('autre').d('d'))))) Cette voiture est plus rapide que l'autre. # syntagme adjectival antéposé comme son adjectif NP(N('chaperon'), AP(A('joli'), Adv('très')), A('rouge')).d('i') un très joli chaperon rouge # ponctuation arbitraire après un mot CP(C('et'), N('A'), N('B'), N('C').a(','), N('D')) A, B, C, et D # adjectifs comme noms par trait "fct" et méthode "addHead" CP(NP(A('beau').g('f').cap(1).fct('head')).d('d'), NP().d('d').addHead(A('bête').cap(1)).g('f')).add(C('et')).cap(1) La Belle et la Bête # .c(): alternative pour coordonnant CP(N('A'), N('B'), N('C')).c('ou') A, B ou C # pronom sujet modifié S(Pro('moi'), VP(V('aller'), Pro('y'))) J'y vais. # pronoms sujets coordonnées modifiés S(CP(Pro('tu'), Pro('je')).c('et'), VP(V('aller'), Pro('y'))) Toi et moi y allons. # passage de mot à syntagme V('avoir').add(N('faim')) avoir faim # adverbe comme sujet S(Adv('demain').fct('subj'),VP(V('être'),NP(N('jour'),D('un'),A('autre')))) Demain est un autre jour. # adverbe dans groupe nom VP(V('avoir'),NP(Adv('très'), N('peur'))) avoir très peur # entourer un mot A('entouré').en('*') *entouré* # parenthèses J(A('surchargé'), A('overloaded').en('(')) surchargé (overloaded) # guillemets N('mot').d('d').addComp(N('sarcasme').en('"')) le mot « sarcasme » # citation S(Pro('ça'), V('dire').add(NP(N('défense'), PP(P('de'), V('passer'))).en('"'))).a('...') Ça dit « défense de passer »... # accord à travers balise HTML NP(D('un'), N('voiture'), I(A('beau'))).n('p') des <i>belles</i> voitures # assignation de traits à travers balise HTML B(N('camion')).n('p').d('i') des <b>camions</b> # .tag(): alternative pour balise HTML simple NP(D('un'), N('voiture'), A('beau').tag('i')).n('p') des <i>belles</i> voitures # plusieurs phrases dans un paragraphe, phrase à partir d'une chaîne, phrases interrogatives P(S('allô').t('int'), S(Pro('qui'), VP(V('être'), Adv('là'))).a('?')) <p>Allô? Qui est là?</p> # balise HTML sans fermeture et avec attributs Img().class('left').src('http://daou.st/JSreal/JSrealIcon.png') <img class="left" src="http://daou.st/JSreal/JSrealIcon.png"> # balise HTML avec attribut inconnu Div().attr('show', 1) <div show="1"></div> # assignation d'attributs par objet P().attr({ id:'cont', class:'no-bg', show:1 }) <p id="cont" class="no-bg" show="1"></p> # coordination de propositions CP(S(Pro('je'), VP(V('aller'), Pro('y'))), S(Pro('je'), VP(V('exécuter'), N('ordre').n('p').d('d'))), S(Pro('je'), V('revenir'))).c('et') J'y vais, j'exécute les ordres et je reviens. # participe passé accordé V('blanchir').g('f').f('pp') blanchie # passé composé, plus-que-parfait, conditionnel passé CP(S(Pro('je'), V('comprendre').f('pc')), S(Pro('je'), V('entendre').f('pq')), S(Pro('je'), V('devoir').f('cp'))).c(';') J'ai compris; j'avais entendu; j'aurais dû. # passé composé à travers coordination de phrases, ajout avant un élément J(CP(S(Pro('je'), V('venir')), S(Pro('je'), V('voir')), S(Pro('je'), V('vaincre'))).c(',').f('pc').en('"'), N('Jules César').b('— ')) « Je suis venu, j'ai vu, j'ai vaincu. » — Jules César # balise HTML dans une coordination CP(C('et'), N('A'), B(N('B')), N('C'), N('D')) A, <b>B</b>, C et D # caractère et virgule après un élément d'une coordination CP(C('et'), N('A'), N('B').a('*'), N('C'), N('D')) A, B*, C et D # liste automatique à partir d'éléments joints J(N('A'), N('B'), N('C')).tag('ol') <ol><li>A</li><li>B</li><li>C</li></ol> # mais juxtaposition dans liste n'en prend qu'une ligne UL(J(N('A'), N('B'), N('C'))) <ul><li>A B C</li></ul> # complément de phrase au milieu S(Pro('je'), V('accepter'), A('soussigné').pos('mid')) Je, soussigné, accepte. # verbe complément de verbe complément de verbe complément de verbe S(Pro('il'), VP(V('falloir'), VP(V('savoir'), VP(V('laisser'), V('aller'))))) Il faut savoir laisser aller. # attribut après passé composé S(NP(D('ton'), N('moto')), VP(V('être'), A('remisé')), PP(P('pour'), N('hiver').d('d')).pos('end')).f('pc') Ta moto a été remisée pour l'hiver. # raccourci pour syntagme nominal à partir d'adjectif A('dernier').g('f').d('d') la dernière # pronom noyau de syntagme nominal NP(Pro('ce'), SP(Pro('dont'), S(Pro('tu'), V('parler')))) ce dont tu parles # trait avec valeur fausse S(N('NON')).a('') NON # phrase coordonnée subordonnée SP(C('que'), CP(S(Pro('il'), V('pleuvoir').f('s')), Adv('non')).c('ou')) qu'il pleuve ou non # majuscule à travers entourage NP(N('test').en('*')).cap(1) *Test* # expression temporelle à partir d'une chaîne DT('2010-10-21T21:16:29') le jeudi 21 octobre 2010 à 21 h 16 min 29 s # NP dans NP par erreur NP(N('bout').d('d'), A('autre')) l'autre bout # raccourci pour subordonnée S(Pro('tu'), V('vouloir')).sub('où') où tu veux # n'importe quoi peut être subordonné AP(Adv('plus'), A('rapide'), A('autre').d('d').sub('que').n('p')) plus rapide que les autres # liste automatique dans UL UL(N('A'), N('B'), N('C')) <ul><li>A</li><li>B</li><li>C</li></ul> # éléments DOM acceptent chaînes UL('A','B','C') <ul><li>A</li><li>B</li><li>C</li></ul> # majuscule automatique à titre HTML H4(NP(D('un'), N('voiture'), A('rouge'), A('beau'))) <h4>Une belle voiture rouge</h4> # problème réglé avec les 1 N(1001001001).num('l') un milliard un million mille un # nombre adjectif N('rangée').d('d').add(A(25).num('l')) la rangée vingt-cinq # nombre adjectif sans trait 'num' N('rangée').d('d').add(A(25)) la rangée 25 # nombre déterminant N('rangée').d(3) 3 rangées # nombre déterminant modifié par trait du NP N('rangée').d(3).num('l') trois rangées # nombre déterminant 1 s'accorde en genre N('rangée').d(1).num('l') une rangée # nombre déterminant impose pluriel à partir de 2 N('rangée').d(2).num('d') 2 rangées # mais pas avant N('rangée').d(1.99).num('d') 1,99 rangée # aussi dans le négatif N('rangée').d(-2).num('d') -2 rangées # nombre nom n'entraîne pas élision ou liaison S(N('un').d('d'), V('gagner').f('pc')).t('exc') Le un a gagné! # pareil pour nombre en lettres généré par JSreal S(N(11).d('d').num('l'), V('gagner').f('pc')).t('exc') Le onze a gagné! # terminaisons de nombres ordinaux J(A(24), A(105), A(9), A(1001)).c(',').num('o') vingt-quatrième, cent cinquième, neuvième, mille unième # nombre ordinal comme adjectif N('rangée').d('d').add(A(1).num('o')) la première rangée # nombre ordinal complexe N('conte').d('d').add(A(1001).num('o')) le mille unième conte # pas d'élision ou liaison avec nombre ordinal A(11).num('o').d('d') le onzième # pronom avec subordonnée par "que": accord du participe passé avec "avoir" Pro('celle').add(S(Pro('tu'), V('choisir')).f('pc').sub('que')) celle que tu as choisie # accord malgré PP qui suit avec "de" Pro('celle').add(S(Pro('tu'), V('choisir').add(PP(P('de'), N('emblée')))).f('pc').sub('que')) celle que tu as choisie d'emblée # accord malgré verbe à l'infinif qui suit dans PP Pro('celle').add(S(Pro('tu'), V('choisir').add(PP(P('pour'), V('survivre')))).f('pc').sub('que')) celle que tu as choisie pour survivre # mais pas d'accord si verbe à l'infinif suit dans PP avec "de" Pro('celle').add(S(Pro('tu'), V('choisir').add(PP(P('de'), V('prendre')))).f('pc').sub('que')) celle que tu as choisi de prendre # pas d'accord avec subordonnée par "dont", non plus N('chose').d('d').add(S(Pro('tu'), V('parler')).f('pc').sub('dont')) la chose dont tu as parlé # pronom relatif "qui" transmet la personne S(Pro('ce'), VP(V('être'), NP(Pro('vous'), V('gagner').sub('qui')))).t('exc') C'est vous qui gagnez! # aussi personne automatique N('pierre').n('p').add(V('rouler').sub('qui')) pierres qui roulent # préposition acceptée en lieu de PP (ellipse sous-entendue) S(Pro('je'), V('venir').f('f').add(P('après'))) Je viendrai après. # participe passé avec avoir: accord avec complément d'objet direct qui le précède S(Pro('je'), V('attendre').f('fa').add(Pro('elles'))) Je les aurai attendues. # autre accord avec complément d'objet direct avant verbe S(Pro('je'), V('rendre').f('f').add(A('spécial'), Pro('elles'))) Je les rendrai spéciales. # PP subordonné S(Adv('mieux').fct('subj'), VP(V('valoir'), VP(V('mourir'), A('libre'), PP(P('de'), VP(V('vivre'), N('esclave'))).sub('que')))) Mieux vaut mourir libre que de vivre esclave. # nombre en toutes lettres, nouvelle orthographe N(18071.457).num('ln') dix-huit-mille-soixante-et-onze et quatre-cent-cinquante-sept millièmes # ordinal, nouvelle orthographe A(1200).num('on') mille-deux-centième # adjectif suivi de "de" NP(AP(A('vrai'), P('de')), A('vrai'), A('fou')).g('f').d('i') une vraie de vraie folle # pronominalisation de nom N('fille').pro(1) elle # pronominalisation de coordination CP(Pro('toi'), Pro('moi')).pro(1) nous # personne 3 par défaut si verbe a une forme V('faire').f('f') fera # personne 2 par défaut si verbe à l'impératif V('faire').f('ip') fais # raccourci pour déterminant possessif NP(N('auto')).d('p2') ton auto # élision et traits a/b/en J(NP(D('le'), N('avion')), NP(D('le').a(','), N('avion')), NP(D('le'), N('avion').b('-')), NP(D('le'), N('avion').en('"'))).c('|') l'avion|le, avion|le -avion|l'« avion » # flexion de pronom Pro('il').g('f').n('p') elles # raccourci pour PP Pro('lui').p('de') de lui # pas d'élision avec "le" complément d'impératif VP(V('faire').f('ip'), Pro('le'), N('nouveau').p('à')) fais-le à nouveau # verbe: forme composée, pas dans autre groupe V('aller').f('fa').pe(2).n('p').g('f') serez allées # pronom à partir de personne Pro().pe(1) je # "aucune" à partir de 0 N('fois').d(0).num('l') aucune fois # balises HTML imbriquées Div(N('propos').p('à').tag('h2'), Img().class('inline').src('me.png'), P(CP(S(N('nom').d('p1'), VP(V('être'), N('Nicolas Daoust').tag('b'))), S(Pro('je'), VP(V('être'), N('créateur').d('d').add(N('JSreal').tag('a').href('http://daou.st/JSreal').p('de'))))), S(Pro('vous'), VP(V('pouvoir'), VP(V('contacter'), Pro('moi'), N('n@daou.st').tag('a').href('mailto:n@daou.st').d('d').p('à')))))) <div><h2>À propos</h2><img class="inline" src="me.png"><p>Mon nom est <b>Nicolas Daoust</b> et je suis le créateur de <a href="http://daou.st/JSreal">JSreal</a>. Vous pouvez me contacter au <a href="mailto:n@daou.st">n@daou.st</a>.</p></div> # adjectif après nom, mais avant complément N('génération').add(A('automatique').pos('post'), N('texte').p('de')) génération automatique de texte # balise a automatique avec attribut href; Email S(Pro('vous'), VP(V('pouvoir'), V('contacter').add(Pro('moi'), Email('n@JSreal.js').d('d').p('à')))) Vous pouvez me contacter au <a href="mailto:n@JSreal.js">n@JSreal.js</a>.