See: Project: Creating a Simple DSL for Financial Transactions