|
|
|
Парсер для своего скрипта
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Передо мной встала необходимость сделать для моего проекта свой маленький компилируемый скриптовый язык, не использующий никаких нативных библиотек. На данный момент уже готовы виртуальная машина, эмулятор ассамблера и логическое дерево (самое простое, как мне кажется). После этого я начал создавать переводчик потока символов в лексемы и анализатор кода (создатель логического дерева). Т.е. порядок действий такой. Сначала надо перевести код: Код: sql 1. 2. 3. 4. 5. в лексемы: Код: sql 1. 2. 3. 4. 5. а затем в синтаксическое дерево (графический вариант, ниже есть пример кода): В первом случае ничего сложного нет, но во втором начинается самое сложное. Необходимо как-то пропарсить лексемы в дерево. Я пытался по простому циклом пройтись по всем лексемам и CASE'ом определить парсинг каждого оператора, но там получается слишком большие конструкции. Пример класса LogicTree: Код: sql 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. Кто нибудь может мне помочь? Есть у кого мысли в какую сторону смотреть? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2012, 10:13:46 |
|
||
|
Парсер для своего скрипта
|
|||
|---|---|---|---|
|
#18+
В студенческие годы выполняя лабораторные написал свой "сискаль", но промышленного опыта написания трансляторов/компиляторов нет. авторКто нибудь может мне помочь? Есть у кого мысли в какую сторону смотреть?Думаю начинать лучше всего с теории, прочитав например "Dragon book". Потом нужно определиться с грамматикой, ну и в зависимости от нее выбирать способ разбора. Создавать в реальном проеке свой язык не являясь экспертом в этом области - это очень опасно. Видимо большую бомбу ты хочешь заложить тем кому придется поддерживать твой код в будущем. Коллеги тебе будут за это очень благодарны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2012, 10:36:03 |
|
||
|
Парсер для своего скрипта
|
|||
|---|---|---|---|
|
#18+
ShowКто нибудь может мне помочь? Есть у кого мысли в какую сторону смотреть? groovy, beanshell и другие реализации jsr 223. Если писать самому - то javacc, antlr, scala parser combinators. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2012, 12:23:10 |
|
||
|
Парсер для своего скрипта
|
|||
|---|---|---|---|
|
#18+
+1 за scala, как-то был нужен дсл с несложной грамматикой - уложился в пару дней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2012, 15:48:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37949783&tid=2130985]: |
0ms |
get settings: |
15ms |
get forum list: |
20ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
63ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
90ms |
get tp. blocked users: |
3ms |
| others: | 289ms |
| total: | 516ms |

| 0 / 0 |
