Skip to content

Commit cda022b

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 142277c commit cda022b

File tree

7 files changed

+52
-4
lines changed

7 files changed

+52
-4
lines changed

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

+2-2
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

+31
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
@@ -149,6 +152,7 @@ Automake d/directory program on directory for PROGRA
149152
Automake d/directory script on directory for SCRIPTS primary
150153
Basic f/function decl on declared
151154
Bats S/script loaded on script loaed with "load" command
155+
C Y/unknown applied on (maybe macro, function, or member) called or expanded
152156
C Y/unknown defvar on (maybe type) used for defining variables
153157
C Y/unknown ref off referenced anyhow
154158
C Y/unknown value on used as right side value
@@ -157,6 +161,7 @@ C d/macro undef on undefined
157161
C h/header local on local header
158162
C h/header system on system header
159163
C m/member initialized on initialized with form '.member = ...'
164+
C++ Y/unknown applied on (maybe macro, function, or member) called or expanded
160165
C++ Y/unknown defvar on (maybe type) used for defining variables
161166
C++ Y/unknown ref off referenced anyhow
162167
C++ Y/unknown value on used as right side value
@@ -169,6 +174,7 @@ CPreProcessor d/macro condition off used in part of #if/
169174
CPreProcessor d/macro undef on undefined
170175
CPreProcessor h/header local on local header
171176
CPreProcessor h/header system on system header
177+
CUDA Y/unknown applied on (maybe macro, function, or member) called or expanded
172178
CUDA Y/unknown defvar on (maybe type) used for defining variables
173179
CUDA Y/unknown ref off referenced anyhow
174180
CUDA Y/unknown value on used as right side value
@@ -265,6 +271,7 @@ Zsh s/script loaded on loaded
265271
# C.*
266272
#
267273
#KIND(L/N) NAME ENABLED DESCRIPTION
274+
Y/unknown applied on (maybe macro, function, or member) called or expanded
268275
Y/unknown defvar on (maybe type) used for defining variables
269276
Y/unknown ref off referenced anyhow
270277
Y/unknown value on used as right side value
@@ -306,6 +313,7 @@ s/script loaded on loaded
306313
# C.* with disabling all roles of all languages
307314
#
308315
#KIND(L/N) NAME ENABLED DESCRIPTION
316+
Y/unknown applied off (maybe macro, function, or member) called or expanded
309317
Y/unknown defvar off (maybe type) used for defining variables
310318
Y/unknown ref off referenced anyhow
311319
Y/unknown value off used as right side value
@@ -319,6 +327,7 @@ m/member initialized off initialized with form '.member = ...'
319327
# C.* with disabling all roles of all kinds of all languages
320328
#
321329
#KIND(L/N) NAME ENABLED DESCRIPTION
330+
Y/unknown applied off (maybe macro, function, or member) called or expanded
322331
Y/unknown defvar off (maybe type) used for defining variables
323332
Y/unknown ref off referenced anyhow
324333
Y/unknown value off used as right side value
@@ -333,6 +342,7 @@ m/member initialized off initialized with form '.member = ...'
333342
# after disabling system role of header kind of C language
334343
#
335344
#KIND(L/N) NAME ENABLED DESCRIPTION
345+
Y/unknown applied on (maybe macro, function, or member) called or expanded
336346
Y/unknown defvar on (maybe type) used for defining variables
337347
Y/unknown ref on referenced anyhow
338348
Y/unknown value on used as right side value
@@ -347,6 +357,7 @@ m/member initialized on initialized with form '.member = ...'
347357
# after disabling system role of header kind of C language
348358
#
349359
#KIND(L/N) NAME ENABLED DESCRIPTION
360+
Y/unknown applied on (maybe macro, function, or member) called or expanded
350361
Y/unknown defvar on (maybe type) used for defining variables
351362
Y/unknown ref on referenced anyhow
352363
Y/unknown value on used as right side value
@@ -360,6 +371,7 @@ m/member initialized on initialized with form '.member = ...'
360371
# C.* with disabling all roles in C language
361372
#
362373
#KIND(L/N) NAME ENABLED DESCRIPTION
374+
Y/unknown applied off (maybe macro, function, or member) called or expanded
363375
Y/unknown defvar off (maybe type) used for defining variables
364376
Y/unknown ref off referenced anyhow
365377
Y/unknown value off used as right side value
@@ -380,6 +392,7 @@ s/script loaded on loaded
380392
# C.* with disabling all roles of all kinds in C language
381393
#
382394
#KIND(L/N) NAME ENABLED DESCRIPTION
395+
Y/unknown applied off (maybe macro, function, or member) called or expanded
383396
Y/unknown defvar off (maybe type) used for defining variables
384397
Y/unknown ref off referenced anyhow
385398
Y/unknown value off used as right side value
@@ -401,6 +414,7 @@ s/script loaded on loaded
401414
# after disabling all roles in all languages
402415
#
403416
#KIND(L/N) NAME ENABLED DESCRIPTION
417+
Y/unknown applied on (maybe macro, function, or member) called or expanded
404418
Y/unknown defvar on (maybe type) used for defining variables
405419
Y/unknown ref on referenced anyhow
406420
Y/unknown value on used as right side value
@@ -423,6 +437,7 @@ s/script loaded off loaded
423437
# after disabling all roles in all languages
424438
#
425439
#KIND(L/N) NAME ENABLED DESCRIPTION
440+
Y/unknown applied on (maybe macro, function, or member) called or expanded
426441
Y/unknown defvar on (maybe type) used for defining variables
427442
Y/unknown ref on referenced anyhow
428443
Y/unknown value on used as right side value
@@ -444,6 +459,7 @@ s/script loaded off loaded
444459
# C.* with disabling all roles of {header} kind in C language
445460
#
446461
#KIND(L/N) NAME ENABLED DESCRIPTION
462+
Y/unknown applied on (maybe macro, function, or member) called or expanded
447463
Y/unknown defvar on (maybe type) used for defining variables
448464
Y/unknown ref off referenced anyhow
449465
Y/unknown value on used as right side value
@@ -464,6 +480,7 @@ s/script loaded on loaded
464480
# C.* with disabling all roles of h kind in C language
465481
#
466482
#KIND(L/N) NAME ENABLED DESCRIPTION
483+
Y/unknown applied on (maybe macro, function, or member) called or expanded
467484
Y/unknown defvar on (maybe type) used for defining variables
468485
Y/unknown ref off referenced anyhow
469486
Y/unknown value on used as right side value
@@ -485,6 +502,7 @@ s/script loaded on loaded
485502
# after disabling all roles in all languages
486503
#
487504
#KIND(L/N) NAME ENABLED DESCRIPTION
505+
Y/unknown applied off (maybe macro, function, or member) called or expanded
488506
Y/unknown defvar off (maybe type) used for defining variables
489507
Y/unknown ref off referenced anyhow
490508
Y/unknown value off used as right side value
@@ -507,6 +525,7 @@ s/script loaded off loaded
507525
# after disabling all roles in all languages
508526
#
509527
#KIND(L/N) NAME ENABLED DESCRIPTION
528+
Y/unknown applied off (maybe macro, function, or member) called or expanded
510529
Y/unknown defvar off (maybe type) used for defining variables
511530
Y/unknown ref off referenced anyhow
512531
Y/unknown value off used as right side value
@@ -528,6 +547,7 @@ s/script loaded off loaded
528547
# C.* with disabling system role of h kind
529548
#
530549
#KIND(L/N) NAME ENABLED DESCRIPTION
550+
Y/unknown applied on (maybe macro, function, or member) called or expanded
531551
Y/unknown defvar on (maybe type) used for defining variables
532552
Y/unknown ref off referenced anyhow
533553
Y/unknown value on used as right side value
@@ -541,6 +561,7 @@ m/member initialized on initialized with form '.member = ...'
541561
# C.* with disabling system role of {header} kind
542562
#
543563
#KIND(L/N) NAME ENABLED DESCRIPTION
564+
Y/unknown applied on (maybe macro, function, or member) called or expanded
544565
Y/unknown defvar on (maybe type) used for defining variables
545566
Y/unknown ref off referenced anyhow
546567
Y/unknown value on used as right side value
@@ -554,6 +575,7 @@ m/member initialized on initialized with form '.member = ...'
554575
# C.* with enabling system role of h kind after disabling the role
555576
#
556577
#KIND(L/N) NAME ENABLED DESCRIPTION
578+
Y/unknown applied on (maybe macro, function, or member) called or expanded
557579
Y/unknown defvar on (maybe type) used for defining variables
558580
Y/unknown ref off referenced anyhow
559581
Y/unknown value on used as right side value
@@ -567,6 +589,7 @@ m/member initialized on initialized with form '.member = ...'
567589
# C.* with enabling system role of {header} kind after disabling the role
568590
#
569591
#KIND(L/N) NAME ENABLED DESCRIPTION
592+
Y/unknown applied on (maybe macro, function, or member) called or expanded
570593
Y/unknown defvar on (maybe type) used for defining variables
571594
Y/unknown ref off referenced anyhow
572595
Y/unknown value on used as right side value
@@ -580,6 +603,7 @@ m/member initialized on initialized with form '.member = ...'
580603
# C.* with disabling system and local roles of h kind
581604
#
582605
#KIND(L/N) NAME ENABLED DESCRIPTION
606+
Y/unknown applied on (maybe macro, function, or member) called or expanded
583607
Y/unknown defvar on (maybe type) used for defining variables
584608
Y/unknown ref off referenced anyhow
585609
Y/unknown value on used as right side value
@@ -593,6 +617,7 @@ m/member initialized on initialized with form '.member = ...'
593617
# C.* with disabling system and local roles of {header} kind
594618
#
595619
#KIND(L/N) NAME ENABLED DESCRIPTION
620+
Y/unknown applied on (maybe macro, function, or member) called or expanded
596621
Y/unknown defvar on (maybe type) used for defining variables
597622
Y/unknown ref off referenced anyhow
598623
Y/unknown value on used as right side value
@@ -607,6 +632,7 @@ m/member initialized on initialized with form '.member = ...'
607632
# after disabling all roles in all languages
608633
#
609634
#KIND(L/N) NAME ENABLED DESCRIPTION
635+
Y/unknown applied off (maybe macro, function, or member) called or expanded
610636
Y/unknown defvar off (maybe type) used for defining variables
611637
Y/unknown ref off referenced anyhow
612638
Y/unknown value off used as right side value
@@ -621,6 +647,7 @@ m/member initialized off initialized with form '.member = ...'
621647
# after disabling all roles in all languages
622648
#
623649
#KIND(L/N) NAME ENABLED DESCRIPTION
650+
Y/unknown applied off (maybe macro, function, or member) called or expanded
624651
Y/unknown defvar off (maybe type) used for defining variables
625652
Y/unknown ref off referenced anyhow
626653
Y/unknown value off used as right side value
@@ -634,6 +661,7 @@ m/member initialized off initialized with form '.member = ...'
634661
# C.* with disabling local role of h kind and undef role of d kind
635662
#
636663
#KIND(L/N) NAME ENABLED DESCRIPTION
664+
Y/unknown applied on (maybe macro, function, or member) called or expanded
637665
Y/unknown defvar on (maybe type) used for defining variables
638666
Y/unknown ref off referenced anyhow
639667
Y/unknown value on used as right side value
@@ -647,6 +675,7 @@ m/member initialized on initialized with form '.member = ...'
647675
# C.* with enabling all roles of header kinds after disabling all roles of the kind
648676
#
649677
#KIND(L/N) NAME ENABLED DESCRIPTION
678+
Y/unknown applied on (maybe macro, function, or member) called or expanded
650679
Y/unknown defvar on (maybe type) used for defining variables
651680
Y/unknown ref off referenced anyhow
652681
Y/unknown value on used as right side value
@@ -660,6 +689,7 @@ m/member initialized on initialized with form '.member = ...'
660689
# C.* with enabling all roles of header kinds after disabling all roles of the kinds of C language
661690
#
662691
#KIND(L/N) NAME ENABLED DESCRIPTION
692+
Y/unknown applied off (maybe macro, function, or member) called or expanded
663693
Y/unknown defvar off (maybe type) used for defining variables
664694
Y/unknown ref off referenced anyhow
665695
Y/unknown value off used as right side value
@@ -673,6 +703,7 @@ m/member initialized off initialized with form '.member = ...'
673703
# C.* with enabling all roles of header kinds after disabling all roles of the kinds of C language (short notation)
674704
#
675705
#KIND(L/N) NAME ENABLED DESCRIPTION
706+
Y/unknown applied off (maybe macro, function, or member) called or expanded
676707
Y/unknown defvar off (maybe type) used for defining variables
677708
Y/unknown ref off referenced anyhow
678709
Y/unknown value off used as right side value

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

+1-1
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

+1-1
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

+15
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

+1
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

+1
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)