Информация об изменениях

Сообщение Re[16]: Простой скрипт внутри приложения (в виде строки) от 24.11.2021 11:26

Изменено 24.11.2021 11:30 Pauel

Re[16]: Простой скрипт внутри приложения (в виде строки)
Здравствуйте, Ночной Смотрящий, Вы писали:

S>> Пишется всё примерно так же, как и слышится. Стоит один раз увидеть реализацию, как всё становится предельно очевидно. По одной продукции на приоритет:

S>>
S>>expr = add
S>>add = mul '+' mul | mul '-' mul | mul 
S>>mul = power '*' power | power '/' power | power '%' power | power
S>>power = atom '^' atom | atom
S>>atom = number | var | '-' atom | '(' expr ')'
S>>number = [0-9]+
S>>var = [a-zA-Z][a-zA-Z0-9]*
S>>


НС>Ну и сравни это просто со списком операторов в порядке приоритета.


Получится строчек двести-триста кода вида op('^', 50).led(function (left) { равестистый код }) + вспомогательные функции, которые тоже нужно будет понять.
Re[16]: Простой скрипт внутри приложения (в виде строки)
Здравствуйте, Ночной Смотрящий, Вы писали:

S>> Пишется всё примерно так же, как и слышится. Стоит один раз увидеть реализацию, как всё становится предельно очевидно. По одной продукции на приоритет:

S>>
S>>expr = add
S>>add = mul '+' mul | mul '-' mul | mul 
S>>mul = power '*' power | power '/' power | power '%' power | power
S>>power = atom '^' atom | atom
S>>atom = number | var | '-' atom | '(' expr ')'
S>>number = [0-9]+
S>>var = [a-zA-Z][a-zA-Z0-9]*
S>>


НС>Ну и сравни это просто со списком операторов в порядке приоритета.


Получится строчек двести-триста кода вида op('^', 50).led(function (left) { равестистый код }) + вспомогательные функции, которые тоже нужно будет понять.

+ всё равно нужно описать лексер, вот эта часть в более-менее взрослом дсл будет конской.