diff --git a/lib/lrama/new_lexer.rb b/lib/lrama/new_lexer.rb index 02c0614c..18b746d2 100644 --- a/lib/lrama/new_lexer.rb +++ b/lib/lrama/new_lexer.rb @@ -127,9 +127,12 @@ def lex_c_code code += @scanner.matched newline when @scanner.scan(/"/) - matched = @scanner.scan_until(/"/)[0..-2] - code += %Q("#{matched}") + matched = @scanner.scan_until(/"/) + code += %Q("#{matched}) @line += matched.count("\n") + when @scanner.scan(/'/) + matched = @scanner.scan_until(/'/) + code += %Q('#{matched}) else code += @scanner.getch end diff --git a/spec/lrama/new_parser_spec.rb b/spec/lrama/new_parser_spec.rb index c5ecda4b..f61caae9 100644 --- a/spec/lrama/new_parser_spec.rb +++ b/spec/lrama/new_parser_spec.rb @@ -797,7 +797,7 @@ class : keyword_class { code 4 } tSTRING '?' keyword_end %prec tEQ { code 5 } { end describe "\" in user code" do - xit do + it do y = header + <<~INPUT %% @@ -818,13 +818,13 @@ class : keyword_class expect(codes[0].s_value).to eq(<<-STR.chomp) func("}"); - + STR end end describe "' in user code" do - xit do + it do y = header + <<~INPUT %% @@ -845,7 +845,7 @@ class : keyword_class expect(codes[0].s_value).to eq(<<-STR.chomp) func('}'); - + STR end end