A technique where the structure of a language processor (e.g. a compiler) is based on the structure of the language's abstract syntax. There might be one procedure in the translator corresponding to each category in the abstract syntax. That procedure is responsible for processing constructs of that category. Each procedure would call others corresponding to the construct's subconstituents and then combine their results to give the overall result for that construct.