終結符與非終結符

非终结符

非终结符是可以被取代的符号。一个形式文法中必须有一个起始符号；这个起始符号属于非终结符的集合。
在上下文无关文法中，每个推导规则的左边只能有一个非终结符而不能有两个以上的非终结符或终结符。并非所有的语言都可以被上下文无关文法产生。

推导规则

一种语法的定义由推导规则构成。每个规则规定什么词位可以重写为什么别的词位。这些规则可以用来剖析字符串，也可以用来产生字符串。每个规则有左边和右边。左边有可以被取代的字符串，而右边有可以取代左边的字符串。规则的写法一般为左边右边。比如，z0 → z1 这个规则规定z0 可以重写为z1。左边为一个非终结符，但是右边不一定是个终结符。

例子

下面的形式文法代表一个整数。整数可能是有符号，就是说，可能是负数。下面使用巴科斯范式的变种来表示：

<integer> ::= ['-'] <digit> {<digit>}
<digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
在这个例子之中，符号 (-,0,1,2,3,4,5,6,7,8,9) 都是终结符，而 <digit> 和 <integer> 都是非终结符。