상세 컨텐츠

본문 제목

Scanner.pas

RyuLib/RyuLib for Delphi

by 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 문자 처리가 됩니다.






관련글 더보기