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}