RyuLib/RyuLib for Delphi
Scanner.pas
ryujt
2014. 10. 7. 00:45
프로그래밍 소스 코드를 스캐닝하고 싶을 때 사용 할 수 있는 유닛입니다. 스캐닝 후 공백 등의 화이트 스페이스와 코멘트는 무시하고, 특수문자(ttSpecialChar), 문자열(ttString), 숫자(ttNumber), 식별자(ttIdentifier)를 찾아 줍니다. 제가 예전에 계산기 및 프로그래밍 언어를 만들 때 사용하던 것입니다.
소스보기: http://goo.gl/Ucev3A
사용법
procedure ....; var Scanner : TScanner; Token : TToken; begin Scanner := TScanner.Create; Scanner.SetText( '소스코드...' ); repeat Token := Scanner.GetNextToken; if Token.TokenType = ttString then WriteLn( Format('* %4d:%3d - ''%s''', [Token.Line, Token.Col, Token.Text]) ); until Scanner.IsEOF; ... end;
7: SetText 메소드를 이용해서 스캐닝하고자 하는 소스코드 내용을 입력합니다.
9-16: 소스 코드의 끝까지 검색하면서 반복합니다.
10: GetNextToken 메소드는 현재 위치 이후의 토큰을 찾아 줍니다.
12-15: 찾아낸 토큰(TToken)에는 소스 내의 라인 위치 및 토큰의 타입 등을 알 수가 있습니다.
기타
- property PascalStyle : boolean (read / write)
- 파스칼 코드를 스캐닝 할 때는 true로 설정되어 있어야 합니다. false라면 C 언어 스타일이 됩니다.
- property UseStringEscape :boolean (read)
- C 언어 스타일이 되면, 문자열 내에서 Escape 문자 처리가 됩니다.