lex og yacc er to grunnleggende verktøy som brukes i UNIX-operativsystemet for å lage tekstbehandlingsprogrammer, for eksempel kompilatorer og tolker.
LEX (Lexical Analyzer Generator) er et program som genererer leksikale analysatorer, som er ansvarlige for å bryte opp en strøm av tegn i individuelle "tokens". For eksempel kan en leksikalsk analysator gjenkjenne ord, tall, skilletegn eller andre logiske enheter i en tekstfil. Den utfører den første fasen av kompileringen ved å konvertere karakterstrømmer til en sekvens av tokens.
YACC (Yet Another Compiler Compiler) er en parsergenerator som lager parsere, som er programmer som kan analysere den grammatiske strukturen til en streng med tokens. Parsere verifiserer syntaksen til inngangen og konstruerer et abstrakt syntakstre (AST) som representerer strukturen til programmet. Denne abstrakte representasjonen brukes deretter til videre kompilering eller tolkning.
Lex og Yacc brukes vanligvis sammen for å bygge språkprosessorer. Lex-programmet genererer en leksikalsk analysator som tokeniserer inndatateksten, og yacc-programmet genererer en parser som sjekker syntaksen til den tokeniserte inngangen og bygger AST. Sammen utgjør de et kraftig verktøysett for å lage ulike språkbehandlingsapplikasjoner, inkludert kompilatorer, tolker, tekstredigerere og mer.