1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpackage org.antlr.runtime {
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	import flash.filesystem.File;
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	import flash.filesystem.FileMode;
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	import flash.filesystem.FileStream;
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	import flash.system.System;
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	public class ANTLRFileStream extends ANTLRStringStream {
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		protected var _file:File;
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		public function ANTLRFileStream(file:File, encoding:String = null) {
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			load(file, encoding);
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		}
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		public function load(file:File, encoding:String = null):void {
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			_file = file;
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			if (encoding == null) {
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver				encoding = File.systemCharset;
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			}
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			var stream:FileStream = new FileStream();
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			try {
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver				stream.open(file, FileMode.READ);
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver				data = stream.readMultiByte(file.size, encoding);
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver				n = data.length;
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			}
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			finally {
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver				stream.close();
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			}
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		}
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		public override function get sourceName():String {
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver			return _file.name;
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		}
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	}
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}