Lo fai usando le strutture offerte dal sistema run-time e inserendo il codice in una libreria.
Ad esempio, il codice di gestione dei file dipende da come il sistema gestisce i file per cominciare. Sui sistemi UNIX ciò avviene attraverso syscalls con parametri definiti in modo esplicito. Quindi, quello che devi fare è scrivere il codice C che usi le syscalls che fanno ciò che vuoi e rendere tale funzionalità disponibile attraverso le funzioni C visibili esternamente. (Nel caso di UNIX, il sistema operativo stesso di solito anche è stato scritto in C, ma ciò è irrilevante a questa domanda.Il metodo sarebbe lo stesso per un compilatore Pascal su un kernel scritto in C o un compilatore C su una macchina Lisp.)
Ciò significa che devi ripetere la procedura per ogni diversa piattaforma su cui dovrebbe essere eseguita l'implementazione della lingua. Rendere il codice in una libreria (nel caso della manipolazione di file, questa sarà probabilmente la libreria standard) garantisce che il programmatore di lingua di alto livello non debba conoscere le complessità della gestione dei file su sistemi diversi, ma deve solo capire l'API dei file C.
Per Javascript, l'ambiente run-time è solitamente il browser, che implementa già il DOM. Pertanto, l'interprete Javascript deve essere programmato contro l'API DOM esistente nel browser e compilato nel browser. Ancora una volta, il programma Javascript non deve comprendere diversi browser, ma solo l'API definita dall'interprete.