«compilers» 태그된 질문

한 언어 (소스 언어)로 코드를 읽고 다른 언어 (대상 언어)로 동등한 프로그램으로 번역하는 프로그램에 대한 질문입니다.

4
왜 왼쪽 재귀가 나쁜가요?
이 질문은 컴퓨터 과학 스택 교환에서 대답 할 수 있기 때문에 이론적 인 컴퓨터 과학 스택 교환에서 마이그레이션 되었습니다. 6 년 전에 이주했습니다 . 컴파일러 디자인에서 왜 문법에서 왼쪽 재귀를 제거해야합니까? 나는 그것이 무한한 재귀를 일으킬 수 있기 때문에 읽히고 있지만 올바른 재귀 문법에도 해당되지 않습니까?

3
컨텍스트가없는 임의의 문법, 주로 짧은 스 니펫 구문 분석
사용자 정의 도메인 특정 언어를 구문 분석하고 싶습니다. 이 언어는 일반적으로 수학 표기법에 가깝습니다 (자연어를 구문 분석하지 않습니다). 사용자는 다음과 같이 BNF 표기법으로 DSL을 정의합니다. expr ::= LiteralInteger | ( expr ) | expr + expr | expr * expr like like 입력은 1 + ( 2 * 3 )승인되어야하고, …


2
많은 업계에서 사용되는 컴파일러에서 연속 전달 스타일보다 정적 단일 할당이 선호되는 이유는 무엇입니까?
SSA (Static-Single Assignment) 의 Wikipedia 페이지에 따르면 SSA는 LLVM, GCC, MSVC, Mono, Dalvik, SpiderMonkey 및 V8과 같이 크고 잘 알려진 프로젝트에서 사용되는 반면 연속 전달 스타일을 사용 하는 프로젝트 페이지는 SSA를 사용합니다. (CPS) 는 비교가 약간 부족합니다. 필자는 CPS가 주로 기능적 언어를 구현하는 컴파일러와 인터프리터에 의해 선호된다는 개념을 가지고 있습니다. …

1
왜 렉싱과 파싱을 분리해야합니까?
상태 머신에서 단일 패스를 사용하여 문서를 구문 분석 할 수 있습니다. 두 번 통과하면 어떤 이점이 있습니까? 텍스트를 토큰으로 변환 할 수있는 어휘 분석기가 있고 해당 토큰에 대한 생산 규칙을 ​​테스트 할 파서가 있습니까? 텍스트에 직접 제작 규칙을 적용하는 단일 패스가없는 이유는 무엇입니까?

1
제품 유형에 따른 유형 유추
연결 언어에 대한 컴파일러를 개발 중이며 형식 유추 지원을 추가하고 싶습니다. Hindley–Milner를 이해하고 있지만 유형 이론을 배우고 있으므로이를 적용하는 방법을 잘 모르겠습니다. 다음과 같은 시스템은 소리가 나지 않으며 추론 할 수 없습니까? 용어는 리터럴, 용어 구성, 용어 인용 또는 기본형입니다. e::=x∣∣ee∣∣[e]∣∣…e::=x|ee|[e]|… e ::= x \:\big|\: e\:e \:\big|\: [e] \:\big|\: \dots …


2
단점의 속성은 꼬리 재귀 모듈러스 단점을 제거 할 수 있습니까?
호출의 직접 결과를 반환하는 함수를 반복 루프로 다시 작성할 수있는 기본 꼬리 재귀 제거 아이디어에 익숙합니다 . foo(...): # ... return foo(...) 또한 특수한 경우 재귀 호출이에 대한 호출로 래핑 된 경우에도 함수를 다시 작성할 수 있음을 이해합니다 cons. foo(...): # ... return (..., foo(...)) 어떤 속성 cons이 이것을 허용합니까? …


3
바이너리 데이터에서 렉서 / 파서를 사용하는 것이 왜 그렇게 잘못 되었습니까?
나는 종종 파서 결합기 와 달리 lexer / parsers 와 함께 일하고 파싱에서 수업을 한 적이없는 사람들을보고 바이너리 데이터 파싱에 대해 묻습니다. 일반적으로 데이터는 이진일뿐만 아니라 상황에 따라 다릅니다. 이것은 기본적으로 한 유형의 토큰, 바이트 토큰 만 갖습니다. 누군가 파싱 수업을 듣지 않고 이론에 기반을 둔 CS 학생에게 충분한 명확성으로 …


3
'삼림 벌채'는 프로그램에서 '나무'를 어떻게 제거합니까?
삼림 벌채가 어떻게 폴드와 펼치기 기능에서 동시에 목록을 소비하고 생성하는지 이해합니다. ( CodeReview 에서이 좋은 답변을 참조하십시오.)이 기술에 대한 위키 백과 항목 과 비교했을 때 '제거'에 대해 이야기했습니다. 프로그램에서 나무. 프로그램을 구문 분석 구문 분석 트리로 구문 분석하는 방법을 이해하지만 (그렇습니다?) 어떤 종류의 프로그램 단순화를 위해 산림 벌채를 사용한다는 의미는 …

2
LL (k)와 LR (k) 문법을 구별 할 수있는 방법이 있습니까?
최근 컴파일러 디자인에 대해 공부하고 있습니다. 두 가지 유형의 문법에 대해 알게되었습니다. 하나는 LL 문법이고 다른 하나는 LR 문법입니다. 또한 모든 LL 문법이 LR이고 LL 문법 인 LR 문법의 적절한 부분 집합이라는 사실도 알고 있습니다. 첫 번째는 하향식 구문 분석에 사용되고 두 번째는 상향식 구문 분석에 사용됩니다. 그러나 주어진 문법이 …

3
이 문법 LL (1)은 어떻습니까?
이것은 드래곤 북의 질문입니다. 이것은 문법입니다 : S→AaAb∣BbBaS→AaAb∣BbBaS \to AaAb \mid BbBa A→εA→εA \to \varepsilon B→εB→εB \to \varepsilon 질문은 그것이 LL (1)이지만 SLR (1)이 아님을 표시하는 방법을 묻습니다. 그것이 LL (1)임을 증명하기 위해 파싱 테이블을 구성하려고 시도했지만 셀에서 여러 프로덕션을 얻습니다. 이는 모순입니다. 이 LL (1)이 어떻고 그것을 증명하는 방법을 …

1
"CPS"접근 방식은 SML / NJ의 성능에 큰 해를 끼쳤습니다. 원하는 추론
Learning F #에 대한 의견 : 기능 개념을 배우기 위해 다른 프로그래밍 언어를 사용하는 어떤 책을 F #으로 변환 할 수 있습니까? 마카 리우스의 말 : "CPS"접근 방식은 SML / NJ의 성능에 큰 해를 끼쳤습니다. 물리적 평가 모델이 하드웨어에 내장 된 너무 많은 가정을 위반합니다. Isabelle / HOL과 같은 SML의 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.