문제

배경 : - 프로그래밍 언어 유효 사전 및 구문을 표현하는 공식 언어가 있습니다. 그러한 표현 (예 : 정규 표현 및 컨텍스트없는 문법)은 일부 도구 (EG LEX 및 YACC)를 사용하는 일부 프로그래밍 언어를 위해 Lexicon/Syntax 분석기로 자동 컴파일 될 수 있습니다.

질문 : - 프로그래밍 언어 의미론을 정의하기위한 공식 언어가 있습니까? - 이러한 공식 언어를 기반으로 시맨틱 분석기의 코드를 자동화하는 컴파일러가 있습니까? - 소스 코드 시맨틱 분석과 관련하여 읽을 리소스가 있습니까?

참고 : - 내 질문이 비현실적으로 발견 될 수 있습니다. 괜찮습니다… 저는 컴파일러의 초보자입니까? - 시맨틱 분석에 의해 나는 다음 코드 최적화 및 생성 단계에 필요한 소스 코드에서 필요한 정보를 실제로 수집한다는 것을 의미합니다 ... 여기에는 유형/경계 검사 등이 포함되어야합니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

프로그래밍 언어의 의미론을 정의하기위한 많은 체계가 있습니다. 운영 의미론 (언어를위한 통역사 구축에 해당), 혁신적 의미 (다른 의미론이 이미 존재하는 다른 언어로 번역하는 것) 등

현재는 실제 프로그래밍 언어를 위해 사용할 수있는 시스템으로 이어지는 사람은 거의 없습니다. 여기서 다른 답변 중 하나는 Centaur를 이것을하려고하는 시스템으로 제안합니다.행동 의미론 Peter Mosses는 최근에 더 심각한 시도 중 하나입니다.

실제 시스템의 경우, 더 많은 임시 방법이 현재 가장 효과적입니다. 어휘 및 문법 구문을 효과적으로 (LEX 및 YACC의 변형으로) 효과적으로 정의하고 자동으로 나무를 건설 할 수있는 이러한 유입 시스템. 속성 문법은 나무에 대한 계산 사양을 허용하여 기호 테이블 구성 또는 메트릭과 같은 일종의 분석을 정의 할 수 있습니다 (기술적으로는이 방법으로 의미 적 의미를 할 수 있음). 대부분의 기존 언어 (C, Java, C#, Cobol, ...)는 모두 제어 흐름 및 데이터 흐름과 관련하여 비교적 유사한 구조를 가지고 있으며, 결과적으로 이러한 표준 언어에 대해 추론 할 수 있도록 일반적인 흐름 분석 루틴을 구축 할 수 있습니다.

마지막으로 시맨틱 분석을위한 목적이 필요합니다. 정확히 어떤 사실을 추출하고 싶습니까? 사용 가능한 정적 분석 시스템에는 구문, 기호 테이블 및 관심있는 흐름 사실을 수집하기위한 하이브리드 패턴 중심/절차 코드 방법이 있습니다.

일부 시스템을 사용하면이 시맨틱 정보를 사용하여 소스 코드 수정을 수행 할 수 있습니다.

위의 더 많은 임시 접근 방식을 따르는 시스템 중 하나는 우리의 것입니다.DMS 소프트웨어 리엔지니어링 툴킷, 또한 Java, C, C ++ 및 COBOL과 같은 실제 언어에 대해 일반 시맨틱 정의 (구문, 심볼 테이블, 데이터 흐름 anlaysis)도 있습니다. DMS는 다양한 사실을 수집하는 절차에 의해 조절 된 AST에 소스 간 변환을 적용 할 수 있으며,이를 통해 안정적인 방식으로 코드를 질량 변환 할 수 있습니다.

다른 팁

언어 시맨틱을 프로그래밍하기위한 많은 공식 언어가 있습니다. Wikipedia 항목 Google에 대해 더 많은 용어를 위해. 나는 소량을했다 나의 초기 경력에서 (공식적인 방법과 연결되는 Wiki는 탐험을 시작할 수있는 또 다른 장소입니다). 나는 물어 보는 것을 제안한다 람다 궁극 그곳에있는 사람들이 그들 중 일부를 사용하는 포럼이며, 당신이 생각하는 어떤 유스 케이스에 사용해야할지 제안 할 수 있습니다. 이 종이 컴파일러 생성 측면에서 요청한 것과 다소 관련이있는 것 같습니다. 언어의 의미론과 컴파일러를 만들려면 대상 기계의 설명이 모두 필요합니다.

특히 정적 분석을 위해서는 살펴보십시오 http://rw4.cs.uni-sb.de/~martin/pag/

당신이 묘사하는 것은 Centaur 프로젝트에 관한 것과 정확히 다음과 같습니다.

http://www-sop.inria.fr/croap/centaur/centaur.html

실제로, 당신은 당신의 언어의 의미론을 묘사하는 데, 시스템이 당신에게 해당 언어에 대한 통역사를 줄 수있는 시점까지 (시맨틱을 완전히 묘사했을 때)까지 멀리 떨어져있을 수 있습니다. 그러나 당신은 끝까지 갈 필요가 없었습니다. 설명 작업을 적게 할 수 있지만 여전히 노력을 위해 구조화 된 편집기와 타이 테커를 얻을 수 있습니다.

프로젝트에 대한 작업이 중단되었지만 (내가 알 수있는 한) 흥미로운 기사를 찾아서 링크에서 다운로드 할 수 있습니다.

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