In this chapter, we consider the notion of concrete syntax of software languages thereby complementing the earlier discussion of abstract syntax (Chapters 3and 4). Concrete syntax is tailored towards processing (reading, writing, editing) by humans who are language users, while abstract syntax is tailored towards processing by programs that are authored by language implementers. In this chapter, we focus on the concrete syntax of string languages as defined by context-free grammars (CFGs). In fact, we cover only textual concrete syntax; we do not cover visual concrete syntax. We introduce the algorithmic notion of acceptance for a membership test for a language.We also introduce the algorithmic notion of parsing for recovering the grammar-based structure of input. We defer the implementation aspects of concrete syntax, including actual parsing approaches, to the next chapter.
Unable to display preview. Download preview PDF.