mib marked 2 inline comments as done.
mib added inline comments.
================
Comment at: lldb/examples/python/crashlog.py:669
+ r'(0x[0-9a-fA-F]{4,}) +' # addr (4
chars or more)
+ r'((.*)(?:(?: +\+ +)([0-9]+))|[^\s]+)' # symbol +
offset
)
----------------
kastiglione wrote:
> kastiglione wrote:
> > mib wrote:
> > > kastiglione wrote:
> > > > mib wrote:
> > > > > @kastiglione may be you have a better idea how to handle `symbol +
> > > > > offset` where ` + offset` might be optional.
> > > > symbol is always present?
> > > Technically, in the past the `offs` (symbol + offset) was optional:
> > > ```
> > > r'(?: +(.*))?'
> > > ```
> > > So I guess `symbol` could be missing.
> > Breaking it down, there is:
> >
> > 1. a symbol (maybe)
> > 2. the literal text " + " followed by a number (also maybe)
> >
> > I'll start start with 2:
> >
> > ```
> > \+ (\d+)
> > ```
> >
> > For the symbol, `.*`, it should instead have at least a length of 1. I'd
> > use `+` instead of `*`. And, it shouldn't be _any_ character. At the very
> > least it should be non-space, which is `\S`.
> >
> > To combine these at a high level it looks like:
> >
> > ```
> > (?:(<symbol>)(?:<offset>)?)?
> > ```
> >
> > Filling in these two with symbol='\S+' and offset=' \+ (\d+)', it becomes:
> >
> > ```
> > (?:(\S+)(?: \+ (\d+))?)?
> > ```
> >
> > Here's some python real session that minimally exercises this code:
> >
> > ```
> > % python
> > >>> import re
> > >>> pat = re.compile(r"(?:(\S+)(?: \+ (\d+))?)?")
> > >>> pat.match("func + 123").groups()
> > ('func', '123')
> > >>> pat.match("func").groups()
> > ('func', None)
> > >>> pat.match("").groups()
> > (None, None)
> > >>>
> > ```
> ```
> (?:(?: +\+ +)([0-9]+))
> ```
>
> Non-capturing groups are only needed when you use a quantifier, like `?`,
> `*`, or `+`. These regex has two non-capturing groups that don't use a
> quantifier, which means you can remove the groups:
>
> ```
> +\+ +([0-9]+)
> ```
Thanks for the tips! Regarding replacing the `.+` by `\S+` doesn't work because
the symbol name could have a space in it (for objc symbols).
I'll try to break down these regex in smaller ones to make it easier to debug
in the future.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146765/new/
https://reviews.llvm.org/D146765
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits