|
|
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
Я конечно сам разберусь. Интересно ведь очень, но... может кому тоже интересно. Есть такие функции: Код: 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. Так запускаю. Код: plaintext 1. Получаю Код: plaintext 1. Но, хочу получить Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 19:45:31 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
AlexGru пишет: > (defun mainf(str) > (if (not (search "begin" str)) > (if (not (search "end;" str)) > nil > (cons (part-to-end str) (mainf (subs-end str))) > ) > ;-------------------------------------------- > (if (next-begin str) > (if (> (length (part-to-begin str)) *0*) > (list (part-to-begin str) (list :begin (mainf (subs-begin str)))) > (list :begin (mainf (subs-begin str))) > ) > (list (part-to-end str)) > ) > ;-------------------------------------------- Научись CONS-ом пользоваться. Ну нельзя ж так. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 21:25:56 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
AlexGru пишет: Если это не чисто академический интерес, то предлагаю воспользоваться готовыми парсерами грамматик типа CL-YACC. Их есть. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 21:26:10 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
AlexGru пишет: Пока у меня получилось вот это : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 22:33:33 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
Эх, помнится, и мы писали интерпретатор Лиспа. Вот только не помню, для чего...ИИ какой-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 01:02:52 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
MasterZiv AlexGru пишет: Пока у меня получилось вот это : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. c Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 06:23:07 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Если это не чисто академический интерес, то предлагаю воспользоваться готовыми парсерами грамматик типа CL-YACC. Их есть. Пока это чисто академический интерес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 06:30:03 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
AlexGru пишет: > CL-USER> (parse "begin d1 begin d2 end; begin d3 end; d5 end;") > > > There is no applicable method for the generic function (parse (make-string-input-stream "begin d1 begin d2 end; begin d3 end; d5 end;")) Но только она не совсем то делает, что тебе нужно. (кстати, что делать нужно, ты бы более формально изложил -- было бы неплохо). Я его не добил до конца. Спать хотел. Но как идея просто... То, что ты написал -- это как-то сильно не по-лисповски. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 09:32:56 |
|
||
|
Может кому интересно будет. Common Lisp парсинг языка.
|
|||
|---|---|---|---|
|
#18+
Вообще задача такая. Есть много кода, исходников на языке PL/SQL. Требуется 1) вначале распарсить по ключам BEGIN END; в список. Пр: (d1,d2,d3 что-то, пока не важное, селекты, лок. переменные м пр.) Есть begin d0 begin d1 end; begin d2 end; d3 end; После первой лини парсинга должны получить (:begin ("d0" (:begin "d2") (:begin "d2") "d3")) т.е.чтобы получился аналог дерева или AST(если прав в абревиатуре). 2) Распарсить блоки d1,d2,d3... В части поиска операторов SQL и некоторых управл. структур языка. 3) Имея помимо исходников (текстовый файл на актуальное время) статистику по таблицам. Разыскать неоптимальные операторы SQL, в рамках всех исходников. Самый простой пример 1) было: SELECT A FROM(SELECT A,B,C... FROM T1,T2... WHERE ....) должно быть: SELECT A FROM(SELECT A FROM T1,T2... WHERE ....) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 09:55:53 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36238753&tid=1344204]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
202ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 480ms |

| 0 / 0 |
