Flex.

flex é um analisador lexical rápido.
Baixe Agora

Flex. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • GPL
  • Preço:
  • FREE
  • Nome do editor:
  • Vern Paxson
  • Site do editor:

Flex. Tag


Flex. Descrição

O Flex é um analisador lexical rápido. O Flex é um analisador lexical rápido.flex é um gerador de analisadores lexicais rápidos. É uma ferramenta para gerar programas que realizam correspondência de padrões no texto. O Flex é uma implementação livre de não-GNU do conhecido Programa Lex.Flex é uma ferramenta para gerar scanners: programas que reconheceram padrões lexicais no texto. O Flex lê os arquivos de entrada dados ou sua entrada padrão se nenhum nome de arquivo forem dados, para obter uma descrição de um scanner para gerar. A descrição está na forma de pares de expressões regulares e código C, chamadas regras. Flex gera como saída um arquivo de fonte C, `lex.yy.c ', que define uma rotina` yylex ()'. Este arquivo é compilado e vinculado à biblioteca `-LFL 'para produzir um executável. Quando o executável é executado, analisa sua entrada para ocorrências das expressões regulares. Sempre que encontrar um, executa o código C correspondente.Alguns exemplos simplesFirst alguns exemplos simples para obter o sabor de como se usa flex. A seguinte entrada Flex especifica um scanner que sempre que encontra a string "Nome de usuário" String substituí-lo pelo nome de login do usuário: %% Nome de usuário Printf ("% S", GetLogin ()); Por padrão, qualquer texto não correspondido por um flex O scanner é copiado para a saída, portanto, o efeito líquido desse scanner é copiar seu arquivo de entrada para sua saída com cada ocorrência de "nome de usuário" expandido. Nesta entrada, há apenas uma regra. "Nome de usuário" é o padrão e o "printf" é a ação. O "%%" marca o início das regras. Aqui está outro exemplo simples: int num_lines = 0, num_chars = 0; %% n ++ num_lines; ++ num_chars;. ++ num_chars; %% principal () {yylex (); printf ("# de linhas =% d, número de caracteres =% dn", num_lines, num_chars); } Este scanner conta o número de caracteres e o número de linhas em sua entrada (não produz nenhuma saída diferente do relatório final sobre as contagens). A primeira linha declara dois globais, "num_lines" e "num_chars", que são acessíveis tanto dentro do `Yylex () 'quanto na rotina' principal () 'declarada após o segundo" %% ". Existem duas regras, uma que corresponde a uma nova linha ("n") e incrementa a contagem de linha e a contagem de caracteres, e uma que corresponde a qualquer caractere diferente de uma nova linha (indicada pela expressão regular ".". Um exemplo mais complicado: / * scanner para uma linguagem de brinquedo Pascal * /% {/ * precisa disso para a chamada para ATOF () abaixo * / # incluem %} dígito ID * %% {dígito} + {printf ("um inteiro:% s (% d) n", yytext, atoi (yytext)); } {Dígito} + "." {Dígito} * {printf ("um float:% s (% g) n", yytext, nof (yytext)); } Se | Begin | End | Procedimento | Função {Printf ("Uma palavra-chave:% sn", yytext); } {ID} printf ("um identificador:% sn", yytext); "+" | "-" | "*" | "/" printf ("operador:% sn", yytext); "{" * "}" / * coma comentários one-line * / + / * coma espaço em branco * /. printf ("Caráter não reconhecido:% SN", yytext); %% principal (argc, argv) int argc; char ** argv; {++ argv, --argc; / * Passar o nome do programa * / se (argc> 0) yyin = fopen (argv , "r"); mais yyin = stdin; yylex (); } Este é o começo de um simples scanner para uma linguagem como Pascal. Identifica diferentes tipos de tokens e relatórios sobre o que viu. Os detalhes deste exemplo serão explicados nas seções a seguir.


Flex. Software Relacionado

Alice ml.

Alice ML é uma linguagem de programação distribuída funcional, simultânea, com base na ml padrão. ...

210

Download

DOS33.

DOS33 é uma coleção de utilitários que irão extrair a Apple] [Imagens de disco e executar programas básicos puros da AppleSoft. ...

211

Download