I played around a bit after trying to understand Argyrios' adaptions for makeFileCharRange, and came up with this:
Pastebin: http://pastebin.com/g4ny0vbq Pasted into mail (will probalby not format well in most mail programs): Loc |-Expansion | |-ExpansionStart | | |-ExpansionStart | | | |-ExpansionStart :4:1, | | | |-ExpansionEnd :4:16, | | | `-Spelling :3:16, | | |-ExpansionEnd | | | |-ExpansionStart :4:1, | | | |-ExpansionEnd :4:16, | | | `-Spelling :3:19, | | `-Spelling :2:14, | |-ExpansionEnd | | |-ExpansionStart | | | |-ExpansionStart :4:1, | | | |-ExpansionEnd :4:16, | | | `-Spelling :3:16, | | |-ExpansionEnd | | | |-ExpansionStart :4:1, | | | |-ExpansionEnd :4:16, | | | `-Spelling :3:19, | | `-Spelling :2:17, | `-Spelling :1:14, `-Spelling |-Expansion | |-ExpansionStart | | |-ExpansionStart :4:1, | | |-ExpansionEnd :4:16, | | `-Spelling :3:16, | |-ExpansionEnd | | |-ExpansionStart :4:1, | | |-ExpansionEnd :4:16, | | `-Spelling :3:19, | `-Spelling :2:16, `-Spelling |-Expansion | |-ExpansionStart :4:1, | |-ExpansionEnd :4:16, | `-Spelling :3:18, `-Spelling |-Expansion | |-ExpansionStart | | |-ExpansionStart | | | |-ExpansionStart :4:3, | | | |-ExpansionEnd :4:15, | | | `-Spelling :3:16, | | |-ExpansionEnd | | | |-ExpansionStart :4:3, | | | |-ExpansionEnd :4:15, | | | `-Spelling :3:19, | | `-Spelling :2:14, | |-ExpansionEnd | | |-ExpansionStart | | | |-ExpansionStart :4:3, | | | |-ExpansionEnd :4:15, | | | `-Spelling :3:16, | | |-ExpansionEnd | | | |-ExpansionStart :4:3, | | | |-ExpansionEnd :4:15, | | | `-Spelling :3:19, | | `-Spelling :2:17, | `-Spelling :1:14, `-Spelling |-Expansion | |-ExpansionStart | | |-ExpansionStart :4:3, | | |-ExpansionEnd :4:15, | | `-Spelling :3:16, | |-ExpansionEnd | | |-ExpansionStart :4:3, | | |-ExpansionEnd :4:15, | | `-Spelling :3:19, | `-Spelling :2:16, `-Spelling |-Expansion | |-ExpansionStart :4:3, | |-ExpansionEnd :4:15, | `-Spelling :3:18, `-Spelling |-Expansion | |-ExpansionStart | | |-ExpansionStart :4:7, | | |-ExpansionEnd :4:13, | | `-Spelling :2:14, | |-ExpansionEnd | | |-ExpansionStart :4:7, | | |-ExpansionEnd :4:13, | | `-Spelling :2:17, | `-Spelling :1:14, `-Spelling |-Expansion | |-ExpansionStart :4:7, | |-ExpansionEnd :4:13, | `-Spelling :2:16, `-Spelling |-Expansion | |-ExpansionStart | | |-ExpansionStart :4:9, | | |-ExpansionEnd :4:12, | | `-Spelling :2:14, | |-ExpansionEnd | | |-ExpansionStart :4:9, | | |-ExpansionEnd :4:12, | | `-Spelling :2:17, | `-Spelling :1:14, `-Spelling |-Expansion | |-ExpansionStart :4:9, | |-ExpansionEnd :4:12, | `-Spelling :2:16, `-Spelling :4:11 On Wed, May 8, 2013 at 8:49 PM, Manuel Klimek <[email protected]> wrote: > On Wed, May 8, 2013 at 6:42 PM, Chandler Carruth <[email protected]>wrote: > >> >> On Wed, May 8, 2013 at 5:36 PM, Manuel Klimek <[email protected]> wrote: >> >>> In preparation for some docs on source locations I want to write I came >>> up >>> with the little helper method that visualizes source locations as a tree. >>> This is especially helpful when you have many nested levels of macro >>> expansions. >>> >>> Example output: >>> (SP=(:6:14), >>> EX=(SP=(:2:14), >>> ES=(:6:8), >>> EE=(:6:15))) >>> >>> SP = spelling >>> EX = expansion (if there's only a single location) >>> ES/EE = expansion start, expansion end (in case there's a range) >>> >>> Feel free to bikeshed about the details :D >>> >> >> Two high-level questions unrelated to the code itself: >> >> 1) Should we visualize these trees in roughly the same tree-ish syntax as >> AST trees? Or is it useful to visualize them on a single line *inside* the >> AST tree? >> > > I'm all for bike shed color ideas: can you create a paste with how you > want it to look? (I tried a few things, and they all looked bad - I'm no > good at that :P) > > >> 2) Is there a way to make this part of the testing of source locations >> which is currently done mostly through c-index-test's testing of the >> writing out of cursor details from libclang? >> > > Not sure - I really want a format that's for users; I'd be happy to create > something more machine-readable (JSON for example), so we can use it in > tests, though. > > One nit-picky detail: please don't use the initialisms.... At least, not >> *these*. I see SP, EX, and ES in this syntax and I think "wait, is this a >> stack machine asm chunk?? some other weird assembly language?" before my >> mind returns to sanity. ;] >> > > Just tell me what to use :) I don't have strong feelings about anything > here - the main problem is that with 4- or 5-layer macros, this can quickly > go deep and become unwieldy if names start getting too long (as you know me > I of course started with "SpellingLocation" etc :) > > Cheers, > /Manuel >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
