repo.or.cz
/
voodoo-lang.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
history
|
raw
|
HEAD
reject programs that use symbols that have not been defined or imported
[voodoo-lang.git]
/
lib
/
voodoo
/
symbol_tracker.rb
blob
b3398fd7ea32d01e97e2ec7e9054949a3b3f6d49
1
require 'set'
2
3
module Voodoo
4
# Class to keep track of defined and used symbols.
5
class SymbolTracker
6
def initialize
7
@defined = Set.new
8
@used = Set.new
9
end
10
11
def define *symbols
12
@defined.merge symbols
13
end
14
15
def use *symbols
16
@used.merge symbols
17
end
18
19
def defined_but_unused_symbols
20
@defined - @used
21
end
22
23
def defined_symbols
24
@defined
25
end
26
27
def used_symbols
28
@used
29
end
30
31
def used_but_undefined_symbols
32
@used - @defined
33
end
34
end
35
end