我需要一個解析器(主要用於「選擇」類型的查詢)並避免從頭開始的麻煩。有沒有人知道如何使用pgsql的scan.l/gram.y來達到這個目的?我也查了pgpool,但看起來很相似。目前,如果有人可以給出指令來編譯解析器(可能使用makefile)而沒有錯誤,這樣它可以被提供(有效的?)查詢並輸出解析樹(以任何形式)可能會非常有用!如何(如果可能)獨立使用PostgreSQL的解析器(在C中)?
0
A
回答
1
你可能不能從postgres源代碼包中取出任何文件並單獨編譯它。解析器使用內部OOP結構(用C實現)。但有一些可能性(並非簡單) - ecpg預處理器嘗試將PostgreSQL文件轉換爲輔助文件 - 並且可以使用相同的機制。它使用一個小型的實用程序parse.pl(它是PostgreSQL源代碼的一部分(src/postgresql/src/interfaces/ecpg/preproc))
+0
顯然,它已根據http://www.postgresql.org/message-id/[email protected]完成,但我無法弄清楚使用它(pgpool)或其來源。 – 2013-05-13 12:47:08
0
PostgreSQL使用yacc編譯語言分析程序。據推測,你可以採取yacc文件,並創建一個兼容的解析器,只需很少的努力。請注意,您必須安裝flex和yacc才能執行此操作。
請注意,這並不是從源代碼獲取.c文件,而是將其移植到您的系統中。你所得到的只是解析器,而不是規劃器或其他任何東西。
鑑於問題的詳細程度,可能不會有更多的細節。也許你可以從那裏開始並在卡住時發佈另一個問題。
相關問題
- 1. Postgresql的獨立實例可能
- 2. 如何在C#.NET中使獨立的軟件解決方案
- 3. 如何利用PostgreSQL DDL解析器?
- 4. 什麼是獨立的Java解析器?
- 5. php的獨立語法和解析器
- 6. 如何啓用PostgreSQL功能分析器?
- 7. PostgreSQL中,如何建立OdbcConnection在C#
- 8. 是否有可用的在線LIBXML2 XML解析器或使用libxml2獨立解析XML的方法?
- 9. 如何在C/C++中使用獨立於平臺的電子書閱讀器?
- 10. 如何在獨立程序中使用llvm分析傳遞?
- 11. 如何理解獨立C或C++實現中的原子?
- 12. PostgreSQL - 如何執行「獨立」代碼?
- 13. 如何爲獨立的GWT應用程序編碼解析?
- 14. AndEngine - 如何使用獨立着色器
- 15. iOS7獨立模擬器 - 如何使用?
- 16. 如何在C++中使用jsoncpp解析器解析嵌套的對象/數組?
- 17. 獨立IntelliJ語法分析器中的符號解析
- 18. 如何使用qmake在C++中構建獨立的共享庫?
- 19. 如何衡量使用機器的性能獨立
- 20. 可能使用Javascript的獨立存儲?
- 21. 如何在C#中使用DTD解析XML解析文件
- 22. 如何在獨立果園模塊中使用Kendo UI?
- 23. 如何在獨立C#程序中使用Microsoft SQL Server 2005中的分詞器
- 24. 如何使用獨立dplyr
- 25. 如何使用router.js獨立?
- 26. 如果C#中的操作符(?:)立即可能存在缺陷?
- 27. 如何使獨立
- 28. 使用NSXML解析器解析可可
- 29. 如何在BlackBerry中使用SAX解析器解析XML?
- 30. 如何在android中使用sax解析器從sdcard解析xml?
沒有錯誤?如果您發佈錯誤信息會有所幫助。 – 2013-05-13 11:46:20
我試過在scan.l上運行flex,但輸出的c代碼甚至在修正頭文件問題後也不會編譯。部分隨後出現的錯誤爲: kandarpksk @ kandarpAspireRR:〜/ Documents/milestone_b $ gcc lex.core_yy.c -lfl 從scan.l包含的文件中:33:0: gram.y:161:2: error:unknown type name'core_YYSTYPE' gram.y:169:2:error:unknown type name'JoinType' gram.y:170:2:error:unknown type name'DropBehavior' – 2013-05-13 11:55:03
使用Yacc? (另一個編譯器編譯器) – Neil 2013-05-13 11:23:26