Um zu lernen ist es sinnvoll alles selber zu machen.
Will man ein brauchbares Produkt bekommen, gilt es, soviel wie möglich auf gute, fertige Komponenten zurückgreifen.
Grundlage eines Browsers ist das HTTP Protokoll. Dieses musst du möglichst vollständig implementieren. HTTP ist ein ASCII Protokoll, die Anfragen lassen sich daher recht einfach und nachvollziehbar zusammenbauen.
Beispiel: der Nutzer tippt
www.google.de in die Adresszeile. Du setzt folgenden Request ab:
Code:
GET / HTTP/1.1
Host: www.google.de
User-Agent: myBrowser deluxe
Accept: text/html
Accept-Language: de-de
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Du bekommst idR. eine Antwort vom Server. Einige Headerinformationen und die Payload, die oft aus (x)html Code besteht. (x)html ist eine kontextfreie Sprache, die du mit einem CFG-Parser parsen kannst. Die daraus gewonnene Baumstruktur kannst du dann entsprechend analysieren und das Ergebnis häppchenweise der Renderengine übergeben, die die verschiedenen Elemente geeignet darstellt. Referenzierte Elemente (Bilder, scripte, css etc.) musst du zuvor natürlich mit seperaten HTTP Anfragen nachladen und die Informationen hieraus entsprechend anwenden. Für css brauchst du einen seperaten Parser. Ich glaube css ist bereits regulär, was bedeutet, dass du den Parsevorgang mit einigen Regex abgrasen kannst.
Und das ist erst der Anfang. Ist nen Haufen Arbeit, viel Spass.