Я люблю такие языки, как Python, Ruby, et c. так как их синтаксис легко написать и понять. Итак, эта любовь к легкости позволила мне найти больше способов сделать синтаксис языка более простым. Я начинаю делать это с javascript. Посмотрите на приведенный ниже код:
var a = `
if anything...
alert("Yes ! It's a...")
if anything...
alert("beautiful syntax !")
`;
Приведенный выше синтаксис очень легкий и красивый, поэтому я начинаю писать регулярное выражение для преобразования приведенного выше синтаксиса в исполняемый синтаксис javascript. Я сделал:
a = a.replace(/\bif\b([\S\s]*?)\n([\S\s]*?)\n/gm, function(_, v1, v2, v3) {
return v1 + " (" + v2 + ") { \n" + v3 + " \n };"
})
console.log(a)
Результат:
if ( anything... ) {
alert("Yes ! It's a...")
};
if ( anything.. ) {
alert("beautiful syntax !")
};
Итак, это работает, но есть небольшая проблема! Если я напишу что-то вроде этого:
if anything...
alert("Yes")
alert("No")
, то получится:
if ( anything... ) {
alert("Yes")
}; alert("No")
Таким образом, я заменил последний \n
в регулярном выражении на ^\n
. Но здесь возникает другая проблема. Если я напишу:
if anything...
alert("Yes")
alert("No")
if anything...
alert("Yeap")
alert("Nope")
, то получится:
if ( anything... ) {
alert("Yes")
alert("No")
};
if ( anything... ) {
alert("Yeap")
}; alert("Nope")
Итак, вы можете мне помочь?