Browse Source

Indenter now throws DedentError instead of AssertionError

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.11.2
Erez Sh 3 years ago
parent
commit
2ffb55b88f
1 changed files with 6 additions and 1 deletions
  1. +6
    -1
      lark/indenter.py

+ 6
- 1
lark/indenter.py View File

@@ -1,8 +1,12 @@
"Provides Indentation services for languages with indentation similar to Python" "Provides Indentation services for languages with indentation similar to Python"


from .exceptions import LarkError
from .lexer import Token from .lexer import Token


###{standalone ###{standalone
class DedentError(LarkError):
pass

class Indenter: class Indenter:
def __init__(self): def __init__(self):
self.paren_level = None self.paren_level = None
@@ -26,7 +30,8 @@ class Indenter:
self.indent_level.pop() self.indent_level.pop()
yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token) yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token)


assert indent == self.indent_level[-1], '%s != %s' % (indent, self.indent_level[-1])
if indent != self.indent_level[-1]:
raise DedentError('Unexpected dedent to column %s. Expected dedent to %s' % (indent, self.indent_level[-1]))


def _process(self, stream): def _process(self, stream):
for token in stream: for token in stream:


Loading…
Cancel
Save