Programmable HTML #0

2024년도에 해야할 것들이 이제 정해져 갑니다. 그 중에 하나로


HTML로 실행 파일을 만들 수 있도록 컴파일해주는 프로젝트를 진행해 보려고 합니다.


그 첫 번째 이야기로 가능성을 보여주는 프로젝트 상황을 공유드리네요. 🤪


https://github.com/projectedby/ghtml 프로젝트 페이지입니다.


  1. 간단한 더하기 연산을 수행하는 HTML 정의


<html>

    <head>

    </head>

    <body>

        <ghtml-declare type="int" name="x" value="5"></ghtml-declare>

        <ghtml-declare type="int" name="y" value="2"></ghtml-declare>

        <ghtml-return>

            <ghtml-variable target="x"></ghtml-variable>

            <ghtml-operator type="+"></ghtml-operator>

            <ghtml-variable target="y"></ghtml-variable>

        </ghtml-return>

    </body>

</html>


위와 같이 HTML 파일을 작성하였습니다. 사용자 태그를 사용한 이유는 스펙에서 벗어나지 않고, 이미 정해진 엘러먼트의 철학도 깨지 않기 위해서입니다. https://html-lang.org 에서도 HTML 로 프로그래밍 가능한 것을 보여주었지만, HTML Element 의 원래 의도를 벗어나는 케이스가 많더라구요. 아마 그 분도 고민을 많이 하시고 유사한 태그로 연산을 정의하거나 각각의 표현을 정의하려 하셨을 것입니다. 저는 그래도 왠지 각 엘러먼트의 의도를 위반하지 않고 프로그래밍 가능한 HTML 가능성을 보여주려고 합니다. 스펙상 커스텀 태그를 정의할 수 있으니 이것은 HTML 스펙에서 벗어난 것은 아니겠지요. 🤔


  1. 컴파일러 만들기


https://github.com/projectedby/ghtml


컴파일러는 위의 페이지에서 확인할 수 있습니다. 간단하게 Visibility Test 까지 작성된 소스입니다.


  1. 컴파일 및 실행


/src/ghtml simple.html # 컴파일을 통하여 Intermediate Representation 생성

clang hello.bc -o hello # IR 을 실행 파일로 빌드

./hello # 파일 실행

echo $? # 리턴 값 확인


아직은 절차가 복잡하지만, 프로젝트의 방향성을 정하고, 하나씩 하나씩 더해가다 보면, 컴파일 과정이나 실행 파일까지 빌드하는 과정이 많이 간소화될 것이라고 봅니다.


  1. 미래


저는 이 프로젝트를 통해서 HTML을 잘하시는 분들이 HTML만으로 웹 브라우져에 종속되지 않는 다양한 제품을 만들 수 있기를 바랍니다.


내년에 할 일이 많네요. 2024년도는 왠지 즐거운 한 해가 될 듯 합니다. 🤪


HTML is a powerful programming language.



GitHub - projectedby/ghtml: GNU LIKE HTML COMPILER

GitHub

GitHub - projectedby/ghtml: GNU LIKE HTML COMPILER

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 12월 31일 오전 7:31

조회 399

댓글 0

    함께 읽은 게시물

    스트레스를 잘 관리하면서 건강하게 살아가고 싶다면, 우선 살아있는 한 우리가 해야 할 일들은 영원히 없어지지 않을 것이므로, 해야 할 일을 100% 해내면서 할 일 목록을 완전히 없애는 데 많은 노력을 들이기보다는 70% 정도만 해내도 만족할 필요가 있다.

    ... 더 보기

    [박진영의 사회심리학]스스로 만들어 내는 스트레스

    m.dongascience.com

    [박진영의 사회심리학]스스로 만들어 내는 스트레스


    어제 AI 시대의 개발자 토론회에서 내가 대 AI 시대에는 버전관리 시스템이 필요없을 수도 있다고 생각해야한다는 말을 했는데, 그정도로 파격적인 생각을 해야한다는 이야기긴했지만, 진짜 그럴까?를 다시 한 번 생각해봤다.


    우선 버전관리 시스템의 목적은 크게 다음 세 가지다.


    ... 더 보기

    조회 1,518


    Next.js 프로젝트를 AWS EKS에 배포하며 배운 것들

    ... 더 보기

    쿠버네티스를 활용한 클라우드 네이티브 데브옵스 | 존 어런들 - 교보문고

    product.kyobobook.co.kr

    쿠버네티스를 활용한 클라우드 네이티브 데브옵스 | 존 어런들 - 교보문고

     • 

    저장 5 • 조회 1,001


    개발자는 개발만 잘하면 될까

    최근에 친구가 추천해준 데일 카네기의 인간관계론을 읽던 중 고액 연봉을 받는 엔지니어들의 특징에 대한 흥미로운 내용이 있었다.

    ... 더 보기

     • 

    저장 14 • 조회 2,623


    iOS 19가 아니라 이제 iOS 26?

    ... 더 보기

    No iOS 19: Apple Going Straight to iOS 26

    MacRumors

    No iOS 19: Apple Going Straight to iOS 26