Comments (6)
Thanks for the issue report. I'll try and get to this, and the other issues, this week.
from rltk.
@chriswailes this should fix the issue #39.
Would be nice to have this tested, QAd and merged asap, so we can rely on a more reliable line_offset
:)
from rltk.
I merged the pull request, but it didn't seem to be related to this issue. I was unable to reproduce the initial problem. Here is the code I was using:
require 'rltk'
class TestLexer < RLTK::Lexer
rule(/\s/)
rule(/a/) { :A }
end
begin
TestLexer.lex(' aaab')
rescue RLTK::LexingError => e
puts e.message
puts "Line number: #{e.line_number}"
puts "Line offset: #{e.line_offset}"
end
This code correctly reports the offending character's offset as 6.
Output:
Unable to match string with any of the given rules: b
Line number: 1
Line offset: 6
from rltk.
Sorry, I reported a very bad example - got confused myself :/ I'll take another chance to show you that the problem was there and now it's gone. Take the following code (inspired by yours):
require 'rltk'
class TestLexer < RLTK::Lexer
rule(/a/) { :A }
rule(/[^ab]+/m) { :OTHER }
end
def lex(input)
puts ">> Parsing #{input.inspect}..."
TestLexer.lex(input)
rescue RLTK::LexingError => e
puts e.message
puts "Line number: #{e.line_number}"
puts "Line offset: #{e.line_offset}"
end
lex(" \n\naaab")
puts "-" * 20
lex(" \n\n aaab")
Output with RLTK 3.0.0
The output we get for the second string shows a wrong line_offset
(3)...
>> Parsing " \n\naaab"...
Unable to match string with any of the given rules: b
Line number: 3
Line offset: 3
--------------------
>> Parsing " \n\n aaab"...
Unable to match string with any of the given rules: b
Line number: 3
Line offset: 3
Output with RLTK 3.0.1
The output we get for the second string has a correct line_offset
(11)...
>> Parsing " \n\naaab"...
Unable to match string with any of the given rules: b
Line number: 3
Line offset: 3
--------------------
>> Parsing " \n\n aaab"...
Unable to match string with any of the given rules: b
Line number: 3
Line offset: 11
from rltk.
@chriswailes ^^^^ :^)
from rltk.
I was definitely convinced that your patch fixed a problem; I just wanted to make sure it fixed this problem as well :-)
from rltk.
Related Issues (20)
- Fix EBNF/selector interplay bug
- Move to LLVM 3.6 HOT 1
- Remove support for LLVM::JIT in anticipation of LLVM 3.6 release
- Rejecting a clause in a production HOT 2
- A more complete example for error production HOT 2
- require 'rltk/ast' pollute main Object with #match method, leaking it in a global scope HOT 7
- :pointer argument is not a valid pointer
- Calling #type on RLTK::CG::Value throws an error
- JITCompiler segfaults on OSX
- Split the LLVM bindings into their own project: RCGTK
- RLTK::Parser.finalize use: fails to load cache on Windows
- left/right associativity maintains separate precedence stacks
- LLVM HOT 2
- undefined method `subclass_of?' HOT 1
- Requires Ruby >= 2.4.0 due to Filigree HOT 1
- rltk (3.0.1) does not work with filigree (0.4.1) due to check_type signature
- Cannot Generate YARD documentation
- Make a release? HOT 2
- "String not in language" error HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rltk.