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