Synthetic biology aims at producing novel biological systems to carry out some desired and well-defined functions. An ultimate dream is to design these systems at a high level of abstraction using engineering-based tools and programming languages, press a button, and have the design translated to DNA sequences that can be synthesised and put to work in living cells. We introduce such a programming language, which allows logical interactions between potentially undetermined proteins and genes to be expressed in a modular manner. Programs can be translated by a compiler into sequences of biological parts, a process which relies on logic programming and prototype databases containing known biological parts and protein interactions. Programs can also be translated to reactions, allowing simulations to be carried out. The language is a first step towards the automatic translation of high-level behavioural designs to low-level DNA code.