사용언어 lex

첫번째 단계
%%

[\n\t ]+                        ;

[a-zA-Z]                        { printf("%s ", yytext); }

%%


두번째 단계.
결국 생각을 해보니 이것 역시 FSA 라서 그저 lex 로도 해결 된다는 깨우침을 얻었음.


letter          [-_0-9A-Za-z]

mailname        {letter}({letter}|\.)*{letter}
domain_name     [0-9A-Za-z][-0-9A-Za-z]*[0-9A-Za-z]
last_domain     com|net|co\.kr

mail_address    {mailname}@({domain_name}\.)+{last_domain}

%%

[ \t\n]                 ;

{mail_address}  { printf("true.\n"); }

.+                              { printf("false.\n"); }

%%

메일주소 규칙 : 영어대소문자 숫자 하이픈 언더바 '.' 사용 가능. 단 '.' 은 시작과 끝에 지정 불가. 2자 이상.
도메인 네임 규칙 : 영어대소문자 숫자 하이픈 사용가능. 단 하이픈은 시작과 끝에 지정 불가. 2자 이상.

co.co.kr 이 도메인은 적법한거 같아서 별 문제 없을거 같다.

실행 예..
zennith@zeropage:~/work/lexandyacc$ ./mailscanner
asdflkhas@asdlghas.asdfkhasd.asdkjghasdf.com
true.
----__--__....asdflkhasd.asdlkh@asd--asdg.co.kr
true.
.asdf@asgdlkh_as.comm
false.
----
토이 토이/메일주소셀렉터
Retrieved from http://wiki.zeropage.org/wiki.php/토이/메일주소셀렉터/김남훈
last modified 2021-02-07 05:31:21