Temporal logic is an established tool for writing requirement specifications for computer systems, thanks to its balance between expressive power and efficiency of verification algorithms. Linear Temporal Logic (LTL), one of the most commonly used, allows for naturally expressing safety and liveness requirements on a linear timeline, but incurs into some limitations when utilized to express requirements of procedural programs. In fact, such programs exhibit a typically context-free behavior, which LTL formulas cannot represent. Precedence Oriented Temporal Logic (POTL), a temporal logic based on Operator Precedence Languages (OPLs), a subclass of Deterministic Context-Free Languages. With POTL, we can express requirements involving Hoare-style pre/post-conditions, stack inspection, and others, also in the presence of exception-like constructs. We prove that POTL is as expressive as First-Order Logic (FOL) on its algebraic structure, and devise and implement an explicit-state satisfiability and model-checking algorithm for it, obtaining some promising experimental results.