드디어 컴파일러 프로젝트 끝!

MasterQ의 이미지

이번 학기 시작 즈음에 Ada/CS 컴파일러를 만든다고 KLDP에 글을 올린적이 있는데, 오늘부로 submit을 했습니다.

100% 완성은 못하고 (한다는게 어려울듯...), 12주라는 짧은 시간에 동작하는 녀석을 만들기 위해서 저와 그룹멤버들은 수많은 시간을 보냈습니다.. ^^ 그래서 예전에 쓴것 같이 컴파일러에 관심있으신 분들을 위해서 소스를 올리려고 합니다. 아직 완성이 안된 기능들이 꽤 있기때문에 (exception, non-solaris support 등등) 할것들은 아직도 꽤 많은 상태입니다. 게다가 급하게 짜느라 brain-damaged 된 코드들도 있고 dirty hack과 최고로 비효율적인 코드들도 곳곳에 있습니다. 부끄러울수도 있지만 공개하려는 이유는 여지까지 한것이 "되게하는것"이 목적이었다면 앞으론 발전시키고 또 즐기면서 놀수 있는 또 하나의 "장난감"을 여러사람들과 공유하고 싶은 생각이 들어서 입니다. 또 외부 코드를 절대 쓰지 말것이라는 규칙이 있었기때문에 필요한 tool부터 전부 모여 있어서 처음 시작하려는 사람들도 쉽게 참여 할수 있을것 같습니다.

tool들과 test case를 빼면 메인코드는 2만줄정도가 되는데 4월말쯤에 시험이 끝나면 올리도록 하겠습니다. 첨부는 문서와 finbonacci 수를 만드는 함수와 그것을 컴파일한 코드로 돌리는 모습입니다.

Ada/CS 문서(PDF)

댓글

ed.netdiver의 이미지

오오옷, 와방 멋져요~*^^*;;

\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

Fe.head의 이미지

멋지십니다 -_-b

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

lacovnk의 이미지

와우! 잘 진행되었나보군요. 멋지십니다 :)

외부 tool이라면.. lex나 yacc같은 것도 사용 안한 것인가요? 정말 수고하셨네요~

http://home.lacovnk.net/

MasterQ의 이미지

네에 lex나 yacc도 사용하지 않았습니다. 그래서 그 툴들이 있다는것만 알고 사용해보지를 못했네요. (얼른 배워야지요.. ^^) 대용으로 DFA를 테이블로 만들어 주는것을 따로 만들었습니다. 정말 딱 필요한것만 만든셈이지요.

부비컴의 이미지

딴소리입니다만. ㅡ,.ㅡ

이런 이미지보면..저런 깨끗한 화면은 어떻게 나오는 걸까 궁금합니다.
없는실력에 UBUNTU KDE GNOME을 쓰고 있는데...

글씨가 뿌옇게 나와서.. 눈이 아파요.

chadr의 이미지

와. 멋지십니다.. 소스 공개하시는 날이 기대됩니다 :)
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.