[Nitra] Динамический токен используя регулярное вырожение
От: hmemcpy Израиль http://hmemcpy.com
Дата: 29.11.14 19:37
Оценка: 3 (1)
Здравствуйте!

(первый пост, не бейте сильно

Совсем недавно, некий Mark Rendle (автор фреймворка Simple.Data) проводил шуточный доклад на конференции Build Stuff в Вильнюсе с названием The Worst Programming Language Ever (слайды можно скачать сдесь). В докладе Марк решил взять самые ужасные особенности из разных языков, и сделать из них новый язык под названием BS. Как и моного других шуток, BS быстро стал мемом и для него уже зарегистрировали домен и создали репо в гитхабе

Параллельно, появилась замечательная статья Getting Started with Nitra, которая подробно описывает написание парсера под язык HLSL.

И вот тут я решил что пора попробовать совместить приятное с полезным, и я решил попробовать написать парсер на язык BS с Нитрой.

Одна из особенностей языка BS это #define, позволяющий с промощью регвыров переопределить декларацию класса. То есть вместо:

class Foo:
   ...


можно сделать:

#define /^my (.*?) thing:$/class \1:/

my Foo thing:


Внимание вопрос!

Возможно ли Нитрой сделать что-то подобное? Можно ли описать такое синтаксом Нитры, или нужно использовать препроцессор?

Свой эксперимент вылажил сдесь: https://github.com/BSLang/NBS

К сожалению не силен в мире написаний парсеров, так что извините если глупый вопрос

Спасибо!
nitra
Re: [Nitra] Динамический токен используя регулярное вырожение
От: btn1  
Дата: 29.11.14 20:09
Оценка: -1
Здравствуйте, hmemcpy, Вы писали:

H> В докладе Марк решил взять самые ужасные особенности из разных языков, и сделать из них новый язык под названием BS.


Хоспыдя, прям консилиум оригиналов! Сделан же уже, называется PHP. Безобразнее похапэхи только жабоскрипт и замыкает тройку днищ — сипипи.
Re[2]: [Nitra] Динамический токен используя регулярное вырожение
От: hmemcpy Израиль http://hmemcpy.com
Дата: 29.11.14 20:13
Оценка:
Здравствуйте, btn1, Вы писали:

B>Хоспыдя, прям консилиум оригиналов! Сделан же уже, называется PHP.


Он вроде PHP как первый пример привел, рекурсивно

P HP
H ates
P rogrammers
Re: [Nitra] Динамический токен используя регулярное вырожение
От: hardcase Пират http://nemerle.org
Дата: 29.11.14 21:59
Оценка:
Здравствуйте, hmemcpy, Вы писали:

H>Возможно ли Нитрой сделать что-то подобное? Можно ли описать такое синтаксом Нитры, или нужно использовать препроцессор?


Примере по сути два языка: язык препроцессора и некий базовый язык. Соответственно парсеров делать нужно два — реализацию препроцессора и для базового языка.
Собственно, такая схема сейчас используется у нас для C#.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: [Nitra] Динамический токен используя регулярное вырожение
От: hmemcpy Израиль http://hmemcpy.com
Дата: 29.11.14 23:15
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Примере по сути два языка: язык препроцессора и некий базовый язык. Соответственно парсеров делать нужно два — реализацию препроцессора и для базового языка.

H>Собственно, такая схема сейчас используется у нас для C#.

А можно чуть поподробнее? У вас это используется где, в Нитре или Немерле?

Мне интересно как в Нитре пистать код (на Немерле), который бы разобрался с этим регвыром, и его результат подставил в новый syntax token...
Такое можно описать в самой грамматике Нитры, или надо отдельно писать препроцессор? (на примерах CSharp.Grammar\Preprocessor)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.