Browse Source

Columns now start at 1

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.6.0
Erez Shinan 6 years ago
parent
commit
2b4ef11ebf
3 changed files with 10 additions and 10 deletions
  1. +2
    -2
      lark/lexer.py
  2. +2
    -2
      lark/parsers/xearley.py
  3. +6
    -6
      tests/test_parser.py

+ 2
- 2
lark/lexer.py View File

@@ -63,7 +63,7 @@ class LineCounter:
self.newline_char = '\n'
self.char_pos = 0
self.line = 1
self.column = 0
self.column = 1
self.line_start_pos = 0

def feed(self, token, test_newline=True):
@@ -78,7 +78,7 @@ class LineCounter:
self.line_start_pos = self.char_pos + token.rindex(self.newline_char) + 1

self.char_pos += len(token)
self.column = self.char_pos - self.line_start_pos
self.column = self.char_pos - self.line_start_pos + 1

class _Lex:
"Built to serve both Lexer and ContextualLexer"


+ 2
- 2
lark/parsers/xearley.py View File

@@ -53,7 +53,7 @@ class Parser:
match = self.term_matcher

text_line = 1
text_column = 0
text_column = 1

def predict(nonterm, column):
assert not nonterm.is_term, nonterm
@@ -128,7 +128,7 @@ class Parser:

if token == '\n':
text_line += 1
text_column = 0
text_column = 1
else:
text_column += 1



+ 6
- 6
tests/test_parser.py View File

@@ -854,22 +854,22 @@ def _make_parser_test(LEXER, PARSER):
l = _Lark(g)
a, bc, d = l.parse("AB\nCD").children
self.assertEqual(a.line, 1)
self.assertEqual(a.column, 0)
self.assertEqual(a.column, 1)

bc ,= bc.children
self.assertEqual(bc.line, 1)
self.assertEqual(bc.column, 1)
self.assertEqual(bc.column, 2)

self.assertEqual(d.line, 2)
self.assertEqual(d.column, 1)
self.assertEqual(d.column, 2)

if LEXER != 'dynamic':
self.assertEqual(a.end_line, 1)
self.assertEqual(a.end_column, 1)
self.assertEqual(a.end_column, 2)
self.assertEqual(bc.end_line, 2)
self.assertEqual(bc.end_column, 1)
self.assertEqual(bc.end_column, 2)
self.assertEqual(d.end_line, 2)
self.assertEqual(d.end_column, 2)
self.assertEqual(d.end_column, 3)





Loading…
Cancel
Save