저는 Andrew Appel의 C로 현대 컴파일러 컴파일을 읽었습니다. 어휘 분석 단계에서 문자 스트림은 토큰으로 변환됩니다. 토큰은 어휘 표현식과 어휘 스펙에 수반되는 조치로 설명됩니다. 정규 표현식의 순서는 중요하며 동등한 NFA를 DFA로 변환 할 때 인코딩 될 우선 순위를 결정합니다. 어휘 사양이 완료되어야합니다. 그것이 Appel이 마지막 정규 표
컴파일러 디자인 과정에서 스캔 결과가 (토큰 코드, 심볼 테이블의 토큰 위치) 쌍 시퀀스 인입니다. 나는 "위치"부분의 의미에 대해 약간 혼란 스럽다. 심볼 테이블이 인덱스와 같은 인덱스 (예 : 배열)를 사용하여 액세스 할 수있는 구조로 표현 된 경우 "위치"가 명확하며 배열의 첫 번째, 두 번째, 99 번째 요소를 의미합니다. 소스 코드 예 : 주사의
Set에서 LinkedHashSet의 인스턴스로 인스턴스화하는 메서드 호출을 다시 작성하는 스칼라 컴파일러 플러그인을 작성하려고합니다. 불행히도 나는 이것을 이미 수행하고있는 실례를 찾을 수 없다. 다음 코드는 no-symbol does not have an owner와 함께 실패 기록을 위해 object DemoErasureComponent extends
나는 연산 결과를 저장하는 데 사용되는 누적 레지스터가 있고 명령어의 두 번째 피연산자가 팝업되어야하는 MIPS 용 스택 머신의 코드 생성을 이해하려고 노력 해왔다. 스택에서. 강의 및 비디오의 대부분은이 x + (y + z)와 같은 명령 시퀀스에 대해 이야기 한 다음 x가 스택으로 푸시되고 y가 누적기에로드되는 방식을 설명하는 것처럼 보입니다. 등등. 그
Windows에서 실행되는 C를 어셈블리로 변환하는 도구가 있습니까? cpu 아키텍처 (8 비트 및 16 비트)는 자체 명령 집합을 가지고 있음을 자체적으로 의미합니다. C 컴파일러는 자체 어셈블리 언어를 사용해야합니다. 언어는 x86 또는 ARM을 기반으로하지 않습니다. 회사의 지적 재산권이므로 더 많은 세부 정보를 제공 할 수 없습니다.
나는 내 컴파일러 클래스에 대한 C + + 컴파일러를 쓰고 있는데, 나는 이것을 궁금해했다. typedef int FOO;
typedef int BAR;
int test;
FOO i;
BAR j;
i = 1;
j = 2;
test = i + j; // Code clarity
이 작동하도록되어 : 산술 해당 형식 정의 사이 따라서, B/C
나는 C에서 우리가 쓸 수 있다면 알고 : void myFunction(int x[30]) // 30 is ignored by the compiler
void myFunction(int x[][30]) // 30 is not ignored here but if I put say '40' in the first dimension
//
C 소스 코드에 대한 일부 코드 최적화 및 데이터 흐름 분석을 작성하는 데 사용할 수있는 컴파일러 프레임 워크를 찾고 있습니다. LLVM이 있다는 것을 알고 있지만 바이트 코드보다는 소스 코드로 작업하고 싶습니다. 내가 LLVM-dragonegg를 조사하고 있었지만 데이터 흐름을 사용하여 그것을 통과하는 것이 얼마나 쉽 겠는가?
누군가가 c 프로그램이 goto와 블록 (레이블)을 구문 분석하기 위해 lex 및 yacc 파일을 코딩하는 방법을 이해할 수 있습니까? <statement> ::=
<variable> <inc> <semi>
| <variable> <assign> <null> <semi>
| <goto> <label> <semi>
하지만 어떻게 고유하게 식별하는 라