Het programma fn bestaat uit 2 hoofdonderdelen, een scanner/parser en de toegang tot de database. De scanner/parser is het deel dat het invoerbestand ontleed in zijn elementaire onderdelen, deze onderdelen worden dan aan de database gevoerd, waarna deze ze zal opslaan. Laat ik eerst eens de onderdelen van fn de revue laten passeren en tevens de gereedschappen die ervoor nodig zijn.
scanner/parser: je kunt een scanner/parser in C schrijven, dit kost veel energie, je kunt dit klusje ook aan gespecialiseerde tools over laten. Je moet ze dan uiteraard weten te bedienen, hetgeen bij mij het geval was, en je moet ze ter beschikking hebben. Hier laat Linux mij niet in de steek, ze zitten bij elke distributie, wellicht moet je ze installeren. Je hebt de volgende tools nodig: Flex (alias Lex) en Yacc. Hoewel de tools Flex/Yacc aparte tools zijn en ook apart gebruikt kunnen worden, kunnen ze heel goed samenwerken. Hoe ze samenwerken zal nog uitgelegd worden.
database: MySQL dus, deze is standaard aanwezig bij elke Linux distributie, en op mijn distributie SuSE ook standaard geïnstalleerd. Het kan wel zijn dat je de MySQL-bibliotheek moet installeren, deze is als mysqldevel.rpm, beschikbaar. Deze RPM installeert de functies, bestaande uit bibliotheek en header files, die nodig zijn voor de C-API's naar MySQL.
algemeen: tja, hoe maak je een C-programma: nadenken, typen en testen. Wat heb je ervoor nodig: een editor, C-compiler, linker en bibliotheken. Op een Linux machine is dit alles standaard aanwezig, je hoeft er het huis niet voor uit. De GNU/C-compiler, GCC, is de compiler op Linux, efficiënt en goed. Gratis en voor niks; op een Windows machine is dat het eerste waar je voor naar de winkel moet, en gratis is het zeker niet!
De afbeelding Bronbestanden hieronder, laat zien hoe fn gebouwd zal worden. Er worden drie broncode bestanden gebruikt: fnlx.l(scanner), fnpr.y(parser) en fndb.c(database) deze worden door de bovengenoemde tools Flex, Yacc en GCC vertaald naar het programma fn.
Duidelijk is te zien dat de bestanden lex.yy.cen y.tab.cgegenereerd worden door respectievelijk Flex en Yacc. GCC bevindt zich als een spin in het web, alle bestanden worden door GCC gekauwd waarna hij fn zal creëren.De term Makefile, Appendix A: Makefile, geeft aan dat de bouw van fn vastgelegd is in een bestand Makefile. Door dit bestand mee te geven als parameter aan het tool make wordt fn opnieuw gebouwd. Net als GCC is het tool Make afkomstig van GNU en standaard aanwezig in de Linux distributie.