지금 MFC로 컴파일러개발중에 있는데요
심벌 테이블 안에 이름, 형, 레벨, 상대주소, 차원수, 라인번호 등의 속성을 넣을 수 있다고 하던데요
다른건 넣겠는데 상대주소와 특히 배열의 차원수는 어떻게 프로그래밍 해야 될지 모르겠어요
아시는 분은 꼭 좀 글을 올려주셨으면 합니다.
즐거운 하루 보내세요~~~
형과 차원수등의 정보는 AST 안에 넣어보시는 것이 어떨까요?
C#과 JAVA로 컴파일러를 만들고 있는데 되도록 심벌 테이벌은 간단하게 만들고 있습니다.
- 죠커's blog / HanIRC:#CN
학부 숙제로 C-like 언어의 컴파일러를 만든 적이 있습니다. 배열은 모두 1차원 배열만 있는 것으로 간주하고, 다차원 배열은 '배열을 원소로 갖는 배열' 로 만들어서, 타입의 정의를 간편하게 할 수 있었습니다.
참고가 되길 바랍니다.
class ArrayType : public Type { public: ArrayType( int length ) { this->length = length; this->elementType = NULL; } int length; Type* elementType; void SetElementType( Type* e ); //TODO:타입체크 - 어레이 길이 > 0 // 같은 타입 같은 길이의 Array인 경우에만 같은 타입임. virtual int GetForm() const { return ARRAY_TYPE; } virtual bool IsSame( const Type& other ) const; virtual bool CanConvertTo( const Type& to ) const; virtual string ToString() const; virtual int GetSize() const; virtual int GetAlignedSize() const; Type* GetFinalType() const; bool HasValidLength() const; };
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
형과 차원수등의 정보는 AST 안에 넣어보시는 것이 어떨까요?C#
형과 차원수등의 정보는 AST 안에 넣어보시는 것이 어떨까요?
C#과 JAVA로 컴파일러를 만들고 있는데 되도록 심벌 테이벌은 간단하게 만들고 있습니다.
- 죠커's blog / HanIRC:#CN
학부 숙제로 C-like 언어의 컴파일러를 만든 적이 있습니다. 배열은
학부 숙제로 C-like 언어의 컴파일러를 만든 적이 있습니다. 배열은 모두 1차원 배열만 있는 것으로 간주하고, 다차원 배열은 '배열을 원소로 갖는 배열' 로 만들어서, 타입의 정의를 간편하게 할 수 있었습니다.
참고가 되길 바랍니다.
댓글 달기