-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsymbolTable.js
More file actions
46 lines (40 loc) · 951 Bytes
/
Copy pathsymbolTable.js
File metadata and controls
46 lines (40 loc) · 951 Bytes
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
/**
* Symbol Table - Manages variable storage and lookup for DevLang
*
* @version 1.0.0
* @license MIT
*/
/**
* Symbol Table Entry - Represents a variable in the symbol table
*/
class SymbolEntry {
constructor(name, type, scope, value) {
this.name = name;
this.type = type;
this.scope = scope;
this.value = value;
}
}
/**
* Symbol Table - Manages variable storage and lookup
*/
class SymbolTable {
constructor() {
this.symbols = [];
}
insert(name, type, scope, value) {
this.symbols.push(new SymbolEntry(name, type, scope, value));
}
lookup(name) {
return this.symbols.find(entry => entry.name === name) || null;
}
modify(name, value) {
const entry = this.lookup(name);
if (entry) {
entry.value = value;
return true;
}
return false;
}
}
module.exports = { SymbolTable, SymbolEntry };