Skip to content

Commit ef7e809

Browse files
committed
Cxx: add "applied" role to "unknown" kind
#include <stdio.h> int main(void) { return puts("hello, world\n"); } The parser with this change extracts "puts" with "applied" role of "unknown" kind. TODO: consider sub parsers. Signed-off-by: Masatake YAMATO <[email protected]>
1 parent 6301118 commit ef7e809

File tree

7 files changed

+52
-4
lines changed

7 files changed

+52
-4
lines changed

Tmain/list-kinds-full.d/stdout-expected.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#LETTER NAME ENABLED REFONLY NROLES MASTER DESCRIPTION
22
D macroparam no no 0 C parameters inside macro definitions
33
L label no no 0 C goto labels
4-
Y unknown no yes 3 C unknown identifier
4+
Y unknown no yes 4 C unknown identifier
55
d macro yes no 2 C macro definitions
66
e enumerator yes no 0 C enumerators (values inside an enumeration)
77
f function yes no 0 C function definitions
@@ -22,7 +22,7 @@ D macroparam no no 0 C parameters inside macro definitions
2222
L label no no 0 C goto labels
2323
N name no no 0 NONE names imported via using scope::symbol
2424
U using no no 0 NONE using namespace statements
25-
Y unknown no yes 3 C unknown identifier
25+
Y unknown no yes 4 C unknown identifier
2626
Z tparam no no 0 NONE template parameters
2727
c class yes no 0 NONE classes
2828
d macro yes no 2 C macro definitions

Tmain/list-roles.d/stdout-expected.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Automake d/directory program on directory for PROGRA
1818
Automake d/directory script on directory for SCRIPTS primary
1919
Basic f/function decl on declared
2020
Bats S/script loaded on script loaed with "load" command
21+
C Y/unknown applied on (maybe macro, function, or member) called or expanded
2122
C Y/unknown defvar on (maybe type) used for defining variables
2223
C Y/unknown ref off referenced anyhow
2324
C Y/unknown value on used as right side value
@@ -26,6 +27,7 @@ C d/macro undef on undefined
2627
C h/header local on local header
2728
C h/header system on system header
2829
C m/member initialized on initialized with form '.member = ...'
30+
C++ Y/unknown applied on (maybe macro, function, or member) called or expanded
2931
C++ Y/unknown defvar on (maybe type) used for defining variables
3032
C++ Y/unknown ref off referenced anyhow
3133
C++ Y/unknown value on used as right side value
@@ -38,6 +40,7 @@ CPreProcessor d/macro condition off used in part of #if/
3840
CPreProcessor d/macro undef on undefined
3941
CPreProcessor h/header local on local header
4042
CPreProcessor h/header system on system header
43+
CUDA Y/unknown applied on (maybe macro, function, or member) called or expanded
4144
CUDA Y/unknown defvar on (maybe type) used for defining variables
4245
CUDA Y/unknown ref off referenced anyhow
4346
CUDA Y/unknown value on used as right side value
@@ -150,6 +153,7 @@ Automake d/directory program on directory for PROGRA
150153
Automake d/directory script on directory for SCRIPTS primary
151154
Basic f/function decl on declared
152155
Bats S/script loaded on script loaed with "load" command
156+
C Y/unknown applied on (maybe macro, function, or member) called or expanded
153157
C Y/unknown defvar on (maybe type) used for defining variables
154158
C Y/unknown ref off referenced anyhow
155159
C Y/unknown value on used as right side value
@@ -158,6 +162,7 @@ C d/macro undef on undefined
158162
C h/header local on local header
159163
C h/header system on system header
160164
C m/member initialized on initialized with form '.member = ...'
165+
C++ Y/unknown applied on (maybe macro, function, or member) called or expanded
161166
C++ Y/unknown defvar on (maybe type) used for defining variables
162167
C++ Y/unknown ref off referenced anyhow
163168
C++ Y/unknown value on used as right side value
@@ -170,6 +175,7 @@ CPreProcessor d/macro condition off used in part of #if/
170175
CPreProcessor d/macro undef on undefined
171176
CPreProcessor h/header local on local header
172177
CPreProcessor h/header system on system header
178+
CUDA Y/unknown applied on (maybe macro, function, or member) called or expanded
173179
CUDA Y/unknown defvar on (maybe type) used for defining variables
174180
CUDA Y/unknown ref off referenced anyhow
175181
CUDA Y/unknown value on used as right side value
@@ -267,6 +273,7 @@ Zsh s/script loaded on loaded
267273
# C.*
268274
#
269275
#KIND(L/N) NAME ENABLED DESCRIPTION
276+
Y/unknown applied on (maybe macro, function, or member) called or expanded
270277
Y/unknown defvar on (maybe type) used for defining variables
271278
Y/unknown ref off referenced anyhow
272279
Y/unknown value on used as right side value
@@ -308,6 +315,7 @@ s/script loaded on loaded
308315
# C.* with disabling all roles of all languages
309316
#
310317
#KIND(L/N) NAME ENABLED DESCRIPTION
318+
Y/unknown applied off (maybe macro, function, or member) called or expanded
311319
Y/unknown defvar off (maybe type) used for defining variables
312320
Y/unknown ref off referenced anyhow
313321
Y/unknown value off used as right side value
@@ -321,6 +329,7 @@ m/member initialized off initialized with form '.member = ...'
321329
# C.* with disabling all roles of all kinds of all languages
322330
#
323331
#KIND(L/N) NAME ENABLED DESCRIPTION
332+
Y/unknown applied off (maybe macro, function, or member) called or expanded
324333
Y/unknown defvar off (maybe type) used for defining variables
325334
Y/unknown ref off referenced anyhow
326335
Y/unknown value off used as right side value
@@ -335,6 +344,7 @@ m/member initialized off initialized with form '.member = ...'
335344
# after disabling system role of header kind of C language
336345
#
337346
#KIND(L/N) NAME ENABLED DESCRIPTION
347+
Y/unknown applied on (maybe macro, function, or member) called or expanded
338348
Y/unknown defvar on (maybe type) used for defining variables
339349
Y/unknown ref on referenced anyhow
340350
Y/unknown value on used as right side value
@@ -349,6 +359,7 @@ m/member initialized on initialized with form '.member = ...'
349359
# after disabling system role of header kind of C language
350360
#
351361
#KIND(L/N) NAME ENABLED DESCRIPTION
362+
Y/unknown applied on (maybe macro, function, or member) called or expanded
352363
Y/unknown defvar on (maybe type) used for defining variables
353364
Y/unknown ref on referenced anyhow
354365
Y/unknown value on used as right side value
@@ -362,6 +373,7 @@ m/member initialized on initialized with form '.member = ...'
362373
# C.* with disabling all roles in C language
363374
#
364375
#KIND(L/N) NAME ENABLED DESCRIPTION
376+
Y/unknown applied off (maybe macro, function, or member) called or expanded
365377
Y/unknown defvar off (maybe type) used for defining variables
366378
Y/unknown ref off referenced anyhow
367379
Y/unknown value off used as right side value
@@ -382,6 +394,7 @@ s/script loaded on loaded
382394
# C.* with disabling all roles of all kinds in C language
383395
#
384396
#KIND(L/N) NAME ENABLED DESCRIPTION
397+
Y/unknown applied off (maybe macro, function, or member) called or expanded
385398
Y/unknown defvar off (maybe type) used for defining variables
386399
Y/unknown ref off referenced anyhow
387400
Y/unknown value off used as right side value
@@ -403,6 +416,7 @@ s/script loaded on loaded
403416
# after disabling all roles in all languages
404417
#
405418
#KIND(L/N) NAME ENABLED DESCRIPTION
419+
Y/unknown applied on (maybe macro, function, or member) called or expanded
406420
Y/unknown defvar on (maybe type) used for defining variables
407421
Y/unknown ref on referenced anyhow
408422
Y/unknown value on used as right side value
@@ -425,6 +439,7 @@ s/script loaded off loaded
425439
# after disabling all roles in all languages
426440
#
427441
#KIND(L/N) NAME ENABLED DESCRIPTION
442+
Y/unknown applied on (maybe macro, function, or member) called or expanded
428443
Y/unknown defvar on (maybe type) used for defining variables
429444
Y/unknown ref on referenced anyhow
430445
Y/unknown value on used as right side value
@@ -446,6 +461,7 @@ s/script loaded off loaded
446461
# C.* with disabling all roles of {header} kind in C language
447462
#
448463
#KIND(L/N) NAME ENABLED DESCRIPTION
464+
Y/unknown applied on (maybe macro, function, or member) called or expanded
449465
Y/unknown defvar on (maybe type) used for defining variables
450466
Y/unknown ref off referenced anyhow
451467
Y/unknown value on used as right side value
@@ -466,6 +482,7 @@ s/script loaded on loaded
466482
# C.* with disabling all roles of h kind in C language
467483
#
468484
#KIND(L/N) NAME ENABLED DESCRIPTION
485+
Y/unknown applied on (maybe macro, function, or member) called or expanded
469486
Y/unknown defvar on (maybe type) used for defining variables
470487
Y/unknown ref off referenced anyhow
471488
Y/unknown value on used as right side value
@@ -487,6 +504,7 @@ s/script loaded on loaded
487504
# after disabling all roles in all languages
488505
#
489506
#KIND(L/N) NAME ENABLED DESCRIPTION
507+
Y/unknown applied off (maybe macro, function, or member) called or expanded
490508
Y/unknown defvar off (maybe type) used for defining variables
491509
Y/unknown ref off referenced anyhow
492510
Y/unknown value off used as right side value
@@ -509,6 +527,7 @@ s/script loaded off loaded
509527
# after disabling all roles in all languages
510528
#
511529
#KIND(L/N) NAME ENABLED DESCRIPTION
530+
Y/unknown applied off (maybe macro, function, or member) called or expanded
512531
Y/unknown defvar off (maybe type) used for defining variables
513532
Y/unknown ref off referenced anyhow
514533
Y/unknown value off used as right side value
@@ -530,6 +549,7 @@ s/script loaded off loaded
530549
# C.* with disabling system role of h kind
531550
#
532551
#KIND(L/N) NAME ENABLED DESCRIPTION
552+
Y/unknown applied on (maybe macro, function, or member) called or expanded
533553
Y/unknown defvar on (maybe type) used for defining variables
534554
Y/unknown ref off referenced anyhow
535555
Y/unknown value on used as right side value
@@ -543,6 +563,7 @@ m/member initialized on initialized with form '.member = ...'
543563
# C.* with disabling system role of {header} kind
544564
#
545565
#KIND(L/N) NAME ENABLED DESCRIPTION
566+
Y/unknown applied on (maybe macro, function, or member) called or expanded
546567
Y/unknown defvar on (maybe type) used for defining variables
547568
Y/unknown ref off referenced anyhow
548569
Y/unknown value on used as right side value
@@ -556,6 +577,7 @@ m/member initialized on initialized with form '.member = ...'
556577
# C.* with enabling system role of h kind after disabling the role
557578
#
558579
#KIND(L/N) NAME ENABLED DESCRIPTION
580+
Y/unknown applied on (maybe macro, function, or member) called or expanded
559581
Y/unknown defvar on (maybe type) used for defining variables
560582
Y/unknown ref off referenced anyhow
561583
Y/unknown value on used as right side value
@@ -569,6 +591,7 @@ m/member initialized on initialized with form '.member = ...'
569591
# C.* with enabling system role of {header} kind after disabling the role
570592
#
571593
#KIND(L/N) NAME ENABLED DESCRIPTION
594+
Y/unknown applied on (maybe macro, function, or member) called or expanded
572595
Y/unknown defvar on (maybe type) used for defining variables
573596
Y/unknown ref off referenced anyhow
574597
Y/unknown value on used as right side value
@@ -582,6 +605,7 @@ m/member initialized on initialized with form '.member = ...'
582605
# C.* with disabling system and local roles of h kind
583606
#
584607
#KIND(L/N) NAME ENABLED DESCRIPTION
608+
Y/unknown applied on (maybe macro, function, or member) called or expanded
585609
Y/unknown defvar on (maybe type) used for defining variables
586610
Y/unknown ref off referenced anyhow
587611
Y/unknown value on used as right side value
@@ -595,6 +619,7 @@ m/member initialized on initialized with form '.member = ...'
595619
# C.* with disabling system and local roles of {header} kind
596620
#
597621
#KIND(L/N) NAME ENABLED DESCRIPTION
622+
Y/unknown applied on (maybe macro, function, or member) called or expanded
598623
Y/unknown defvar on (maybe type) used for defining variables
599624
Y/unknown ref off referenced anyhow
600625
Y/unknown value on used as right side value
@@ -609,6 +634,7 @@ m/member initialized on initialized with form '.member = ...'
609634
# after disabling all roles in all languages
610635
#
611636
#KIND(L/N) NAME ENABLED DESCRIPTION
637+
Y/unknown applied off (maybe macro, function, or member) called or expanded
612638
Y/unknown defvar off (maybe type) used for defining variables
613639
Y/unknown ref off referenced anyhow
614640
Y/unknown value off used as right side value
@@ -623,6 +649,7 @@ m/member initialized off initialized with form '.member = ...'
623649
# after disabling all roles in all languages
624650
#
625651
#KIND(L/N) NAME ENABLED DESCRIPTION
652+
Y/unknown applied off (maybe macro, function, or member) called or expanded
626653
Y/unknown defvar off (maybe type) used for defining variables
627654
Y/unknown ref off referenced anyhow
628655
Y/unknown value off used as right side value
@@ -636,6 +663,7 @@ m/member initialized off initialized with form '.member = ...'
636663
# C.* with disabling local role of h kind and undef role of d kind
637664
#
638665
#KIND(L/N) NAME ENABLED DESCRIPTION
666+
Y/unknown applied on (maybe macro, function, or member) called or expanded
639667
Y/unknown defvar on (maybe type) used for defining variables
640668
Y/unknown ref off referenced anyhow
641669
Y/unknown value on used as right side value
@@ -649,6 +677,7 @@ m/member initialized on initialized with form '.member = ...'
649677
# C.* with enabling all roles of header kinds after disabling all roles of the kind
650678
#
651679
#KIND(L/N) NAME ENABLED DESCRIPTION
680+
Y/unknown applied on (maybe macro, function, or member) called or expanded
652681
Y/unknown defvar on (maybe type) used for defining variables
653682
Y/unknown ref off referenced anyhow
654683
Y/unknown value on used as right side value
@@ -662,6 +691,7 @@ m/member initialized on initialized with form '.member = ...'
662691
# C.* with enabling all roles of header kinds after disabling all roles of the kinds of C language
663692
#
664693
#KIND(L/N) NAME ENABLED DESCRIPTION
694+
Y/unknown applied off (maybe macro, function, or member) called or expanded
665695
Y/unknown defvar off (maybe type) used for defining variables
666696
Y/unknown ref off referenced anyhow
667697
Y/unknown value off used as right side value
@@ -675,6 +705,7 @@ m/member initialized off initialized with form '.member = ...'
675705
# C.* with enabling all roles of header kinds after disabling all roles of the kinds of C language (short notation)
676706
#
677707
#KIND(L/N) NAME ENABLED DESCRIPTION
708+
Y/unknown applied off (maybe macro, function, or member) called or expanded
678709
Y/unknown defvar off (maybe type) used for defining variables
679710
Y/unknown ref off referenced anyhow
680711
Y/unknown value off used as right side value

Tmain/nested-subparsers.d/stdout-expected.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ n name
3737
#LETTER NAME ENABLED REFONLY NROLES MASTER DESCRIPTION
3838
D macroparam no no 0 C parameters inside macro definitions
3939
L label no no 0 C goto labels
40-
Y unknown no yes 3 C unknown identifier
40+
Y unknown no yes 4 C unknown identifier
4141
d macro yes no 2 C macro definitions
4242
e enumerator yes no 0 C enumerators (values inside an enumeration)
4343
f function yes no 0 C function definitions

Units/parser-c.r/c-reftags-unknown-ref.d/expected.tags

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ j input.c /^ if (j == 0)$/;" Y function:f roles:ref
1010
i input.c /^ return i + B + j + f(0);$/;" Y function:f roles:ref
1111
B input.c /^ return i + B + j + f(0);$/;" Y function:f roles:ref
1212
j input.c /^ return i + B + j + f(0);$/;" Y function:f roles:ref
13-
f input.c /^ return i + B + j + f(0);$/;" Y function:f roles:ref
13+
f input.c /^ return i + B + j + f(0);$/;" Y function:f roles:applied

parsers/cxx/cxx_reftag.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,21 @@ void cxxReftagEvalNewToken(void)
4040
if (in_subparser)
4141
popLanguage();
4242
}
43+
else if (cxxTokenTypeIs(g_cxx.pToken,CXXTokenTypeOpeningParenthesis)
44+
&& cxxTagKindEnabled(CXXTagKindUNKNOWN) &&
45+
cxxTagRoleEnabled(CXXTagKindUNKNOWN, CXXTagUnknownRoleAPPLIED))
46+
{
47+
if(g_cxx.pToken->pPrev && cxxTokenTypeIs(g_cxx.pToken->pPrev,
48+
CXXTokenTypeIdentifier))
49+
{
50+
CXXToken * i = g_cxx.pToken->pPrev;
51+
if(i->iCorkIndex != CORK_NIL && i->bCorkIndexForReftag)
52+
cxxReftagReset(i->iCorkIndex, CORK_NIL,
53+
CXXTagKindUNKNOWN, CXXTagUnknownRoleAPPLIED, false);
54+
else
55+
;
56+
}
57+
}
4358
}
4459

4560
void cxxReftagReset(int iCorkIndex, int iScopeCorkIndex,

parsers/cxx/cxx_tag.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
{ false, "ref", "referenced anyhow" }, \
2626
{ true, "value", "used as right side value" }, \
2727
{ true, "defvar", "(maybe type) used for defining variables" }, \
28+
{ true, "applied", "(maybe macro, function, or member) called or expanded" }, \
2829
}
2930

3031
CXX_COMMON_UNKNOWN_ROLES(C);

parsers/cxx/cxx_tag.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ enum CXXTagUnknownRole
4545
CXXTagUnknownRoleREFERENCED,
4646
CXXTagUnknownRoleVALUE,
4747
CXXTagUnknownRoleDEFVAR,
48+
CXXTagUnknownRoleAPPLIED,
4849
};
4950

5051
enum CXXTagMemberRole

0 commit comments

Comments
 (0)