Kompilator BCPL, również napisany w tym języku, składa się z trzech komponentów, które po kolei uczestniczą w kompilacji kodu. Pierwsze dwa (analizator składniowy i moduł tłumaczący) są prawie całkowicie niezależne od docelowej architektury. Ich wynikiem jest kod pośredni (nazywany OCODE). Za jego przetłumaczenie na kod maszynowy odpowiada ostatni komponent kompilatora – generator kodu, który musi być przystosowany do architektury docelowego komputera.
Stosowany przez kompilator kod pośredni był niezależny od docelowej architektury komputera. Można go porównać do języka asemblera dla pewnej abstrakcyjnej maszyny stosowej, na której opiera się definicja języka.
Składnia Program w języku BCPL składa się z instrukcji, zwykle każda w osobnej linii. Umieszczenie kilku poleceń w tej samej linii kodu źródłowego jest możliwe, jeśli instrukcje rozdzieli się znakiem średnika. W dowolnym miejscu, w którym można wstawić instrukcję prostą, dozwolone jest umieszczenie instrukcji złożonej (nazywanej blokiem, jeśli zaczyna się od deklaracji). Jej ogranicznikami są tzw. nawiasy sekcji, tradycyjnie oznaczane $( i $). W późniejszych wersjach języka w tej roli zalecane są nawiasy klamrowe.