U računarstvu i lingvistici, formalna gramatika, ili ponekad jednostavno gramatika, jest precizan opis formalnog jezika - to jest, skupa nizova znakova (stringova). Dvije glavne kategorije formalnih gramatika su generativne gramatike, koje predstavljaju skup pravila za generiranje nizova znakova jezika, te analitičke gramatike, koje predstavljaju skup pravila za analizu pripadnosti niza znakova jeziku. Ukratko, analitička gramatika opisuje kako prepoznati kad je niz znakova u skupu, dok generativna gramatika opisuje kako pisati samo one nizove znakova u skupu.