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