Lemon icon indicating copy to clipboard operation
Lemon copied to clipboard

Juice 2

Open tenmajkl opened this issue 3 years ago • 12 comments

Warning Theese are just my ideas written in czech. Reading for own risk

Lexer vyhodí ast, to se hodí do parseru který rekurzivně vytváří vystup

Lexer

Postupně prochází a podle TokenKind vrchního itemu v pomocném stacku generuje ast.

STACK JE CESTA KE STROMU

K rozpoznání značky stále regex aby byly možné vlastní regexy.

Token

  • Kind - druh, enum
  • Name - jméno toho tagu (h1, if, nebo nic například u {{}}), ?string
  • Content - obsah tagu (atributy, php v direktive,...), ?Token[]
  • Children - děti uvnitř tokenu, ?Token[]
  • Position

PhpLexer

Ta věc co lexuje obsah direktiv. Opět stejné řešení jako u lexeru, prostě podle vrchu stacku pracuješ s tokenama, aby sis to usnadnil pouzijes nativní tokenizer.

TODO doplnit podporované tokeny

Parser

Jede token po tokenu pro každý se nějak chová a každý kind má svoji třídu která ho parsuje. Zároveň rozpoznává kontext, pokud je tokenkind attribute například tak se context nastaví na Attribute a parsuji de jeho children.

Alpine

Zároveň to umí vlastní atributy takže něco jako alpine ale s tím rozdílem ze my pošleme jen to co je potřeba protože vykompilujeme potřebný kód.

Pokud tohle ctes tak je mi te líto nebo pokracuj Majkele.

Pak možná překlady

A dal nevim

Každý tokenkind a kazda direktiva je svoje trida

tenmajkl avatar Aug 27 '22 17:08 tenmajkl

pravdepodobne stejna taktika jako u htmlispu akorat imperativne

tenmajkl avatar Sep 10 '22 19:09 tenmajkl

pouzit or. asi nejlepsi alternativa pro >>=

tenmajkl avatar Sep 14 '22 07:09 tenmajkl

mozna lexer parser transpiler lexer do pole parser do ast transpiler do php/js

tenmajkl avatar Oct 02 '22 21:10 tenmajkl

{@\foreach $foo as $bar} {$bar} {/foreach} fusion between svelte, latte and blade :800iq:

tenmajkl avatar Nov 26 '22 11:11 tenmajkl

we could keep some juice-legacy syntax

tenmajkl avatar Dec 05 '22 18:12 tenmajkl

also components

tenmajkl avatar Jan 03 '23 10:01 tenmajkl

directives in config

tenmajkl avatar Jan 05 '23 09:01 tenmajkl

If I use custom LL parser machine (🎰) I can let users write custom syntax! (and also let them add stuff like operators with high-level syntax)

tenmajkl avatar Apr 08 '23 21:04 tenmajkl

add nested layouts, meaning that layout system would be written from start to accept this.

tenmajkl avatar Jul 29 '23 10:07 tenmajkl