我正在写一个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