【发布时间】:2017-12-17 16:39:45
【问题描述】:
我的问题就是我的规则
此代码必须从这种格式的文件中检测 URL:
ftp://[<user>[:<password>]@]<host>[:<port>]/<path>[;<ftptype>].
我已经更新了 homebrew 和 flex。我正在使用“flex example.flex”进行编译,并尝试使用“./a.out file.txt”执行
我的规则:
LETRA [A-Za-z]
DIG [0-9]
CAR {"_"|"$"}
IDENT {LETRA|"$"|"_"}({LETRA|DIG|"_"|"$"|"-"}*)
%%
{LETRA}({LETRA|DIG}{3,})({LETRA}|{DIG}*) {
printf("(<user>,%s)",yytext);
}
{LETRA}{CAR}({LETRA|DIG|CAR}{4,})({LETRA|DIG|CAR}*)|
{LETRA}{LETRA|DIG}{CAR}({LETRA|DIG|CAR}{3,})|
{LETRA}({LETRA|DIG}{2}){CAR}{LETRA|DIG|CAR}{2,}|
{LETRA}({LETRA|DIG}{3}){CAR}({LETRA|DIG|CAR}+)|
{LETRA}({LETRA|DIG}{4}){CAR}({LETRA|DIG|CAR}*)|
{LETRA}({LETRA|DIG}{5}){CAR}({LETRA|DIG|CAR}*) {printf("(<password>,%s)",yytext);}
({IDENT[.]}+{IDENT})+ {
printf("(<host>,%s)",yytext);
}
{DIG}({DIG})* {
printf("(<port>,%s)",yytext);
}
({IDENT[/]}+{IDENT})+ {
printf("(<path>,%s)",yytext);
}
{[#]DIG}({DIG})* {
printf("(<ftptype>,%s)",yytext);
}
. {printf("%s",yytext);}
%%
int main(){
yylex();
}
【问题讨论】:
标签: c flex-lexer lex