-
Notifications
You must be signed in to change notification settings - Fork 1
/
todolist
73 lines (56 loc) · 2.42 KB
/
todolist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
cparser
space - comment singleline
- comment multiline
-
T_NEWLINE
- comment
T_COMMENT_SINGL_LINE
T_COMMENT_MULTI_LINE_OPEN
T_COMMENT_MULTI_LINE_CLOSE
T_PREPROCESS
T_DATATYPE
T_KEYWORD
T_STRING
T_CHARACTOR
T_FLOATING
T_INTEGER
T_OPERATOR
T_COMMA
T_IDENTIFIER
T_PARENTHESIS_OPEN
T_PARENTHESIS_CLOSE
T_BRACE_OPEN
T_BRACE_CLOSE
T_BRACKET_OPEN
T_BRACKET_CLOSE
T_SEMICOLON
T_BACKSLASH
T_ETC
1. .config를 이용해서 config tag를 생성한다.
2. Kernel makefile - script/tag.sh에 의해서 알고있는
all_target_sources() 를 이용(except drivers directory)해서 모든 file에 대한
file tag와 해당 file에 해당하는 base scope tag를 생성한다.
3. file tag에 대한 파일에 대해서 모든 preprocess tag를 생성한다.
(1). define tag를 생성한다.
(2). condition tag를 생성한다.(scope tag 생성)
(3). 나머진 일단 무시
4. c언어 코드에 대한 tag를 생성한다.
처음 데이터베이스 생성시에 call tag는 생성하지 않고, definition tag만 생성하고
call indentifier가 존재하는 file만 definition tag에 리스트로 저장한다.
그 후 어떤 tag에 대한 call tag를 보고 싶을 시에는 해당 identifier가 존재하는
file들에 대해서 identifier tag만 parsing해서 tmp tag list를 생성.
flugin이 종료되면 해당 tmp tag들은 사라짐. (검색한지 오래된 tag도 사라짐.)
file tag는 file 전체를 가르키는 scope를 가리킴(base scope)
scope tag는 해당 scope를 감싸는 scope를 가르키며
base scope tag는 file tag를 가르킴
처음 database 생성시에는 file tag, scope tag, definition tag와 preprocess tag만 생성한다.
tag등은 scope tag에 종속된다. 해당 tag가 존재하는 위치보다 더 큰 범위를 감싸는
scope tag에 종속된다.
preprocess tag
define tag는 결과값이 variable인지, constant인지, condition인지, loop인지,
(inline) function / procedure 인지만 체크한 후 tag로 생성한다.
추후 상수값에 대해서는 결과를 알 수 있도록 한다.
condition tag는 해당 범위에 해당하는 scope tag를 생성하고,
config tag를 이용해서 정확히 true / false를 가릴 수 있는
경우에만 false tag에 대해서 definition tag를 가린다.(볼 수 있게도 한다.)
생성된 tag는 linker에 의해 이어진다.