Skip to content

Instantly share code, notes, and snippets.

@emk
Created February 22, 2013 15:01
Show Gist options
  • Select an option

  • Save emk/5014027 to your computer and use it in GitHub Desktop.

Select an option

Save emk/5014027 to your computer and use it in GitHub Desktop.
French verbs with weird stems in the subjunctive, based on FrenchVerbWorkshop data.
# -*- coding: utf-8 -*-
require "rubygems"
require "bundler/setup"
require "nokogiri"
File.open('verbs-0-2-0.xml') do |f|
doc = Nokogiri::XML(f)
doc.css('Prototype').each do |p|
sprésent = p.attr('SPRÉSENT')
next if sprésent.empty?
sprésent = sprésent.split(/,/)
stems = []
[/e\z/, /es\z/, /e\z/, /ions\z/, /iez\z/, /ent\z/].each_with_index do |r,i|
unless sprésent[i].nil? || sprésent[i].empty?
stems << sprésent[i].sub(r, '') # Strip expected endings, keep stem.
end
end
stems.sort!.uniq!
if stems.length > 1
puts "#{p.attr('INFINITIVE')} (#{p.attr('REGEX')}): #{p.attr('SPRÉSENT')}"
end
end
end
acheter (acheter|bégueter|bouveter|breveter|caleter|corseter|crocheter|émoucheter|fileter|fureter|haleter|préacheter|racheter|.*éceter): ète,ètes,ète,etions,etiez,ètent
geler (aciseler|celer|ciseler|congeler|crêpeler|déceler|décongeler|dégeler|démanteler|écarteler|embreler|encasteler|épinceler|friseler|geler|harceler|marteler|modeler|peler|receler|recongeler|regeler|remodeler|surgeler): èle,èles,èle,elions,eliez,èlent
aller (aller): aille,ailles,aille,allions,alliez,aillent
clamecer (clamecer): [eè]ce,[eè]ces,[eè]ce,ecions,eciez,[eè]cent
dépecer (dépecer): èce,èces,èce,ecions,eciez,ècent
envoyer (envoyer|renvoyer): oie,oies,oie,oyions,oyiez,oient
rapiécer (rapiécer): èce,èces,èce,écions,éciez,ècent
ayer (.*ayer): ie|ye,ies|yes,ie|ye,yions,yiez,ient|yent
jeter (.*e(?'c'[lt])er): e??e,e??es,e??e,e?ions,e?iez,e??ent
peser (.*e(?'c'[mnprsv])er): è?e,è?es,è?e,e?ions,e?iez,è?ent
sevrer (.*evrer): [eè]vre,[eè]vres,[eè]vre,evrions,evriez,[eè]vrent
oyer (.*oyer|.*uyer): ie,ies,ie,yions,yiez,ient
célébrer (.*é(?'c'[bctv])rer): è?re,è?res,è?re,é?rions,é?riez,è?rent
céder (.*é(?'c'[djlmnprsty])er): è?e,è?es,è?e,é?ions,é?iez,è?ent
ébrécher (.*écher): èche,èches,èche,échions,échiez,èchent
régler (.*ég(?'c'[lnru])er): èg?e,èg?es,èg?e,ég?ions,ég?iez,èg?ent
protéger (.*éger): ège,èges,ège,égions,égiez,ègent
hypothéquer (.*équer): èque,èques,èque,équions,équiez,èquent
avoir (avoir): aie,aies,ait,ayons,ayez,aient
circonvenir (circonvenir|contrevenir|prévenir|subvenir|.*tenir): ienne,iennes,ienne,enions,eniez,iennent
convenir (convenir): ienne,iennes,ienne,enions,eniez,iennent
déchoir (déchoir): oie,oies,oie,oyions,oyiez,oient
mourir (mourir): eure,eures,eure,ourions,ouriez,eurent
mouvoir (mouvoir): euve,euves,euve,ouvions,ouviez,euvent
ouïr (ouïr): ie,ies,ie,yions,yiez,ient
prévoir (prévoir): oie,oies,oie,oyions,oyiez,oient
saillir (saillir): ,,e|isse,,,ent
surseoir (surseoir): oie,oies,oie,oyions,oyiez,oient
asseoir (.*asseoir): eye|oie,eyes|oies,eye|oie,eyions|oyions,eyiez|oyiez,eyent|oient
assoir (.*assoir): oie,oies,oie,oyions,oyiez,oient
recevoir (.*cevoir): çoive,çoives,çoive,cevions,ceviez,çoivent
devoir (.*devoir): oive,oives,oive,evions,eviez,oivent
fuir (.*fuir): ie,ies,ie,yions,yiez,ient
promouvoir (.*mouvoir): euve,euves,euve,ouvions,ouviez,euvent
pourvoir (.*pourvoir): oie,oies,oie,oyions,oyiez,oient
quérir (.*quérir): ière,ières,ière,érions,ériez,ièrent
valoir (.*valoir): ille,illes,ille,lions,liez,illent
venir (.*venir): ienne,iennes,ienne,enions,eniez,iennent
vouloir (.*vouloir): euille,euilles,euille,oulions,ouliez,euillent
voir (.*voir|.*oir): oie,oies,oie,oyions,oyiez,oient
être (être): sois,sois,soit,soyons,soyez,soient
prendre (.*prendre): enne,ennes,enne,enions,eniez,ennent
boire (.*boire): oive,oives,oive,uvions,uviez,oivent
croire (.*croire): oie,oies,oie,oyions,oyiez,oient
braire (.*raire): ie,ies,ie,yions,yiez,ient
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment