lexer_test/
lexer_test.rs

1// This file is released into Public Domain.
2
3use slr_parser::{Lexer, Source};
4use std::env;
5use std::fs::File;
6use std::io::prelude::*;
7use std::path::Path;
8
9fn main()
10{
11	let mut args = env::args();
12	if args.len() < 2
13	{
14		panic!("Pass a file to test with");
15	}
16
17	args.next();
18	let filename = args.next().unwrap();
19
20	let mut src = String::new();
21	File::open(&filename)
22		.unwrap()
23		.read_to_string(&mut src)
24		.unwrap();
25
26	let mut src = Source::new(Path::new(&filename), &src);
27	let mut lexer = Lexer::new(&mut src);
28
29	loop
30	{
31		let tok = lexer.next();
32		match tok.as_ref()
33		{
34			Some(res) => match res.as_ref()
35			{
36				Ok(tok) => println!("{:?}", tok.kind),
37				Err(err) =>
38				{
39					println!("{}", err.text);
40					break;
41				}
42			},
43			None => break,
44		}
45	}
46}