@Kingleonide
Плохо приготовленный джавист

JavaScript — Как написать свой lexer \ parser?

Помогите мне пожалуйста с такой штукой я не знаю как это называть
Имеется Textarea в котором будет некий код
он будет преобразовываться в обычный javascript код
Пример:
if(1 NOT 2)
{
alert = "1 не равен 2"
}
else
{
alert = "1 равен 2"
}

Который преобразуется в
if(1 != 2)
{
alert("1 не равен 2");
}
else
{
alert("1 равен 2");
}

Есть некие наброски но это что то не то, вроде бы то что требуется но работает абы как, но в принципе написано также, абы как.

$("[name=in]").keyup(function()
{
var value = $("[name=in]").val();
value = value.replace("not", "!=");
$("[name=out]").val(value);

$("[name=out]").val($("[name=out]").val().replace(/not/g,"!="));
$("[name=out]").val($("[name=out]").val().replace(/is/g,"=="));
$("[name=out]").val($("[name=out]").val().replace(/yes/g,"true"));
  • Вопрос задан
  • 1711 просмотров
Решения вопроса 1
Rulexec
@Rulexec
Метатеоретик теории типов
Для джаваскрипта советую посмотреть на PEG.js. Он осиливается за час-два, плюс PEG-грамматики крайне мощные, способные описывать даже контекстно-зависимые грамматики местами (обычно используются только контекстно-свободные).

Плюс есть онлайн-версия, которую можно потыкать (хотя аккуратно с ней, если введёте чего-нибудь, что делает вечный цикл в парсинге, то страница зависнет намертво и скорее всего потеряете всю свою грамматику).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Kingleonide Автор вопроса
Плохо приготовленный джавист
Но спасибо за способ, но как сказал выше это что то не то
Я хочу добиться результата как допустим в cofeeScript
//cofeeScript
if happy and knowsIt
clapsHands()
chaChaCha()
//JavaScript
if (happy && knowsIt)
{
clapsHands();
chaChaCha();
}

Я имею ввиду про скобки после if (...){...} как бы выставлять их при написании
if param and param2
if(param && param2)
То есть обертку как сделать?
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Вам нужен генератор парсеров. Осилите написать грамматику — получится все, что хотите, хоть свой кофескрипт и даже лучше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы