diff options
author | David Brazdil <dbrazdil@google.com> | 2015-05-12 16:56:00 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-05-12 16:56:01 +0000 |
commit | 2d999e0588b008ec68a9fbda97dd32fd03c22364 (patch) | |
tree | 4d11d83ad937c3d7a34238727e6b5c06bf98942d /tools/checker/file_format/c1visualizer/parser.py | |
parent | d62e2d0e936770928b5d155a6c8f720e095f7e4a (diff) | |
parent | 258802399dfc34ce4c628f386defa5bfdf8cf2f0 (diff) |
Merge "Revert "ART: Split Checker into smaller files""
Diffstat (limited to 'tools/checker/file_format/c1visualizer/parser.py')
-rw-r--r-- | tools/checker/file_format/c1visualizer/parser.py | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/tools/checker/file_format/c1visualizer/parser.py b/tools/checker/file_format/c1visualizer/parser.py deleted file mode 100644 index f34161b297..0000000000 --- a/tools/checker/file_format/c1visualizer/parser.py +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from common.logger import Logger -from file_format.common import SplitStream -from file_format.c1visualizer.struct import C1visualizerFile, C1visualizerPass - -import re - -class C1ParserState: - OutsideBlock, InsideCompilationBlock, StartingCfgBlock, InsideCfgBlock = range(4) - - def __init__(self): - self.currentState = C1ParserState.OutsideBlock - self.lastMethodName = None - -def __parseC1Line(line, lineNo, state, fileName): - """ This function is invoked on each line of the output file and returns - a pair which instructs the parser how the line should be handled. If the - line is to be included in the current group, it is returned in the first - value. If the line starts a new output group, the name of the group is - returned in the second value. - """ - if state.currentState == C1ParserState.StartingCfgBlock: - # Previous line started a new 'cfg' block which means that this one must - # contain the name of the pass (this is enforced by C1visualizer). - if re.match("name\s+\"[^\"]+\"", line): - # Extract the pass name, prepend it with the name of the method and - # return as the beginning of a new group. - state.currentState = C1ParserState.InsideCfgBlock - return (None, state.lastMethodName + " " + line.split("\"")[1]) - else: - Logger.fail("Expected output group name", fileName, lineNo) - - elif state.currentState == C1ParserState.InsideCfgBlock: - if line == "end_cfg": - state.currentState = C1ParserState.OutsideBlock - return (None, None) - else: - return (line, None) - - elif state.currentState == C1ParserState.InsideCompilationBlock: - # Search for the method's name. Format: method "<name>" - if re.match("method\s+\"[^\"]*\"", line): - methodName = line.split("\"")[1].strip() - if not methodName: - Logger.fail("Empty method name in output", fileName, lineNo) - state.lastMethodName = methodName - elif line == "end_compilation": - state.currentState = C1ParserState.OutsideBlock - return (None, None) - - else: - assert state.currentState == C1ParserState.OutsideBlock - if line == "begin_cfg": - # The line starts a new group but we'll wait until the next line from - # which we can extract the name of the pass. - if state.lastMethodName is None: - Logger.fail("Expected method header", fileName, lineNo) - state.currentState = C1ParserState.StartingCfgBlock - return (None, None) - elif line == "begin_compilation": - state.currentState = C1ParserState.InsideCompilationBlock - return (None, None) - else: - Logger.fail("C1visualizer line not inside a group", fileName, lineNo) - -def ParseC1visualizerStream(fileName, stream): - c1File = C1visualizerFile(fileName) - state = C1ParserState() - fnProcessLine = lambda line, lineNo: __parseC1Line(line, lineNo, state, fileName) - fnLineOutsideChunk = lambda line, lineNo: \ - Logger.fail("C1visualizer line not inside a group", fileName, lineNo) - for passName, passLines, startLineNo in SplitStream(stream, fnProcessLine, fnLineOutsideChunk): - C1visualizerPass(c1File, passName, passLines, startLineNo + 1) - return c1File |