Im Allgemeinen gibt es kein Fünf-Minuten-Tutorial für Compiler, weil es ein kompliziertes Thema ist und das Schreiben eines Compilers Monate dauern kann. Sie müssen Ihre eigene Suche durchführen.
Python und Ruby werden in der Regel interpretiert. Vielleicht möchten Sie auch mit einem Interpreter beginnen. Das ist im Allgemeinen einfacher.
Der erste Schritt besteht darin, eine formale Sprachbeschreibung zu schreiben, die Grammatik Ihrer Programmiersprache. Dann müssen Sie den Quellcode, den Sie gemäß der Grammatik kompilieren oder interpretieren wollen, in einen abstrakten Syntaxbaum umwandeln, eine interne Form des Quellcodes, die der Computer versteht und mit der er arbeiten kann. Dieser Schritt wird in der Regel als Parsing bezeichnet, und die Software, die den Quellcode parst, heißt Parser. Häufig wird der Parser von einem Parsergenerator erzeugt, der eine formale Grammatik in Quell- oder Maschinencode umwandelt. Für eine gute, nicht-mathematische Erklärung des Parsens empfehle ich Parsing Techniques - A Practical Guide. Wikipedia hat einen Vergleich von Parsergeneratoren, aus dem Sie den für Sie geeigneten auswählen können. Je nach gewähltem Parser-Generator finden Sie im Internet Tutorials und für wirklich populäre Parser-Generatoren (wie GNU bison) gibt es auch Bücher.
Das Schreiben eines Parsers für Ihre Sprache kann sehr schwierig sein, aber das hängt von Ihrer Grammatik ab. Ich schlage daher vor, die Grammatik einfach zu halten (im Gegensatz zu C++); ein gutes Beispiel dafür ist LISP.
Im zweiten Schritt wird der abstrakte Syntaxbaum von einer Baumstruktur in eine lineare Zwischendarstellung umgewandelt. Als gutes Beispiel hierfür wird oft der Bytecode von Lua angeführt. Aber die Zwischendarstellung hängt wirklich von der jeweiligen Sprache ab.
Wenn Sie einen Interpreter bauen, müssen Sie lediglich die Zwischendarstellung interpretieren. Sie können ihn auch just-in-time kompilieren. Ich empfehle LLVM und libjit für die Just-in-Time-Kompilierung. Um die Sprache nutzbar zu machen, müssen Sie auch einige Ein- und Ausgabefunktionen und vielleicht eine kleine Standardbibliothek einfügen.
Wenn Sie die Sprache kompilieren wollen, wird es noch komplizierter. Sie müssen Backends für verschiedene Computerarchitekturen schreiben und Maschinencode aus der Zwischendarstellung in diesen Backends erzeugen. Ich empfehle LLVM für diese Aufgabe.
Es gibt ein paar Bücher zu diesem Thema, aber ich kann keines davon für den allgemeinen Gebrauch empfehlen. Die meisten von ihnen sind zu akademisch oder zu praktisch. Es gibt kein "Bringen Sie sich das Schreiben von Compilern in 21 Tagen bei", und daher müssen Sie mehrere Bücher kaufen, um ein gutes Verständnis für dieses gesamte Thema zu bekommen. Wenn Sie im Internet suchen, werden Sie auf einige Online-Bücher und Vorlesungsskripte stoßen. Vielleicht gibt es in Ihrer Nähe eine Universitätsbibliothek, in der Sie Bücher über Compiler ausleihen können.
Ich empfehle auch ein gutes Hintergrundwissen in theoretischer Informatik und Graphentheorie, wenn Sie Ihr Projekt ernsthaft angehen wollen. Ein Abschluss in Informatik ist ebenfalls hilfreich.