Grammatica Prolog semplificato (lo scopo è Program):

      ::=  |  
       ::= . |  :- . | :- . |
		   ?- .
     ::=  | ( 	// Nota
      ::=  ) |  ,  
	       ::=  |  | 
	       ::= [] | [ 
         ::=  |  
     ::= ;  | ;  
       ::=  |  
   ::= ,  | ,   | 
      ::= not  | (  | ! | fail |  | 
		     |  is  | 
		    = 
  ::=  ) |  )   | 
		    )    | 
		    )    
 ::=     |  
           ::= =:= | =\= | < | >
         ::=  |  
     ::=   |   
         ::=  |  
  	       ::=  |  ^ 
     ::=   |   
       ::=  | (  ) |  ^ <>
  ::= - | +
     ::= * | /
     ::=  | 
          ::= stringa che inizi con una lettera maiuscola oppure con _
      ::= stringa che inizi con una lettera minuscola
       ::= è il simbolo "|" con cui si seleziona la testa e la coda
	           di una lista

Nota: 	la stringa "append(L1,L2,L3)" è sintatticamente corretta, 
	invece la stringa "append (L1,L2,L3)" non lo è; la grammatica
	dovrebbe essere scritta in modo da segnalare questo
	fatto.

    Source: geocities.com/tamanti/Interpreter/Relazione

               ( geocities.com/tamanti/Interpreter)                   ( geocities.com/tamanti)