1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/cmd/tools/vscan.v

29 lines
763 B
V

module main
import os
import v.scanner
import v.pref
import v.token
import flag
fn main() {
mut fp := flag.new_flag_parser(os.args#[2..])
fp.application('v scan')
fp.version('0.0.1')
fp.description('\nScan .v source files, and print the V tokens contained in them.')
fp.arguments_description('PATH [PATH]...')
fp.limit_free_args_to_at_least(1)!
pref_ := pref.new_preferences()
mut all_paths := fp.remaining_parameters()
for path in all_paths {
mut scanner_ := scanner.new_scanner_file(path, .parse_comments, pref_)!
mut tok := token.Token{}
for tok.kind != .eof {
tok = scanner_.scan()
pos := tok.pos()
location := '${path}:${pos.line_nr + 1}:${pos.col + 1}:'
println('${location:-32} | pos: ${pos.pos:-5} | ${tok.debug()}')
}
}
}