113481Sgiacomo.travaglini@arm.com#!/usr/bin/env python
213481Sgiacomo.travaglini@arm.com#
313481Sgiacomo.travaglini@arm.com# Copyright 2007 Neal Norwitz
413481Sgiacomo.travaglini@arm.com# Portions Copyright 2007 Google Inc.
513481Sgiacomo.travaglini@arm.com#
613481Sgiacomo.travaglini@arm.com# Licensed under the Apache License, Version 2.0 (the "License");
713481Sgiacomo.travaglini@arm.com# you may not use this file except in compliance with the License.
813481Sgiacomo.travaglini@arm.com# You may obtain a copy of the License at
913481Sgiacomo.travaglini@arm.com#
1013481Sgiacomo.travaglini@arm.com#      http://www.apache.org/licenses/LICENSE-2.0
1113481Sgiacomo.travaglini@arm.com#
1213481Sgiacomo.travaglini@arm.com# Unless required by applicable law or agreed to in writing, software
1313481Sgiacomo.travaglini@arm.com# distributed under the License is distributed on an "AS IS" BASIS,
1413481Sgiacomo.travaglini@arm.com# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1513481Sgiacomo.travaglini@arm.com# See the License for the specific language governing permissions and
1613481Sgiacomo.travaglini@arm.com# limitations under the License.
1713481Sgiacomo.travaglini@arm.com
1813481Sgiacomo.travaglini@arm.com"""Generic utilities for C++ parsing."""
1913481Sgiacomo.travaglini@arm.com
2013481Sgiacomo.travaglini@arm.com__author__ = 'nnorwitz@google.com (Neal Norwitz)'
2113481Sgiacomo.travaglini@arm.com
2213481Sgiacomo.travaglini@arm.com
2313481Sgiacomo.travaglini@arm.comimport sys
2413481Sgiacomo.travaglini@arm.com
2513481Sgiacomo.travaglini@arm.com
2613481Sgiacomo.travaglini@arm.com# Set to True to see the start/end token indices.
2713481Sgiacomo.travaglini@arm.comDEBUG = True
2813481Sgiacomo.travaglini@arm.com
2913481Sgiacomo.travaglini@arm.com
3013481Sgiacomo.travaglini@arm.comdef ReadFile(filename, print_error=True):
3113481Sgiacomo.travaglini@arm.com    """Returns the contents of a file."""
3213481Sgiacomo.travaglini@arm.com    try:
3313481Sgiacomo.travaglini@arm.com        fp = open(filename)
3413481Sgiacomo.travaglini@arm.com        try:
3513481Sgiacomo.travaglini@arm.com            return fp.read()
3613481Sgiacomo.travaglini@arm.com        finally:
3713481Sgiacomo.travaglini@arm.com            fp.close()
3813481Sgiacomo.travaglini@arm.com    except IOError:
3913481Sgiacomo.travaglini@arm.com        if print_error:
4013481Sgiacomo.travaglini@arm.com            print('Error reading %s: %s' % (filename, sys.exc_info()[1]))
4113481Sgiacomo.travaglini@arm.com        return None
42