Buigen

Flex is een snelle lexicale analysator.
Download nu

Buigen Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • GPL
  • Prijs:
  • FREE
  • Naam uitgever:
  • Vern Paxson
  • Uitgever website:

Buigen Tags


Buigen Beschrijving

Flex is een snelle lexicale analysator. Flex is een snelle lexicalanalysator.flex is een snelle lexicale analyser-generator. Het is een hulpmiddel voor het genereren van programma's die patroon-matching op tekst uitvoeren. Flex is een niet-GNU-vrije implementatie van het bekende Lex-programma.flex is een hulpmiddel voor het genereren van scanners: programma's die lexicale patronen in tekst hebben herkend. Flex leest de gegeven invoerbestanden of de standaardinvoer als er geen bestandsnamen worden gegeven, voor een beschrijving van een scanner om te genereren. De beschrijving is in de vorm van paren van reguliere uitdrukkingen en C-code, regels genaamd. Flex genereert als uitgang A C-bronbestand, `lex.yy.c ', die een routine' yylex () 'definieert. Dit bestand is gecompileerd en gekoppeld aan de `-lfl '-bibliotheek om een uitvoerbaar bestand te maken. Wanneer het uitvoerbare bestand wordt uitgevoerd, analyseert het de invoer voor het voorkomen van de reguliere uitdrukkingen. Wanneer het er een vindt, voert het de overeenkomstige C-code uit. Sommige eenvoudige voorbeelden eerste enkele eenvoudige voorbeelden om de smaak te krijgen van hoe men flex gebruikt. De volgende FLEX-ingang Hiermee wordt een scanner aangegeven die wanneer het de string "Gebruikersnaam" wordt vervangen door de inlognaam van de gebruiker: %% Gebruikersnaam PrintF ("% S", GetLogin ()); standaard, elke tekst die niet is afgestemd op een flex Scanner wordt gekopieerd naar de uitgang, dus het netto-effect van deze scanner is om het invoerbestand naar de uitvoer te kopiëren met elk optreden van "gebruikersnaam" uitgebreid. In deze input is er slechts één regel. "Gebruikersnaam" is het patroon en de "printf" is de actie. De "%%" markeert het begin van de regels. Hier is nog een eenvoudig voorbeeld: int num_lines = 0, num_chars = 0; %% n ++ num_lines; ++ num_chars; ++ num_chars; %% Main () {yylex (); printf ("# lijnen =% D, aantal tekens =% DN", num_lines, num_chars); } Deze scanner telt het aantal tekens en het aantal regels in de invoer (het produceert geen andere uitgang dan het eindverslag over de tellingen). De eerste regel verklaart twee globalen, "num_lines" en "num_chars", die zowel binnen 'yylex ()' als in de "Main () 'routine toegankelijk zijn, gedeclareerd na de tweede" %% ". Er zijn twee regels, een die overeenkomt met een nieuwe lijn ("N") en stimuleert zowel het aantal tellen als het tekentelling en een die overeenkomt met elk ander teken dan een nieuwe lijn (aangegeven door de "." Regelmatige expressie). Een iets gecompliceerder voorbeeld: / * -scanner voor een speelgoed Pascal-achtige taal * /% {/ * heeft dit nodig voor de oproep naar ATOF () hieronder * / # omvatten %} cijfer ID * %% {cijfer} + {printf ("een geheel getal:% s (% D) n", YYTEXT, ATOI (YYTEXT)); } {Cijfer} + "." {Cijfer} * {printf ("een vlotter:% s (% g) n", yytext, atof (yytext)); } Als | begin | End | Procedure | Functie {printf ("een trefwoord:% sn", yytext); } {ID} printf ("een identifier:% sn", yytext); "+" | "-" | "*" | "/" Printf ("een operator:% sn", yytext); "{" * "}" / * Eet One-Line Reacties * / + / * Eet WhiteSpace * /. printf ("niet-herkende karakter:% SN", YYTEXT); %% Main (ARGC, ARGV) INGREG; CHAR ** ARGV; {++ ARGV, --ARGC; / * OVER OVER PROGRAMMA NAAM * / INDIEN (ARGC> 0) YYIN = FOPEN (ARGV , "R"); anders yyin = stdin; yylex (); } Dit is het begin van een eenvoudige scanner voor een taal zoals Pascal. Het identificeert verschillende soorten tokens en rapporten over wat het heeft gezien. De details van dit voorbeeld worden uitgelegd in de volgende secties.


Buigen Gerelateerde software

Alice ml

Alice ML is een functionele, gelijktijdige, gedistribueerde programmeertaal op basis van standaard ML. ...

210

Downloaden