Parsing 如何编译带有重定向的自定义格式ini文件?

Parsing 如何编译带有重定向的自定义格式ini文件?,parsing,pseudocode,ini,Parsing,Pseudocode,Ini,我正在使用一个有3个ini文件的应用程序,这些文件的自定义格式有些恼人。我正试图将这些文件编译成一个“标准”ini文件 我希望通过伪代码的形式得到一些启发,帮助我编写某种“编译器” 下面是其中一个ini文件的示例。小于/大于表示重定向到文件中的另一节。这些重定向可能是递归的。。i、 e.一个重定向然后重定向到另一个。它还可能意味着重定向到外部文件(在这种情况下有3个值)。注释以#符号开头 [PrimaryServer] name=DEMO1 baseUrl=http://demo1.awesom

我正在使用一个有3个ini文件的应用程序,这些文件的自定义格式有些恼人。我正试图将这些文件编译成一个“标准”ini文件

我希望通过伪代码的形式得到一些启发,帮助我编写某种“编译器”

下面是其中一个ini文件的示例。小于/大于表示重定向到文件中的另一节。这些重定向可能是递归的。。i、 e.一个重定向然后重定向到另一个。它还可能意味着重定向到外部文件(在这种情况下有3个值)。注释以#符号开头

[PrimaryServer]
name=DEMO1
baseUrl=http://demo1.awesome.com    
[第二服务器]
name=DEMO2
baseUrl=http://demo2.awesome.com
[罗吉努尔]
#这是一个标准重定向
baseLoginUrl=
#这是附加了额外信息的重定向
fullLoginUrl=/login.php
#这里有一个指向另一个重定向的重定向
enableSSL=
#这是一个具有多个逗号分隔值的键,其中一些值是重定向。
ServerName=,,AdditionalRandomServerName
#这个特别讨厌。这是指向另一个文件的重定向。。。
身份验证机制=
[SSL配置]
enableSSL=
[证书]
isCertificateInstalled=true
这是一个我正在努力实现的例子。为了便于阅读,我已经删除了注释

[PrimaryServer]
name = DEMO1
baseUrl = http://demo1.awesome.com

[SecondaryServer]
name = DEMO2
baseUrl = http://demo2.awesome.com

[LoginUrl]
baseLoginUrl = http://demo1.awesome.com

fullLoginUrl = http://demo1.awesome.com/login.php

enableSSL = true

serverNames = DEMO1,DEMO2,AdditionalRandomServerName

authenticationMechanism = valueFromExternalFile

[SSLConfiguration]
enableSSL = <SSLCertificates:isCertificateInstalled>

[SSLCertificates]
isCertificateInstalled = true
[PrimaryServer]
name=DEMO1
baseUrl=http://demo1.awesome.com
[第二服务器]
name=DEMO2
baseUrl=http://demo2.awesome.com
[罗吉努尔]
baseLoginUrl=http://demo1.awesome.com
fullLoginUrl=http://demo1.awesome.com/login.php
enableSSL=true
ServerName=DEMO1,DEMO2,AdditionalRandomServerName
authenticationMechanism=valueFromExternalFile
[SSL配置]
enableSSL=
[证书]
isCertificateInstalled=true
我正在考虑使用ini4j(Java)来实现这一点,但我决不会固定使用这种语言

我的主要问题是:

  • 1) 如何处理递归重定向

  • 2) 如何最好地处理带有附加字符串的重定向,例如
    serverNames

  • 3) 任何关于如何处理外部重定向的建议都可获得额外积分。如果那部分还不起作用,那没什么大不了的

到目前为止,我能够解析和整理文件,但我正在努力解决这些重定向问题

再一次,我只希望得到伪代码。也许我需要更多的咖啡,但我真的被这一点弄糊涂了

提前感谢您的建议

[PrimaryServer]
name = DEMO1
baseUrl = http://demo1.awesome.com

[SecondaryServer]
name = DEMO2
baseUrl = http://demo2.awesome.com

[LoginUrl]
baseLoginUrl = http://demo1.awesome.com

fullLoginUrl = http://demo1.awesome.com/login.php

enableSSL = true

serverNames = DEMO1,DEMO2,AdditionalRandomServerName

authenticationMechanism = valueFromExternalFile

[SSLConfiguration]
enableSSL = <SSLCertificates:isCertificateInstalled>

[SSLCertificates]
isCertificateInstalled = true