aboutsummaryrefslogtreecommitdiffstats
path: root/test/profile2.ok
blob: 1db4c2f0e252f03c916d6d363acf401e1be7eae7 (plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
	# BEGIN rule(s)

	BEGIN {
     1  	if (sortcmd == "") {
			sortcmd = "sort"
		}
     1  	asplit("BEGIN:END:atan2:break:close:continue:cos:delete:" "do:else:exit:exp:for:getline:gsub:if:in:index:int:" "length:log:match:next:print:printf:rand:return:sin:" "split:sprintf:sqrt:srand:sub:substr:system:while", keywords, ":")
     1  	split("00:00:00:00:00:00:00:00:00:00:" "20:10:10:12:12:11:07:00:00:00:" "08:08:08:08:08:33:08:00:00:00:" "08:44:08:36:08:08:08:00:00:00:" "08:44:45:42:42:41:08", machine, ":")
     1  	state = 1
   571  	for (;;) {
   571  		symb = lex()
   571  		nextstate = substr(machine[state symb], 1, 1)
   571  		act = substr(machine[state symb], 2, 1)
   571  		if (act == "0") { # 12
   559  		} else if (act == "1") { # 8
     8  			if (! inarray(tok, names)) { # 3
     3  				names[++nnames] = tok
				}
     8  			lines[tok, ++xnames[tok]] = NR
   551  		} else if (act == "2") { # 426
   426  			if (tok in local) { # 309
   309  				tok = tok "(" funcname ")"
   309  				if (! inarray(tok, names)) { # 22
    22  					names[++nnames] = tok
					}
   309  				lines[tok, ++xnames[tok]] = NR
   117  			} else {
   117  				tok = tok "()"
   117  				if (! inarray(tok, names)) { # 22
    22  					names[++nnames] = tok
					}
   117  				lines[tok, ++xnames[tok]] = NR
				}
   125  		} else if (act == "3") { # 4
     4  			funcname = tok
     4  			flines[tok] = NR
   121  		} else if (act == "4") { # 49
    49  			braces++
    72  		} else if (act == "5") { # 49
    49  			braces--
    49  			if (braces == 0) { # 4
    22  				for (temp in local) {
    22  					delete local[temp]
					}
     4  				funcname = ""
     4  				nextstate = 1
				}
    23  		} else if (act == "6") { # 22
    22  			local[tok] = 1
     1  		} else if (act == "7") { # 1
     1  			break
			} else if (act == "8") {
				print("error: xref.awk: line " NR ": aborting") > "/dev/con"
				exit 1
			}
   570  		state = nextstate
		}
    47  	for (i = 1; i <= nnames; i++) {
    47  		printf("%d ", xnames[names[i]]) | sortcmd
    47  		if (index(names[i], "(") == 0) { # 3
     3  			printf("%s(%d)", names[i], flines[names[i]]) | sortcmd
    44  		} else {
    44  			printf("%s", names[i]) | sortcmd
			}
   434  		for (j = 1; j <= xnames[names[i]]; j++) {
   434  			if (lines[names[i], j] != lines[names[i], j - 1]) { # 390
   390  				printf(" %d", lines[names[i], j]) | sortcmd
				}
			}
    47  		printf("\n") | sortcmd
		}
     1  	close(sortcmd)
	}


	# Functions, listed alphabetically

     1  function asplit(str, arr, fs, n)
	{
     1  	n = split(str, temp_asplit, fs)
    36  	for (i = 1; i <= n; i++) {
    36  		arr[temp_asplit[i]]++
		}
	}

   434  function inarray(val, arr, j, tmp)
	{
 16297  	for (j in arr) {
 16297  		tmp[arr[j]]++
		}
   434  	return (val in tmp)
	}

   571  function lex()
	{
  1702  	for (;;) {
  1702  		if (tok == "(eof)") {
				return 7
			}
   326  		while (length(line) == 0) {
   326  			if ((getline line) == 0) { # 1
     1  				tok = "(eof)"
     1  				return 7
				}
			}
  1701  		sub(/^[ \t]+/, "", line)
  1701  		sub(/^"([^"]|\\")*"/, "", line)
  1701  		sub(/^\/([^\/]|\\\/)+\//, "", line)
  1701  		sub(/^#.*/, "", line)
  1701  		if (line ~ /^function/) { # 4
     4  			tok = "function"
     4  			line = substr(line, 9)
     4  			return 1
  1697  		} else if (line ~ /^{/) { # 53
    53  			tok = "{"
    53  			line = substr(line, 2)
    53  			return 2
  1644  		} else if (line ~ /^}/) { # 53
    53  			tok = "}"
    53  			line = substr(line, 2)
    53  			return 3
  1591  		} else if (match(line, /^[[:alpha:]_][[:alnum:]]*\[/)) { # 43
    43  			tok = substr(line, 1, RLENGTH - 1)
    43  			line = substr(line, RLENGTH + 1)
    43  			return 5
  1548  		} else if (match(line, /^[[:alpha:]_][[:alnum:]]*\(/)) { # 87
    87  			tok = substr(line, 1, RLENGTH - 1)
    87  			line = substr(line, RLENGTH + 1)
    87  			if (! (tok in keywords)) { # 12
    12  				return 6
				}
  1461  		} else if (match(line, /^[[:alpha:]_][[:alnum:]]*/)) { # 525
   525  			tok = substr(line, 1, RLENGTH)
   525  			line = substr(line, RLENGTH + 1)
   525  			if (! (tok in keywords)) { # 405
   405  				return 4
				}
   936  		} else {
   936  			match(line, /^[^[:alpha:]_{}]/)
   936  			tok = substr(line, 1, RLENGTH)
   936  			line = substr(line, RLENGTH + 1)
			}
		}
	}