VB6ソースコードの字句解析するCOMコンポーネント作ってgithubにアップした

http://github.com/snaka/VBLex

以下のようなコードで字句解析結果を取得していろいろできる。

set vblex = CreateObject("VBLex.Tokenizer")
vblex.SourceText = WScript.StdIn.ReadAll
for each token in vblex.Tokens
  WScript.Echo token.Type & "::" & token.Text
next

ためしに、このコード自身を字句解析してみた。

C:\cygwin\home\snaka\work\lang\wsh\vblex>cscript linecount.vbs < linecount.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

6::set
9::vblex
3::=
9::CreateObject
4::(
5::VBLex.Tokenizer
4::)
2::

9::vblex
4::.
9::SourceText
3::=
9::WScript
4::.
9::StdIn
4::.
9::ReadAll
2::

6::for
6::each
9::token
6::in
9::vblex
4::.
9::Tokens
2::

9::WScript
4::.
9::Echo
9::token
4::.
6::Type
3::&
5::::
3::&
9::token
4::.
9::Text
2::

6::next
2::

2::

TokenのTypeが数字じゃわかりづらいので、もうちょっとブラッシュアップが必要かな。