/runtime/Python2/src/antlr4/FileStream.py

https://github.com/millergarym/antlr4
Python | 57 lines | 14 code | 8 blank | 35 comment | 1 complexity | 377e855c2855ac6cdadfe056531402f9 MD5 | raw file
  1. #
  2. # [The "BSD license"]
  3. # Copyright (c) 2012 Terence Parr
  4. # Copyright (c) 2012 Sam Harwell
  5. # Copyright (c) 2014 Eric Vergnaud
  6. # All rights reserved.
  7. #
  8. # Redistribution and use in source and binary forms, with or without
  9. # modification, are permitted provided that the following conditions
  10. # are met:
  11. #
  12. # 1. Redistributions of source code must retain the above copyright
  13. # notice, this list of conditions and the following disclaimer.
  14. # 2. Redistributions in binary form must reproduce the above copyright
  15. # notice, this list of conditions and the following disclaimer in the
  16. # documentation and/or other materials provided with the distribution.
  17. # 3. The name of the author may not be used to endorse or promote products
  18. # derived from this software without specific prior written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  21. # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  22. # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  23. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  24. # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  25. # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  26. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  27. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  28. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  29. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. #
  31. #
  32. # This is an InputStream that is loaded from a file all at once
  33. # when you construct the object.
  34. #
  35. import codecs
  36. import unittest
  37. from antlr4.InputStream import InputStream
  38. class FileStream(InputStream):
  39. def __init__(self, fileName, encoding='ascii'):
  40. self.fileName = fileName
  41. # read binary to avoid line ending conversion
  42. with open(fileName, 'rb') as file:
  43. bytes = file.read()
  44. data = codecs.decode(bytes, encoding)
  45. super(type(self), self).__init__(data)
  46. class TestFileStream(unittest.TestCase):
  47. def testStream(self):
  48. stream = FileStream("FileStream.py")
  49. self.assertTrue(stream.size>0)