문제

소프트웨어 기초를 개발하고 위해 사용 signficant 의 양 yacc 는 나는 필요하지 않습니다.몇 번가 될 것이라고 생각을 이해하는 데 도움이 되는 몇 가지 문제가 찾을 하지만 대부분의 시간에 멀리 얻을 수 있습니다 내 완료 무 yacc.

나의 질문은 거기에는 충분한 새로운 프로젝트 거기에 여전히 사용하는 yacc 을 보증하는 시간이 나는 것을 배울 필요가요?

편집:주어진 응답이 대부분의 부탁에 학습 Yacc,있는 비슷한 언어를 하는 것을 권장해 yacc?

도움이 되었습니까?

해결책

예,이러한 공구 가치가 있는 학습해야 하는 경우를 만들거나 수정할 수 코드는 구문 분석하면 문법이다.

많은 년간적인 도구를 생성하는 코드는 구문 분석하여 문법이었 yacc,또는 그 GNU 사촌,bison.

최근에 들었어요 몇 가지의 블록에 새로운 아이지만,그 원리는 동일합니다:당신이 쓰는 선언적인 문법는 형식으로 더 많거나 적은에서뿐만-Naur Form(BNF 다)및 yacc/bison/무엇을 생성하는 코드를 매우 지루한 작업을 쓰고 있습니다.

또한,원칙 뒤에 문법은 매우 유용할 수 있습을 배우지 않는 경우에도 필요한 작업은 이러한 코드에 직접 있습니다.나는 일을 하지 않았으로서 많은 이 과정에서는 컴파일러 디자인에서는 대학이지만,이해 런타임 스택,예측 구문 분석,식 평가,그리고 많은 다른 관련된 일이 있었는 대단히 작성하고 디버깅 나의 코드를 효과적으로.

편집: 주어진 후속 질문에 대해 다른 도구를 Yacc/Bison 의 코스가 최고의 위한 C/C++프로젝트 때문에,그들은 C 코드를 생성.비슷한 도구를 다른 언어가 있습니다.모든 문법은,어떤 파서 생성기만 grok 문법의 특정 복잡합니다.그래서 필요할 수 있는 도구를 찾을 수 있습문 분석의 문법입니다.보 http://en.wikipedia.org/wiki/Comparison_of_parser_generators

다른 팁

I don't know about 새로운 프로젝트를 사용하여 그것은 그러나 나에 관련된 일곱 가지 유지보수를 사용하는 작업이 렉스 및 yacc 처리를 위한 구성 파일이 있습니다.

아 XML for me,no-선생님-ee:-).

솔루션을 사용하여 lex/yacc 단계에서의 오래된 파일의 구성 key=val 라인 때문에 그들은 더 나은 계층적 구조는 다음과 같:

server = "mercury" {
    ip = "172.3.5.13"
    gateway = "172.3.5.1"
}
server = "venus" {
    ip = "172.3.5.21"
    gateway = "172.3.5.1"
}

그리고,그렇다,나는 당신이 할 수 있는 XML 지만,이들은 주로 유산으로 작성된 응용 프로그램에서는 C 고,정직하게,나 아마도 사용 lex/yacc 에 대한 새로운(Java)작업뿐만 아니라.

기 때문에 내가 선호하 제공하는 소프트웨어에서 시간과 예산보다는 전달하는 가장 큰 새로운 능-bang 기술-내 클라이언트를 지불하지 않을 것에 대한 교육,그들은 원하는 결과를 가장 먼저 나는 이미에서 전문가가 lex/yacc 고 있는 모든 코드 템플릿을 위한 하고 있습니다.

엄지 손가락의 일반적인 규칙:코드 오랜 시간 지속,그래서 기술에서 사용하는 코드,오랜 시간이 지난 너무입니다.그것은 엄청난 양의 시간을 교체 codebase 당신이 언급한(그것은 15 년이 걸렸을 구축하다),는 의미는 그것은 아직 주위에 5,10,또는 더 년입니다.(도있는 기회는 누구를 읽고 이에 응답 종료됩니다.)

다른 엄지손가락의 규칙:면 일반적인 용도의 기술이 평범하다는 것이 충분히 당신이 그것을 발견,이미 그것은 아마도로 평범하는 것에 대해 이해하고 있어야 합니다 그것 때문에,당신은 그것을 다시 한 날이다.누가 알 겠어:숙지하여,어쩌면 당신은 추가하는 유용한 도구자...

Yacc 는 이러한 기술 중 하나:당신은 아마을 실행하려고 그것으로 다시,그것은 어렵지 않 원칙,그리고 당신은 배우 적용의 가족을 파서 생성자입니다.

나무 못 은 새로운 괴로움이 있지만,여전히의 톤을 사용하는 프로젝트 yacc 또는 도구로 보다 더 현대적인 yacc.내가 싫하는 새로운 프로젝트를 사용하도록 선택한 yacc 지만,기존 프로젝트에 대한 포팅하는 더 현대적인 도구를하지 않을 수 있습니다.이것을 거친과 친숙 yacc 유용한 기술입니다.

만약 당신이 완전히 익숙하지 않은 항목의 파서 생성기 나에 대하여 자세히 알아보십시오 하나는,모든 하나입니다.개념의 대부분은 휴대용 사다.또한,그것은 유용한 도구로서 벨트:일단 당신이 알고 하나 당신은 이해할 수 있는 방법은 종종 우수한 것에 비해 regex 무거운 손으로 쓴 parsers.당신은 편안한 주제의 들어가지 않을 것에 대해 걱정하다.당신은 배우 yacc 필요한 경우에는 얻기 위하여할 수 있습니다.

나는 작업에 사용하는 프로젝트 Yacc.새로운드-그러나 그들은 새로운,그들은 아직도 사용하 Yacc 또는 가까운 친척(들소,Byacc,...).

그렇다,나는 그것에 대해 학습 가치가에서 작업하는 경우 C.

또한 학습을 고려한 ANTLR,또는 다른 좀 더 현대적인 파서 생성기.그러나 지식의 Yacc 것입니다 좋은 대신에 서서-그것은 당신을 도울 것입니다 어떤 다른 유사한 공구기 때문에,너무 많은 기본적인 이론과 비슷합니다.

I don't know about yacc/bison 특히,그러나 내가 사용 antlr,컵,jlex 및 javacc.나는 생각은 그들만의 accademic 중요성,그러나 우리는 필요한 도메인 특정 언어로,그리고 이 우리에게 훨씬 더 좋은 해결책보다 일부는"간단한"(regex 기반으로)파서는 거기에있다.유지보수가 문제가 될 수 있는 많은 환경에서도 이더 이러한 일이 없는 경험과 분석 도구입니다.

가 없었습니다 비교하는 기회를 다른 분석 시스템 그러나 나는 확실히 추천 ANTLR 내 자신의 경험을 기반으로 하며 또한 큰 활성 사용자 기초입니다.

다른 플러스 포인트 ANTLR 가 ANTLRWorks:이 ANTLR GUI 개발 환경 큰 도움이되는 동안 개발하고 디버깅하 grammars.저는 아직 다른 분석 시스템에 의해 지원되는 등 IDE 입니다.

우리는 새로운 yacc 코드 회사에서 운송을 위한 제품입니다.예,이 물건은 아직도 사용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top