ZPT Architecture
================

There are a number of major components that make up the page-template
architecture:

- The TAL compiler and interpreter.  This is responsible for compiling
  source files and for executing compiled templates. See the zope.tal
  package for more information.

- An expression engine is responsible for compiling expressions and
  for creating expression execution contexts.  It is common for
  applications to override expression engines to provide custom
  expression support or to change the way expressions are implemented.
  The `zope.app.pagetemplate` package uses this to implement trusted
  and untrusted evaluation; a different engine is used for each, with
  different implementations of the same type of expressions.

  Expression contexts support execution of expressions and provide
  APIs for setting up variable scopes and setting variables.  The
  expressions contexts are passed to the TAL interpreter at execution
  time.

  The most commonly used expression implementation is that found in
  `zope.tales`.

- Page templates tie everything together. The assemble an expression
  engine with the TAL interpreter and orchestrate management of source
  and compiled template data.  See `interfaces.py`.
