소스 검색

Better error message for reduce collisions in lalr

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.4
Erez Shinan 6 년 전
부모
커밋
9d84c52140
2개의 변경된 파일4개의 추가작업 그리고 1개의 파일을 삭제
  1. +3
    -0
      lark/parsers/grammar_analysis.py
  2. +1
    -1
      lark/parsers/lalr_analysis.py

+ 3
- 0
lark/parsers/grammar_analysis.py 파일 보기

@@ -35,6 +35,9 @@ class RulePtr(object):


def update_set(set1, set2):
if not set2:
return False

copy = set(set1)
set1 |= set2
return set1 != copy


+ 1
- 1
lark/parsers/lalr_analysis.py 파일 보기

@@ -91,7 +91,7 @@ class LALR_Analyzer(GrammarAnalyzer):

for k, v in lookahead.items():
if not len(v) == 1:
raise GrammarError("Collision in %s: %s" %(k, v))
raise GrammarError("Collision in %s: %s" %(k, ', '.join(['\n * %s: %s' % x for x in v])))

self.states[state] = {k:v[0] for k, v in lookahead.items()}



불러오는 중...
취소
저장