# Lecture 06: Describing Language Syntax

0    11 flashcards

Question

what are regular grammars
regular grammars (equivalently, regular expressions) are useful for defining languages’ lexical structure;

what re context-free grammars
context-free grammars (CFG) for defining language syntax.

CFG is the ___ ___ used way to describe programming language.
CFG is the most widely used way to describe programming language.

what is the formal definition for CFG
a context-free grammar is a tuple G = (T, N, S,P)

if a context-free grammar is a tuple G = (T, N, S,P) what is T
T is a finite nonempty set of terminal symbols, which consist of strings in the language (such as while), which refer to parts of the text of sentences in the language.

if a context-free grammar is a tuple G = (T, N, S,P) what is N
N is a finite nonempty set of non-terminal symbols, disjoint from T. These refer to syntactic structures defined by other structures and rules (e.g., <exp>).

if a context-free grammar is a tuple G = (T, N, S,P) what is S
S ∈ N (the start symbol),

if a context-free grammar is a tuple G = (T, N, S,P) what is P
P is a set of (context-free) productions of the form A → α (reads A produces α) where A ∈ N and α ∈ (T ∪ N)∗.

What is the standard shorthand notation for context-free grammars (CFG)
[1] The start symbol is that given on the left-hand-side of the first rule. [2] For each non-terminal symbol we use | to separate the alternative right-hand sides of the production rules.

write G2 in short hand G2 = (T, N, S, P) where T = {a, b}, N = {S, C} and P ={S →ε, S →C, S →aSa, S →bSb, C → a, C → b}.
G2 can be written as follows: S → ε | C | aSa | bSb C → a | b

What does BNF stand for?
Backus-Naur Form