v/cmd/tools/vscan.v

29 lines
757 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()')
}
}
}