4

Я работаю над спецификацией/kitchensink для метаязыка, который может скомпилироваться до PHP в течение некоторого времени. Теперь я хочу начать строить вещь. Прежде чем я применил крошечные DSL, используя PHP_Lexergenerator и PHP_Parsergenerator, и они отлично поработали, но я никогда не строил ничего такого масштаба раньше. Я был бы признателен за любые отзывы/предложения/впечатления, которые у вас могут быть очень важны!Лучший способ реализовать метаязык, скомпилированный до PHP

Я вставил спецификацию в http://pastebin.com/613mFGsB.

+1

Прогресс на этом? – musicin3d

+0

@ musicin3d Он стал https://github.com/runekaagaard/snowscript, который может фактически скомпилировать код снега для PHP. К тому времени, когда я получил 90% от версии 1.0, я полностью прекратил использование PHP и потерял интерес. –

ответ

4

Haxe - это язык, который реализует PHP как цель компиляции. Это похоже на то, чего вы пытаетесь достичь. Это OSS, поэтому вы можете посмотреть, как они это делают.

+0

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

2

pihipi был интересным примером этого, но теперь я его убил. Итак, проверьте Haxe: Haxe - это язык, который реализует PHP как цель компиляции. Это похоже на то, чего вы пытаетесь достичь. Это OSS, поэтому вы можете посмотреть, как они это делают.

+0

Ничего себе, это очень интересно. Я просматриваю ваши файлы «parser.y» и «lexer.re» и нахожу их намного приятнее, чем соответствующие файлы в ядре PHP. Наши цели выглядят очень схожими, только я выбрал значительную пробел в миксе. Вы все еще используете pihipi на ежедневной основе при кодировании PHP или же интересность и полезность исчезают? –

+0

Да, я думаю, что последние 20% создания парсера для нового языка программирования занимает _ло_ времени. –

5

Не позволяйте подобным проектам других людей мешать вам делать это в любом случае. Независимо от того, как далеко вы справитесь с этим, то, что вы действительно получите от этого проекта, - это дальнейшее понимание кодирования и разбора. Вы не сможете получить эти знания в глубину, если просто присоединитесь к существующему проекту.

Я также хотел бы отметить, что такие вещи, как Linux, Ubuntu и т. Д., Никогда не существовали бы, если бы их оригинальные производители просто «вскочили на лодку» другого подобного проекта. Не бойтесь делать вещи сами, иногда из этого приходит величие.

+0

Звучит как довольно солидный совет! Большое спасибо! –