gramática lexical - Lexical grammar
Em ciência da computação , uma gramática lexical é uma gramática formal que define a sintaxe de fichas . O programa é escrito usando caracteres que são definidos pela estrutura lexical da língua utilizada. O conjunto de caracteres é equivalente ao alfabeto usado por qualquer linguagem escrita. A gramática lexical estabelece as regras que regem como uma sequência de caracteres é dividida em subseqüências de caracteres, cada parte que representa um token individual. Este é frequentemente definida em termos de expressões regulares .
Por exemplo, a gramática lexical para muitas linguagens de programação especifica que uma cadeia literal começa com um " caráter e continua até que uma correspondência " é encontrado ( escapar torna isso mais complicado), que um identificador é um alfanuméricos seqüência (letras e dígitos, geralmente também permitindo sublinhados, e não permitindo dígitos iniciais), e que um número inteiro literal é uma sequência de dígitos. Assim, na seguinte sequência de caracteres "ABC" xyz1 23 os tokens são corda , identificador e número (mais fichas de espaço em branco), porque o carácter de espaço termina a sequência de caracteres que constituem o identificador. Além disso, certas sequências são categorizados como palavras-chave - estes têm, geralmente, a mesma forma que os identificadores (geralmente palavras alfabética), mas são classificados separadamente; formalmente eles têm um tipo de token diferente.
Exemplos
expressões regulares para regras lexicais comuns seguem (por exemplo, C).
corda unescaped literal (citação, seguido por não-aspas, terminando em uma citação):
"[^"]*"
corda escapou literal (citação, seguido por caracteres de escape ou não-aspas, terminando em uma citação):
"(\.|[^\"])*"
Literal inteiro:
[0-9]+
decimal inteiro literal (não zero):
[1-9][0-9]*|0
inteiro hexadecimal literal:
0[Xx][0-9A-Fa-f]+
inteiro octal literal:
0[0-7]+
identificador:
[A-Za-z_][A-Za-z0-9_]*