Skip to content

Commit 15deabf

Browse files
committed
parser-gcc: use named capture groups in regular expressions
... so that we can parse results that have the referenced capture groups in a different order.
1 parent 5ad571c commit 15deabf

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/lib/parser-gcc.cc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class AbstractTokenFilter: public ITokenizer {
6060
ITokenizer *agent_;
6161
};
6262

63-
#define RE_LOCATION "([^ #:\"][^:\"]+)(?::([0-9]+))?(?::([0-9]+))?"
63+
#define RE_LOCATION "(?<file>[^ #:\"][^:\"]+)(?::(?<line>[0-9]+))?(?::(?<col>[0-9]+))?"
6464
#define RE_TOOL_SUFFIX "(?: <--\\[[^\\]]+\\])?$"
6565
#define RE_FNC_SMATCH "(\\(null\\)|[_A-Za-z][_A-Za-z0-9]*)\\(\\)"
6666

@@ -99,9 +99,9 @@ class Tokenizer: public ITokenizer {
9999
RE("^" RE_LOCATION /* evt/msg */ ": (" RE_EVENT "): (.*)$");
100100

101101
const RE reSmatch_ =
102-
RE("^([^:]+):([0-9]+)() " /* file:line */
103-
RE_FNC_SMATCH /* fnc */
104-
" ([a-z]+): (.*)$") /* evt: msg */;
102+
RE("^(?<file>[^:]+):(?<line>[0-9]+)() " /* file:line */
103+
RE_FNC_SMATCH /* fnc */
104+
" ([a-z]+): (.*)$") /* evt: msg */;
105105
};
106106

107107
EToken Tokenizer::readNext(DefEvent *pEvt)
@@ -159,13 +159,13 @@ EToken Tokenizer::readNext(DefEvent *pEvt)
159159
return T_UNKNOWN;
160160

161161
// read file name, event, and msg
162-
pEvt->fileName = sm[/* file */ 1];
162+
pEvt->fileName = sm["file"];
163163

164164
// parse line number
165-
pEvt->line = parse_int(sm[/* line */ 2]);
165+
pEvt->line = parse_int(sm["line"]);
166166

167167
// parse column number
168-
pEvt->column = parse_int(sm[/* col */ 3]);
168+
pEvt->column = parse_int(sm["col"]);
169169

170170
return tok;
171171
}

0 commit comments

Comments
 (0)