-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest-declaration-debug.js
More file actions
56 lines (46 loc) · 1.36 KB
/
test-declaration-debug.js
File metadata and controls
56 lines (46 loc) · 1.36 KB
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
/**
* Debug specific failing patterns
*/
const { ClarionTokenizer, TokenType } = require('./out/server/src/ClarionTokenizer');
// Map token type numbers to names
const tokenTypeNames = {};
for (const key in TokenType) {
if (typeof TokenType[key] === 'number') {
tokenTypeNames[TokenType[key]] = key;
}
}
function debugTokens(name, code) {
console.log(`\n${'='.repeat(70)}`);
console.log(`${name}`);
console.log('-'.repeat(70));
console.log(`Code:\n${code}`);
console.log('-'.repeat(70));
const tokenizer = new ClarionTokenizer(code);
const tokens = tokenizer.tokenize();
console.log(`Tokens (${tokens.length}):`);
tokens.forEach((token, idx) => {
const typeName = tokenTypeNames[token.type] || `Unknown(${token.type})`;
console.log(` [${idx}] Line ${token.line}: "${token.value}" → ${typeName}`);
});
}
// Debug failing cases
debugTokens("Test 2: Anonymous STRING field",
`MyGroup GROUP
STRING('\\\\')
ActualField LONG
END`);
debugTokens("Test 3: Reference variables with &QUEUE, &GROUP, &FILE",
`QRef &QUEUE
GRef &GROUP
FRef &FILE`);
debugTokens("Test 6: Nested dot notation",
`myVar.inner.field = 5`);
debugTokens("Test 7: ITEMIZE structure",
`ITEMIZE
First EQUATE
Second EQUATE
END`);
debugTokens("Test 10: IF/THEN in statement context",
`IF ~hDC THEN message('failed')
x = 1
END`);