Parser example in SableCC, ANTLR, Parsec Scenario 1: Instantiate user-defined datatypes --> SableCC fails. No problem in ANTLR, Parsec. Scenario 2: Store scale factor as integer --> SableCC fails. No problem in ANTLR, Parsec. Scenario 3: Abstract over commonalities in graph productions --> SableCC fails and ANTLR fail. No problem in Parsec. Scenario 4: Reasoning about static/dynamic errors in code snippets --> abstraction barrier breaks in ANTLR Regions example: Interpreter, embedding, PE Scenario 1: Language extension --> easy with embedding, but possible in all approaches Scenario 2: Language composition --> easy with embedding and PE, not obvious how to do it with interpreters Scenario 3: Add alternative interpretations --> easy with interpreter and PE, not possible with embedding Scenario 4: Domain-specific optimizations --> easy and flexible with interpreter, possible via alternative interpretation with PE nonmodular and complicated with embedding There are more differences when one considers names, embedding type systems etc.