Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

파서 엔진 개선 (()) Nested 중괄호와 CSS Escape처리 #24

Closed
developer-1px opened this issue Jan 10, 2022 · 1 comment
Closed
Assignees

Comments

@developer-1px
Copy link
Owner

.class="hover:underline:class="hover{text-decoration:underline;}

슈도클래스에 특수기호가 들어가면 에러가 발생한다. 그래서 이스케이프 처리 해봤지만
(, )나 + 는 필요한 기능이다.
현재는 Regexp를 사용하고 있지만 Lex 기반으로 바꿔서 (나 스트링을 처리는 필요하지 않을까?
bg(linear-grident(rgba(255,255,.2))) 이렇게 하니까 괄호가 3개가 나올수 있더라. Regexp는 확실히 한계가 있다.

문법판독기를 Regexp가 아니라 빠르지만 조금더 정교한 방법으로 변경해보자!

@developer-1px developer-1px self-assigned this Jan 10, 2022
@developer-1px
Copy link
Owner Author

문법 엔진을 정규식에서 간단한 파서엔진을 만들어서 괄호 처리과 토큰처리가 가능하도록 수정했다.

정규식이나 복잡한 문법들로 인해서 문자열만 파싱하는 로직이 잘 만들어지지 않아서 문서에서 "'`\s 와 같은 delimiter로 설정하고 전문을 파싱하는 방식으로 교체했다.

속도는 조금 더 느려질 수 있지만 실수로 파싱되지 않는 경우가 없어지고 svelte의 class:hidden={true}와 같이 문자열이 아닌데 class로 인식되는 것들을 처리해 줄 수 있게 되어 만족한다.

그리고 아직 개선은 안했지만 모든 value값에 #fff.4 와 같은 hexa 형식의 값들을 적용해줄 수 있을 것 같다.
#25

생각난김에 stylus color util 기능을 제공해줄 수 있을지도 고민해보면 좋을 듯 하다.
https://stylus-lang.com/docs/bifs.html

아직 만들지 못한 hover:c(red)+bg(red) 와 같은 +결합자도 만들 수 있게 되었다. 필요성을 못 느껴서 미루고 있는데 파서 엔진 업데이트로 만들 수 있는 토대가 되었으니 각잡고 만들어야 겠다.
#10
#5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant