Traditionally, synchronization of concurrent processes is coded in line by operations on semaphores or similar objects. Path expressions move the responsibility of implementing such restrictions from the programmer to a compiler. The programmer specifies as part of a type definition which execution sequences are permitted. The advantage of using path experssions instead of P, V operations on semaphores (or similar operations) is comparable to the advantage of using for- and while-statements instead of JUMP or BRANCH instructions. In this paper the rules for writing a path expression are described, parsing and implementation are discussed and the use of path expressions is shown by a number of examples.