summaryrefslogtreecommitdiff
path: root/test/profile2.ok
blob: 3369a1148b0b2e89f9fdae4f61a5228570d22ca8 (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
   570  	for (;;) {
   570  		symb = lex()
   570  		nextstate = substr(machine[state symb], 1, 1)
   570  		act = substr(machine[state symb], 2, 1)
   570  		if (act == "0") { # 12
   558  		} else if (act == "1") { # 8
     8  			if (! inarray(tok, names)) { # 3
     3  				names[++nnames] = tok
				}
     8  			lines[tok, ++xnames[tok]] = NR
   550  		} else if (act == "2") { # 425
   425  			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
   116  			} else {
   116  				tok = tok "()"
   116  				if (! inarray(tok, names)) { # 21
    21  					names[++nnames] = tok
					}
   116  				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
			}
   569  		state = nextstate
		}
    46  	for (i = 1; i <= nnames; i++) {
    46  		printf("%d ", xnames[names[i]]) | sortcmd
    46  		if (index(names[i], "(") == 0) { # 3
     3  			printf("%s(%d)", names[i], flines[names[i]]) | sortcmd
    43  		} else {
    43  			printf("%s", names[i]) | sortcmd
			}
   433  		for (j = 1; j <= xnames[names[i]]; j++) {
   433  			if (lines[names[i], j] != lines[names[i], j - 1]) { # 389
   389  				printf(" %d", lines[names[i], j]) | sortcmd
				}
			}
    46  		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]]++
		}
	}

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

   570  function lex()
	{
  1698  	for (;;) {
  1698  		if (tok == "(eof)") {
				return 7
			}
   326  		while (length(line) == 0) {
   326  			if ((getline line) == 0) { # 1
     1  				tok = "(eof)"
     1  				return 7
				}
			}
  1697  		sub(/^[ \t]+/, "", line)
  1697  		sub(/^"([^"]|\\")*"/, "", line)
  1697  		sub(/^\/([^\/]|\\\/)+\//, "", line)
  1697  		sub(/^#.*/, "", line)
  1697  		if (line ~ /^function/) { # 4
     4  			tok = "function"
     4  			line = substr(line, 9)
     4  			return 1
  1693  		} else if (line ~ /^{/) { # 53
    53  			tok = "{"
    53  			line = substr(line, 2)
    53  			return 2
  1640  		} else if (line ~ /^}/) { # 53
    53  			tok = "}"
    53  			line = substr(line, 2)
    53  			return 3
  1587  		} else if (match(line, /^[[:alpha:]_][[:alnum:]_]*\[/)) { # 43
    43  			tok = substr(line, 1, RLENGTH - 1)
    43  			line = substr(line, RLENGTH + 1)
    43  			return 5
  1544  		} 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
				}
  1457  		} else if (match(line, /^[[:alpha:]_][[:alnum:]_]*/)) { # 521
   521  			tok = substr(line, 1, RLENGTH)
   521  			line = substr(line, RLENGTH + 1)
   521  			if (! (tok in keywords)) { # 404
   404  				return 4
				}
   936  		} else {
   936  			match(line, /^[^[:alpha:]_{}]/)
   936  			tok = substr(line, 1, RLENGTH)
   936  			line = substr(line, RLENGTH + 1)
			}
		}
	}