lib/rubylexer.rb in rubylexer-0.7.4 vs lib/rubylexer.rb in rubylexer-0.7.5
- old
+ new
@@ -200,11 +200,11 @@
@encoding=:ascii
@encoding=:utf8 if @file.skip( /\xEF\xBB\xBF/ ) #bom
if @file.skip( /\A#!/ )
loop do
til_charset( /[\s\v]/ )
- break if @file.skip( / ([^-\s\v]|--[\s\v])/,4 )
+ break if @file.match( / ([^-\s\v]|--[\s\v])/,4 )
if @file.skip( /.-K(.)/ )
case $1
when 'u'; @encoding=:utf8
when 'e'; @encoding=:euc
when 's'; @encoding=:sjis
@@ -975,11 +975,10 @@
@moretokens.concat divide_ws(ws,offset) if ws
@moretokens.push KeywordToken.new('::',offset+md.end(0)-2) if dc
loop do
offset=input_position
@file.scan(/\A(#@@WSTOKS)?(#@@UCLETTER#@@LETTER_DIGIT*)(::)?/o)
- #this regexp---^ will need to change in order to support utf8 properly.
md=@file.last_match
all,ws,name,dc=*md
if ws
@moretokens.concat divide_ws(ws,offset)
incr=ws.size
@@ -1018,17 +1017,18 @@
def keyword_elsif(str,offset,result)
result.unshift(*abort_noparens!(str))
@parsestack.push ExpectThenOrNlContext.new(str,@linenum)
return result
end
+
def keyword_begin(str,offset,result)
result.first.has_end!
@parsestack.push WantsEndContext.new(str,@linenum)
return result
end
-
alias keyword_case keyword_begin
+
def keyword_while(str,offset,result) #could be infix form without end
if after_nonid_op?{false} #prefix form
result.first.has_end!
@parsestack.push WantsEndContext.new(str,@linenum)
expect_do_or_end_or_nl! str
@@ -1036,11 +1036,10 @@
else #infix form
result.unshift(*abort_noparens!(str))
end
return result
end
-
alias keyword_until keyword_while
def keyword_for(str,offset,result)
result.first.has_end!
result.push KwParamListStartToken.new(offset+str.length)
@@ -1048,10 +1047,11 @@
@parsestack.push WantsEndContext.new(str,@linenum)
#expect_do_or_end_or_nl! str #handled by ForSMContext now
@parsestack.push ForSMContext.new(@linenum)
return result
end
+
def keyword_do(str,offset,result)
result.unshift(*abort_noparens_for_do!(str))
if ExpectDoOrNlContext===@parsestack.last
@parsestack.pop
assert WantsEndContext===@parsestack.last
@@ -2151,11 +2151,10 @@
assert FileAndLineToken===fal
@offset_adjust=@min_offset_adjust
@moretokens.unshift(*optional_here_bodies)
- result=@moretokens.shift
#adjust line count in fal to account for newlines in here bodys
i=@moretokens.size-1
while(i>=0)
#assert FileAndLineToken===@moretokens[i]
@@ -2166,15 +2165,16 @@
i-=1
end
if pre_fal
- @moretokens.unshift result
+ result=@moretokens.first
pre.offset=result.offset
- result=pre
+ @moretokens.unshift pre
end
start_of_line_directives
+ result=@moretokens.shift
return result
end
#-----------------------------------
EQBEGIN=%r/^=begin[ \t\v\r\n\f]$/