blob: fb32b5d72d314b951aa93505b7673d8146c816e7 (
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
|
#ifdef _WIN32
#include <pdcurses.h>
#else
#include <ncurses.h>
#endif
int main() {
initscr();
noecho();
char word[128];
int index = 0;
int level = 1;
struct Word {
char str[128];
int len;
};
struct Word words[128];
int numWords = 1;
words[0].str[0] = '(';
words[0].len = 1;
while (true) {
move(0, 0);
clear();
refresh();
for (int i = 0; i < numWords; i++) {
printw("%.*s\n", words[i].len, words[i].str);
}
int key = getch();
/**/ if (key == ' ') {
if (index == 0) {
if (level > 0) {
// end list
words[numWords].str[0] = ')';
words[numWords].len = 1;
numWords++;
level--;
}
}
else {
// add to list
// for (int i = 0; i < index; i++) {
// words[numWords].str[i] = word[i];
// }
// words[numWords].len = index;
index = 0;
// numWords++;
}
}
else if (key == '\n') {
// if (index == 0) {
// // add to list
// for (int i = 0; i < index; i++) {
// words[numWords].str[i] = word[i];
// }
// words[numWords].len = index;
// index = 0;
// numWords++;
// add list
words[numWords].str[0] = '(';
words[numWords].len = 1;
numWords++;
level++;
// }
index = 0;
}
else if (key == 8) {
if (numWords > 0) {
if (words[numWords-1].len == 1 && words[numWords-1].str[0] == '(') level--;
if (words[numWords-1].len == 1 && words[numWords-1].str[0] == ')') level++;
numWords--;
}
}
else {
if (index == 0) {
numWords++;
words[numWords-1].len = 0;
}
words[numWords-1].str[index++] = (char)key;
words[numWords-1].len++;
}
}
endwin();
return 0;
}
|