|
|
|
алгоритм разбора выражения
|
|||
|---|---|---|---|
|
#18+
Доброго дня! Подскажите пожалуйста идею или статью для изчения. Задача у меня в анализе некоторого текстового выражения, которое может содержать некоторые формы математических выражений и в зависимости от этой формы Нужно выполнить инсерты в бд. Примеры возможных форм и требуемые инсерты. 1) ... 200 руб... = вставить 1 запись с значением 200 2) ... 4*300 руб.... = вставить 4 записи с значением 300 в каждой из них 3) .... 4*200+300 руб.... =вставить 4 записи с значением 200 в каждой из них и одну запись с значением 300 4) ...100+200 руб.... = вставить одну запись с 100 руб и одну запись с 200 руб. Это все варианты выражений. Между операциями могут быть или не быть пробелы.. Нужно написать какой то универсальный разборщик данных выражений.. Полаю что то типа синтаксического анализатора текста (видимо с использованием регулярных выражений) и что то типа рекурсий или построения семантического дерева для разбора выражения по операциям.... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 00:04 |
|
||
|
алгоритм разбора выражения
|
|||
|---|---|---|---|
|
#18+
(o-O)2) ... 4*300 руб.... = вставить 4 записи с значением 300 в каждой из них Рискну предположить что можно вставить 300 записей по 4 рубля и баланс будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 02:06 |
|
||
|
алгоритм разбора выражения
|
|||
|---|---|---|---|
|
#18+
Посмотри обратную польскую запись , там в т.ч. примеры разбора описаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 06:52 |
|
||
|
алгоритм разбора выражения
|
|||
|---|---|---|---|
|
#18+
(o-O)Полаю что то типа синтаксического анализатора текста (видимо с использованием регулярных выражений) и что то типа рекурсий или построения семантического дерева для разбора выражения по операциям.... ? описать грамматику, получится вменяемая -flex и bizon натравить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 06:07 |
|
||
|
алгоритм разбора выражения
|
|||
|---|---|---|---|
|
#18+
(o-O)Примеры возможных форм и требуемые инсерты. 1) ... 200 руб... = вставить 1 запись с значением 200 2) ... 4*300 руб.... = вставить 4 записи с значением 300 в каждой из них 3) .... 4*200+300 руб.... =вставить 4 записи с значением 200 в каждой из них и одну запись с значением 300 4) ...100+200 руб.... = вставить одну запись с 100 руб и одну запись с 200 руб. Это все варианты выражений.Если это все варианты, то можно не заморачиваться на какие-то продвинутые алгоритмы, а написать по-простому, например на C++: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. Вывод на консоль: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. (o-O)Между операциями могут быть или не быть пробелы..За это в моём коде отвечает функция scan_spaces. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 04:34 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1340508]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
7ms |
get first new msg: |
3ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 310ms |

| 0 / 0 |
