(* Mines 97: macro-expansions *) open String;; let tablemax=128;; type macro_definition= {symbole:string; definition:string};; let entreevide={symbole="";definition=""};; type 'a table_des_symboles = { table: 'a array; mutable tailletable:int } ;; let tabledessymboles= { table=Array.make tablemax entreevide; tailletable=0} ;; let nouvelle_entree symbole definition= let n=tabledessymboles.tailletable in if n=tablemax then failwith "la table est pleine" else begin tabledessymboles.tailletable<-(n+1); tabledessymboles.table.(n)<-{symbole=symbole;definition=definition}; end ;; nouvelle_entree "Info" "Informatique";; nouvelle_entree "Permute" "$2$1";; let estdanstable s= let trouve=ref false and k=ref (-1) in while ((not !trouve) & (!k