우선, 이것은 "자바 코드를 기계 코드로 컴파일하고 싶습니다"라는 귀하의 표준이 아닙니다. 저는 Java로 작성된 컴파일러에서 작업하고 있습니다. 특정 언어 (예 : Brainfuck)를 x86 어셈블리로 변환 한 후, 현재 NASM과 GCC를 사용하여 기계 코드를 생성하려고합니다. HotSpot JVM이 자바 바이트 코드를 기계어로 컴파일 할 수 있다
minipython 버전 (후위/접두사 증가 및 감소 연산자 사용)에 대해 sablecc에 대한 사양 파일을 작성하려고하지만 자연스럽게 일부 제작자는 식별자를 사용해야하지만 구문 분석 도중 다음과 같은 충돌이 발생합니다. shift/reduce conflict in state [stack: TPrint TIdentifier *] on TPlusPlus in
나는 컴파일러 디자인에 대한 책을 읽고 있었다 말한다 그것의 일부, 다른 언어의 컴파일러에서 가장 큰 차이점은 그들에 의해 생성 된 코드와 관련되어있다. 일반적으로 명령형 및 객체 지향 언어 용 컴파일러는 어셈블리 언어로 코드를 생성한다고 말할 수 있습니다. 기능 언어 컴파일러는 C 또는 C++로 생성됩니다. 마지막 부분은 C/C++입니까? Google 검
Java 소스 코드 표절 탐지기 용 렉서를 작성해야합니다. 다음은 내가 달성하고자하는 예입니다. //Java code Tokens:
public class Count { Begin Class
public static void main(String[] args) Var Def, Begin Method
throws
가정하자 나는이 다음과 같은 두 개의 파일, main.cpp : #include <iostream>
class A {};
void foo();
int main(void)
{
try {
foo();
}
catch(const A& e) {
std::cout << "Caught an A." << std
나는 충돌을 감소 나에게 세 가지 변화를주고 다음과 같은 문법이 있습니다 boolexpression: boolexpression OR boolterm
| boolterm ;
boolterm: boolterm AND boolfact
| boolfact;
boolfact: "!" "(" boolexpre
로드 세그먼트에로드 된 .text 섹션으로 ELF 실행 파일을 생성 중입니다. 그것은 잘 분해하지만, gdb 아래를 실행하려고하는 것은 During startup program terminated with signal SIGSEGV, Segmentation fault. readelf가 제공 제공 : ELF Header:
Magic: 7f 45 4c
저는 C와 비슷한 간단한 언어로 컴파일러를 작성하고 있습니다. , foo가 해결되지 않은 경우 struct Foo {
char* name;
};
struct Foo foo;
char* blah = foo.name;
특히,이 분석은 처리 할, 또는 name가 해결되지 않은 경우 등 두 가지 방법으로 나는이 이름 확인 함께 접근 : 나는 다음
실험을 위해 LLVM을 확장 중입니다. 따라서 가변 사용 및 그 종속성을 추적하려고합니다. 예를 들어 두 피연산자의 비교로 인해 발생하는 조건 분기를 찾은 후에 해당 변수의 모든 사용법을 역 추적하고 모든 종속성을 결정해야합니다 (이 변수는 조건의 피연산자를 계산하는 데 사용됩니다). 나를 위해, 이것은 일종의 재귀 backtrack 작업의 것 같습니다.
나는 들소 새로운 그리고 난/감소 충돌 이동에 문제가 ... 나는 C 언어에 대한 문법 규칙을 쓰고 있어요 : ID는 식별하는 토큰 이 규칙은 괄호 안에 작성된 경우에도 식별자를 사용할 수 있음을 보장하기 위해 작성했습니다. 들소 충돌 id : '(' ID ')' {printf("(ID) %s\n", $2);}
| ID {printf