gpt4 book ai didi

c++ - 编写简单的 MSBuild 条件解析器

转载 作者:太空狗 更新时间:2023-10-29 23:09:42 25 4
gpt4 key购买 nike

我正在尝试编写一个 MSBuild 条件解析器。条件描述here .

所以我想出了一个看起来工作正常的语法:

S -> !S
S -> S == S
S -> S != S
S -> S && S
S -> S || S
S -> Fn( str )
S -> str == str
S -> str != str
S -> n < n
S -> n <= n
S -> n > n
S -> n >= n

这似乎符合我的需要,我已经提出了一组定义这种简单语言的 C++ 类。即,我可以创建适合上面的类,然后我可以在基本语句上调用“run”,然后我从另一端得到一个 bool 值。

使用这种语言如下:

(!Exists( "C:\\config.sys" ) && 14 < 17) || (AString == AString2 && HasTrailingSlash( "C:" ))

定义为(并请原谅大行代码!;)):

Statement baseStatement( new StatementOrStatement( new StatementAndStatement( new NotStatement( new ExistsFunctionStatement( "C:\\Config.sys" ) ), new NumberLessThanNumberStatement( 14.0, 17.0 ) ), new StatementAndStatement( new StringEqualStringStatement( "AString", "AString2" ), new HasTrailingSlashFunctionStatement( "C:\\" ) ) ) );

我可以简单地运行上面的语句如下:

const bool result = baseStatement.Run();

到目前为止一切都很好。看来我可以使用我的语法来表示整个“语言”,并且我可以将语法构建为有效的完整语句。

但是现在我遇到了下一个问题。我需要实际解析字符串。我不知道从哪里开始。任何人都可以帮助我如何编写实际的字符串解析器以将原始语句解析为上面的 C++ 类集吗?我在这方面很迷茫。

我这样做纯粹是出于我自己的学习原因,所以我尽可能不想使用别人的解析器库。

提前致谢!

最佳答案

关于c++ - 编写简单的 MSBuild 条件解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com