我正在寫一個C/C++/...構建系統(我明白這是瘋狂;)),並且我在設計解析器時遇到問題。解析器與範圍和條件
我的「食譜」是這樣的:
global
{
SOURCE_DIRS src
HEADER_DIRS include
SOURCES bitwise.c \
framing.c
HEADERS \
ogg/os_types.h \
ogg/ogg.h
}
lib static ogg_static
{
NAME ogg
}
lib shared ogg_shared
{
NAME ogg
}
(基於超級簡單libogg源代碼樹這之中)
#
是註釋,\
是「換行逃逸」,這意味着該行繼續在下一行(參見QMake syntac)。 {}
是範圍,就像在C++中一樣,全局是適用於每個「目標」的設置。這是所有的背景,而不是那有關...我真的不知道如何與我的範圍工作。我需要能夠有多個範圍,也有條件處理的一種形式,在該行:
win32:DEFINES NO_CRT_SECURE_DEPRECATE
解析功能將需要知道它在什麼級別的範圍,稱自己無論何時範圍增加了。大括號的位置也有問題(global {
或global{
或如示例中所示)。
如何使用標準C++和STL來解決這個問題?我知道這是一個很大的工作,這正是我需要一個好的起點的原因。謝謝!
我已經是整個ifstream和內部字符串/ stringstream存儲,所以我可以閱讀每個單詞的單詞。
這需要使用通常的編譯器/解釋器方法,並且應該使用標準工具處理(請參閱http://stackoverflow.com/questions/1669/learning-to-write-a-compiler並搜索「解析器發電機「等)。 – dmckee 2010-06-11 18:39:04
相關鏈接肯定會幫助我形成一個想法。 – rubenvb 2010-06-11 19:00:30