Search Postgresql Archives

Is there a way make the lex program match multiple line?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi community,
I am making a config program, use the lex program to analyse input.

/*
    config.l
        The lex rule file for toysql
    Wen Yi
*/
%option noyywrap
%{
#include <string.h>
#include <stdlib.h>   
%}
%%
-[0-9]+.[0-9]+|[0-9]+.[0-9]+|-[0-9]+|[0-9]+ { printf("Number = %lf\n", atof(yytext)); }
[a-zA-Z_0-9]+  { printf("Token = %s\n", yytext); }
['].+['] {
    yytext[yyleng - 1] = '\0';
    memmove(yytext, yytext + 1, yyleng - 1);
    printf("String = %s\n", yytext);
}

; {}
. { printf("Anything: '%s'\n", yytext);  }
%%
int main()
{
    yylex();
    return 0;
}

But when I try to run it:

[beginnerc@bogon config]$ ./a.out
'This is a single line string'
String = This is a single line string

'This is a multiple line string
Anything: '''
Token = This
Anything: ' '
Token = is
Anything: ' '
Token = a
Anything: ' '
Token = multiple
Anything: ' '
Token = line
Anything: ' '
Token = string

Can someone give me some advice to make the ['].+['] match multiple string?
Thanks in advance!

Yours,
Wen Yi


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux