572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
|
# File 'lib/antlr3/token.rb', line 572
def define_token( name, value = nil )
name = name.to_s
if current_value = @types[ name ]
value ||= current_value
unless current_value == value
raise NameError.new(
"new token type definition ``#{ name } = #{ value }'' conflicts " <<
"with existing type definition ``#{ name } = #{ current_value }''", name
)
end
else
value ||= @unused
if name =~ /^[A-Z]\w*$/
const_set( name, @types[ name ] = value )
else
constant = "T__#{ value }"
const_set( constant, @types[ constant ] = value )
@types[ name ] = value
end
register_name( value, name ) unless built_in_type?( value )
end
value >= @unused and @unused = value + 1
return self
end
|