From 6d43868b4d45c1dd3c5ae9b165e08762984937d5 Mon Sep 17 00:00:00 2001 From: Riddle <75004732+Aimware0@users.noreply.github.com> Date: Fri, 17 Jun 2022 22:00:50 -0400 Subject: [PATCH 1/2] added error msg --- src/nip/lexer.py | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/nip/lexer.py b/src/nip/lexer.py index 4b2bf6f..5545b31 100644 --- a/src/nip/lexer.py +++ b/src/nip/lexer.py @@ -307,28 +307,22 @@ class Lexer: if self.current_section == NipSections.PROP: # TODO: The second checks (i.e NTIPAliasClass and self.tokens[-2].type == TokenType.CLASS:) seem a little misplaced, possibly put them inside the validation function that is inside transpiler.py and throw a warning accordingly. - if lookup_key in NTIPAliasClass and self.tokens[-2].type == TokenType.KeywordNTIPAliasClass: - return Token(TokenType.ValueNTIPAliasClass, lookup_key) - elif lookup_key in NTIPAliasQuality and self.tokens[-2].type == TokenType.KeywordNTIPAliasQuality: - return Token(TokenType.ValueNTIPAliasQuality, lookup_key) - elif lookup_key in NTIPAliasClassID and self.tokens[-2].type == TokenType.KeywordNTIPAliasName: - return Token(TokenType.ValueNTIPAliasClassID, lookup_key) - elif lookup_key in NTIPAliasFlag and self.tokens[-2].type == TokenType.KeywordNTIPAliasFlag: - return Token(TokenType.ValueNTIPAliasFlag, lookup_key) - elif lookup_key in NTIPAliasType and self.tokens[-2].type == TokenType.KeywordNTIPAliasType: - return Token(TokenType.ValueNTIPAliasType, lookup_key) - elif self.tokens[-2].type == TokenType.KeywordNTIPAliasIDName: - return Token(TokenType.ValueNTIPAliasIDName, lookup_key) - # if self.tokens[-2].type != TokenType.KeywordNTIPAliasIDName: # * Make sure the last token isn't [idname] - # # Add all the NTIPAlias* to a dict - # NTIPAliasAll = NTIPAliasClass | NTIPAliasQuality | NTIPAliasClassID | NTIPAliasFlag | NTIPAliasType - # for key in NTIPAliasAll: - # if levenshtein(lookup_key, key) < 3: - # raise NipSyntaxError( "NIP_0x4", f"Unknown NTIP lookup: {lookup_key} did you mean {key}?", self._get_text()) - # else: - # return Token(TokenType.ValueNTIPAliasIDName, lookup_key) - - return Token(TokenType.UNKNOWN, lookup_key) + if len(self.tokens) >= 2: + if lookup_key in NTIPAliasClass and self.tokens[-2].type == TokenType.KeywordNTIPAliasClass: + return Token(TokenType.ValueNTIPAliasClass, lookup_key) + elif lookup_key in NTIPAliasQuality and self.tokens[-2].type == TokenType.KeywordNTIPAliasQuality: + return Token(TokenType.ValueNTIPAliasQuality, lookup_key) + elif lookup_key in NTIPAliasClassID and self.tokens[-2].type == TokenType.KeywordNTIPAliasName: + return Token(TokenType.ValueNTIPAliasClassID, lookup_key) + elif lookup_key in NTIPAliasFlag and self.tokens[-2].type == TokenType.KeywordNTIPAliasFlag: + return Token(TokenType.ValueNTIPAliasFlag, lookup_key) + elif lookup_key in NTIPAliasType and self.tokens[-2].type == TokenType.KeywordNTIPAliasType: + return Token(TokenType.ValueNTIPAliasType, lookup_key) + elif self.tokens[-2].type == TokenType.KeywordNTIPAliasIDName: + return Token(TokenType.ValueNTIPAliasIDName, lookup_key) + else: + raise NipSyntaxError("NIP_0x20", f"Too few tokens to lookup {lookup_key}", self._get_text()) + return Token(TokenType.UNKNOWN, lookup_key) elif self.current_section == NipSections.STAT: if lookup_key in NTIPAliasStat: return Token(TokenType.ValueNTIPAliasStat, lookup_key) From 4b2e1f7059af5b42e436c0caafb78465162054d9 Mon Sep 17 00:00:00 2001 From: Riddle <75004732+Aimware0@users.noreply.github.com> Date: Fri, 17 Jun 2022 22:03:50 -0400 Subject: [PATCH 2/2] Better error message --- src/nip/lexer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nip/lexer.py b/src/nip/lexer.py index 5545b31..623db9e 100644 --- a/src/nip/lexer.py +++ b/src/nip/lexer.py @@ -321,7 +321,7 @@ class Lexer: elif self.tokens[-2].type == TokenType.KeywordNTIPAliasIDName: return Token(TokenType.ValueNTIPAliasIDName, lookup_key) else: - raise NipSyntaxError("NIP_0x20", f"Too few tokens to lookup {lookup_key}", self._get_text()) + raise NipSyntaxError("NIP_0x20", f"Bad token sequence: {self._get_text()}", self._get_text()) return Token(TokenType.UNKNOWN, lookup_key) elif self.current_section == NipSections.STAT: if lookup_key in NTIPAliasStat: