0
PLY를 사용하여 파서를 작성 했으므로 필요한 작업을 수행합니다. 이제 파서 클래스를 사용하여 여러 파일을 구문 분석하고 싶습니다. 각 파일의 파서 클래스를 인스턴스화하는 대신 모든 파일에 대해 동일한 인스턴스화 된 클래스를 다시 사용하여 파서 클래스에서 일부 결과를 누적 할 수 있습니다.PLY 파서를 다시 초기화합니다.
한 파일의 구문 분석이 제대로 완료되지 않아서 다른 파일을 제공하기 전에 파서를 다시 초기화하고 싶습니다.
PLY 파서를 다시 초기화하는 올바른 방법은 무엇입니까?
parser = yacc.yacc()
for file in file_list:
with open(file) as fp:
parser.parse(fp.read())
... # accumulate logging info
parser.restart() # this discards the entire parsing stack and resets the parser to its initial state
: 여러 파일에 대해 동일한 파서를 재사용 할 경우
(면책 조항 : PLY는 사용하지 않습니다.) 보관하려는 데이터 유형의 예와 그 이유를 제공하면 더 많은 답변을 얻을 수 있습니다. PLY _does_가 안전한 재 초기화 메소드를 가지고 있다면, 유지하려는 정확한 값을 _un_- 다시 초기화 된 상태로 남겨 두지 않을 것입니다. ... 그 문제에 관해서는 사전에 각 파서로부터, 또는 파싱 된 파일마다 하나의 사전에 보관하고 싶은 데이터를 누적하는 것이 더 낫지 않습니까? –
Verilog 파서를 작성 중이며 여러 Verilog 파일을 처리합니다. 그들 중 일부는 파일을 파싱 할 때 파서가 재미있는 상태로 멈추도록 오류를 포함 할 수 있습니다. 나는 파서를 재사용하여 파서 객체를 분해하고 새로운 파서 객체를 만들 필요가 없다고 생각했다. 또한 클래스의 여러 입력 파일에서 파싱 된 결과를 유지할 수 있습니다. – user2756376
"그 중 일부는 오류가있어 파서가 재미있는 상태로 멈출 수 있습니다"라는 메시지와 함께 "여러 개의 입력 파일에서 파싱 된 결과를 유지할 수 있습니다"라는 메시지가 나타나 첫 번째 종류의 오류를 좋은 결과로 혼합하는 것처럼 들립니다 두 번째. 하지만 나는 여기서 내 영역을 벗어 났으므로이 질문을 다른 사람에게 남겨 두겠습니다. 나는 당신이 당신의 코멘트에서 당신의 질문에 대한 세부 사항을 당신이 편집 할 것을 제안합니다 - 그들은 여기 아래로 주목받지 못할 것입니다. –