Я хочу написать парсер / лексер специального назначения, но я чувствую себя подавленным. Не могли бы вы помочь мне с этим небольшим примером?

Итак, я пишу php шаблонизатор под названием прогалина вдохновленный Руби Слим а также лезвие ларавеллы.

И теперь многие люди рекомендуют мне переписать его в лексер / парсер, вместо того, чтобы полностью полагаться на регулярные выражения. Так что я погуглил о лексерах и парсерах и попытался узнать, как они работают, и, хотя я думаю, что у меня есть общее представление, мне все еще трудно начать писать один.

Так что я надеялся, что кто-нибудь мне поможет, показав, как сделать один пример. Как бы я точно lex (это даже глагол?) И разобрать это:

#wrapper.container.well first-attr="a literal attribute" second-attr=variable.name And here some text that will be the content of the div...

В эти узлы:

[
'tagName' => 'div', // since there was no tagname, a div is assumed
'attributes' => [
'id' => 'wrapper',
'class' => 'container well',
'first-attr' => 'a literal attribute',
'second-attr' => 'the value of the variable',
],
'textContent' => 'And here some text that will be the content of the div...'
]

Конечно, я не ожидаю, что кто-то напишет функцию, которая на 100% ее анализирует / анализирует, но я хотел бы увидеть общий псевдокод того, как это сделать. Может ли кто-нибудь помочь мне с этим?

6

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]