Сообщение Re[16]: Простой скрипт внутри приложения (в виде строки) от 24.11.2021 11:26
Изменено 24.11.2021 11:30 Pauel
Re[16]: Простой скрипт внутри приложения (в виде строки)
Здравствуйте, Ночной Смотрящий, Вы писали:
S>> Пишется всё примерно так же, как и слышится. Стоит один раз увидеть реализацию, как всё становится предельно очевидно. По одной продукции на приоритет:
S>>
НС>Ну и сравни это просто со списком операторов в порядке приоритета.
Получится строчек двести-триста кода вида op('^', 50).led(function (left) { равестистый код }) + вспомогательные функции, которые тоже нужно будет понять.
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>>
НС>Ну и сравни это просто со списком операторов в порядке приоритета.
Получится строчек двести-триста кода вида op('^', 50).led(function (left) { равестистый код }) + вспомогательные функции, которые тоже нужно будет понять.
+ всё равно нужно описать лексер, вот эта часть в более-менее взрослом дсл будет конской.
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) { равестистый код }) + вспомогательные функции, которые тоже нужно будет понять.
+ всё равно нужно описать лексер, вот эта часть в более-менее взрослом дсл будет конской.