Linguagens e expressões regulares
Alfabetos, palavras, operações sobre linguagens e a sintaxe das expressões regulares.
Nesta página
Antes de falar de máquinas, é preciso falar de dados. Um autómato lê palavras sobre um alfabeto, e uma linguagem é um conjunto de palavras. Esta página fixa esse vocabulário e apresenta as expressões regulares, a notação compacta para descrever linguagens simples. Se “conjunto”, “união” e “função” soam a novidade, revê conjuntos e relações primeiro.
Alfabetos e palavras
Um alfabeto é um conjunto finito e não vazio de símbolos. Exemplos: (o alfabeto binário), ou o alfabeto ASCII dos teclados.
Uma palavra (ou cadeia) sobre é uma sequência finita de símbolos de . Exemplos sobre : , , . A palavra vazia, escrita , é a sequência com zero símbolos. Não confundas com um símbolo do alfabeto: é a ausência de símbolos.
O comprimento de uma palavra é o número de símbolos que ela contém. Assim e .
A concatenação cola duas palavras: se e , então . Vale , e é o elemento neutro: para toda a palavra . A potência abrevia concatenado consigo próprio vezes, com .
designa o conjunto de todas as palavras sobre , incluindo . É infinito mesmo quando é finito. Por exemplo, .
Linguagens e operações
Uma linguagem sobre é um subconjunto qualquer de . Exemplos sobre :
- (infinita);
- (finita);
- (a linguagem vazia, sem palavras);
- (a linguagem só com a palavra vazia).
Cuidado com a distinção entre e : não contém nada, nem ; contém uma palavra, a vazia. É o erro mais barato desta cadeira e aparece em testes.
Sobre linguagens definem-se três operações, além das operações de conjuntos (união, interseção, complemento):
- Concatenação: . Cola cada palavra de com cada palavra de .
- Potência: , .
- Estrela de Kleene: (zero ou mais cópias coladas).
Exemplo: se , então e contém , , , , , e por aí fora.
Expressões regulares
Uma expressão regular sobre é uma fórmula que descreve uma linguagem, construída com estas regras:
- descreve a linguagem vazia; descreve ; cada descreve .
- Se descreve e descreve , então descreve , descreve e descreve . Na prática escreve-se ou em vez de , e omite-se o .
A precedência poupa parênteses: estrela primeiro, depois concatenação, depois união. Assim lê-se , ou seja, “um seguido de zero ou mais , ou um ”.
Exemplos sobre :
| Expressão | Linguagem descrita |
|---|---|
| zeros seguidos de uns (inclui ) | |
| todas as palavras, ou seja | |
| palavras que começam em | |
| palavras de comprimento par que terminam em |
Exemplo resolvido: do enunciado à expressão
Enunciado: sobre , escreve uma expressão regular para a linguagem das palavras que têm pelo menos dois consecutivos.
Raciocínio: “pelo menos dois consecutivos” significa que algures na palavra aparece o bloco . Antes desse bloco pode estar qualquer palavra (), e depois dele também. Logo a expressão é:
Confirma com casos: pertence (escolhe dos dois lados). pertence (prefixo , sufixo ). não pertence, porque qualquer decomposição exigiria dois seguidos algures, e não os tem. Repara que a verificação “não pertence” usa sempre o mesmo argumento: supõe uma decomposição e mostra que é impossível. Este estilo volta na página sobre limites das linguagens regulares.
Para levar para a próxima página
Linguagens são conjuntos de palavras, e expressões regulares descrevem uma família delas: as linguagens regulares. A próxima pergunta é mecânica: que máquinas reconhecem exatamente estas linguagens? São os autómatos finitos.