![]() |
![]() |
|
Парсинг формул Ø |
☑ | ||
---|---|---|---|---|
0
KS
22.09.00
✎
19:50
|
А как-нибудь реализовывается сабж в 1С?
ЗЫ: сразу прошу прощения если глупый вопрос. |
|||
1
Anton
22.09.00
✎
20:51
|
функцией Шаблон
|
|||
2
Budda
22.09.00
✎
23:33
|
Конечно можешь попробовать с использованием "обратной польской записи" ;о))) - компилятор чтоль пишешь ??;о)))))
|
|||
3
Алекс
25.09.00
✎
17:59
|
KS: Скажи, а действительно зачем тебе разбор строки в 1С?
Что действительно интерпретатор пишеш? Если так, то определись с начала с типами строк(формулами) думаеш будеш сталкиваться, а потом построй разбор этих строк используя разбиение строки на токинги! :) По дробнее пиши! :) |
|||
4
Тот
25.09.00
✎
18:40
|
А я писал интерпретатор с обратной польской... Потом потерял где-то. Если интерпретировать формульные строки, то можно, например, сотруднику начислять зарплату по формуле. И вообще много возникает очень удобных возможностей. Интерпретатор написать можно за недельку. Не очень сложно...
|
|||
5
Дракон
25.09.00
✎
18:54
|
Есть в конфе АКС такая штука но без скобок. Но за образец может сканать.
|
|||
6
Sheridan
25.09.00
✎
22:46
|
Ежели нужен интерпритатор формул, ежели его разрабатывать самому пожалуй дня за два можно сморганить. Тут пользоваться надобно обратной польской записью и рекурсивным спуском (для раскрытия скобок). Можно использовать функцию Шаблон. Она вычисляет выражение переданое ей в качестве параметра. Ежели надо использовать собственные макроподстановки имеет смысл использовать определенные метки перед макроподстановкой. Сначала сканируешь строку, выявляешь макроподставновки, потом сформированную строку передаешь на вычисление функции шаблон или EvalExpr
|
|||
7
Dich
26.09.00
✎
14:08
|
А через объект ClassContext из Rainbow Service не катит?
|
|||
8
Александр
26.09.00
✎
14:34
|
Наконец то вспомнили.А то будто и нет Rainbow.Примеры почитай пол года
ходят. |
|||
9
Chernik
27.09.00
✎
03:09
|
2Дракон. Наверное самое слабое место в АКС- это интерпретация формул:-( В крупных проектах (где решено было ломать все, кроме приверженности к конструктору) используем Rainbow -не нарадуемся;-)
|
|||
10
Sheridan
27.09.00
✎
09:09
|
Ребята, Rainbow штука хорошая. Я надеюсь вы не думаете, что в Rainbow переписан весь язык 1С. Вряд ли. Так вот, функция classcontext выполняет программный код и на выход ничего не возвращает. Так что использовать его в в случае когда надобно вычислить формулу нет смысла. Да и смысла особого конфигуратор переность на пол. часть не вижу. Разве что только для отладки.
|
|||
11
Full Dummy
27.09.00
✎
09:00
|
А че это такое, обр. польская запись?
|
|||
12
Sheridan
27.09.00
✎
09:01
|
Кстати, когда я писал свой "Финансы и анализ" и примирял функции Rainbow к нему, они совсем никак не подошли.
|
|||
13
Sheridan
27.09.00
✎
09:05
|
Обратная польская запись вещь удобная при интерпритации выражений, т.к. для вычисления выражения необходимо соблюсти неявные правила вычисления, т.е. расставить паритеты. С помощью обратной польской записи можно выражение представить для вычисления в удобочитаемом виде. Например:
2+2*4+5, это будет 2425*++ А для интерпритации выражений со множеством скобок можно еще и рекурсивным спуском пользоваться. |
|||
14
Budda
27.09.00
✎
10:19
|
2 Sheridan: Что то у меня толком не получилось развернуть твою польскую ;о)) (у меня получилась 2*5+4+2 - что-то не то ;о)))
Думаю что будет типа такого: 2+2*4+5 -> 2+24*+5 -> 224*++5 -> 224*+5+ - вот и ответ ;о))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |