Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   lex.1p    ( 1 )

генерировать программы для лексических задач (РАЗРАБОТКА) (generate programs for lexical tasks (DEVELOPMENT))

Примеры (Examples)

The following is an example of a lex program that implements a
       rudimentary scanner for a Pascal-like syntax:

%{ /* Need this for the call to atof() below. */ #include <math.h> /* Need this for printf(), fopen(), and stdin below. */ #include <stdio.h> %}

DIGIT [0-9] ID [a-z][a-z0-9]*

%%

{DIGIT}+ { printf("An integer: %s (%d)\n", yytext, atoi(yytext)); }

{DIGIT}+"."{DIGIT}* { printf("A float: %s (%g)\n", yytext, atof(yytext)); }

if|then|begin|end|procedure|function { printf("A keyword: %s\n", yytext); }

{ID} printf("An identifier: %s\n", yytext);

"+"|"-"|"*"|"/" printf("An operator: %s\n", yytext);

"{"[^}\n]*"}" /* Eat up one-line comments. */

[ \t\n]+ /* Eat up white space. */

. printf("Unrecognized character: %s\n", yytext);

%%

int main(int argc, char *argv[]) { ++argv, --argc; /* Skip over program name. */ if (argc > 0) yyin = fopen(argv[0], "r"); else yyin = stdin;

yylex(); }