A Hash subclass designed for mapping word lists to token types.
A WordList is a Hash with some additional features. It is intended to be used for keyword recognition.
WordList is optimized to be used in Scanners, typically to decide whether a given ident is a special token.
For case insensitive words use WordList::CaseIgnoring.
Example:
# define word arrays RESERVED_WORDS = %w[ asm break case continue default do else ] PREDEFINED_TYPES = %w[ int long short char void ] # make a WordList IDENT_KIND = WordList.new(:ident). add(RESERVED_WORDS, :reserved). add(PREDEFINED_TYPES, :predefined_type) ... def scan_tokens tokens, options ... elsif scan(%r[A-Za-z_][A-Za-z_0-9]*/) # use it kind = IDENT_KIND[match] ...
Create a new WordList with default
as default value.
# File lib/coderay/helpers/word_list.rb, line 43 def initialize default = false super default end
Add words to the list and associate them with value
.
Returns self
, so you can concat add calls.
# File lib/coderay/helpers/word_list.rb, line 50 def add words, value = true words.each { |word| self[word] = value } self end