如何使用重定向编译自定义格式的ini文件?

时间:2016-07-17 01:43:29

标签: parsing pseudocode ini

我正在处理一个包含3个ini文件的应用程序,这些文件有点刺激性的自定义格式。我试图将这些编译成一个标准' ini文件。

我希望以伪代码的形式提供一些灵感来帮助我编写某种编译器代码。

这是其中一个ini文件的示例。小于/大于表示重定向到文件中的另一个部分。这些重定向可以是递归的。即,一个重定向然后重定向到另一个。它也可能意味着重定向到外部文件(在这种情况下存在3个值)。注释以#符号

开头
           Date  Price   Open   High    Low    Vol. Change %
0  Jul 15, 2016  98.78  99.02  99.30  98.51  30.14M   -0.01%
1  Jul 14, 2016  98.79  97.39  98.99  97.32  38.92M    1.98%
----
['-0.01%', '1.98%']

这是我尝试实现的一个例子。我已删除了评论的可读性。

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

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

[LoginUrl]
# This is a standard redirect
baseLoginUrl = <PrimaryServer:baseUrl>

# This is a redirect appended with extra information
fullLoginUrl = <PrimaryServer:baseUrl>/login.php

# Here's a redirect that points to another redirect
enableSSL = <SSLConfiguration:enableSSL>

# This is a key that has mutliple comma-separated values, some of which are redirects.
serverNames = <PrimaryServer:name>,<SecondaryServer:name>,AdditionalRandomServerName

# This one is particularly nasty. It's a redirect to another file...
authenticationMechanism = <Authenication.ini:Mechanisms:PrimaryMechanism>

[SSLConfiguration]
enableSSL = <SSLCertificates:isCertificateInstalled>

[SSLCertificates]
isCertificateInstalled = true

我正在考虑使用ini4j(Java)来实现这一目标,但我决不会使用该语言。

我的主要问题是:

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

  • 2)我如何最好地处理具有附加字符串的重定向,例如[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

  • 3)有关如何处理外部重定向的任何建议的加分点。如果那部分尚未发挥作用,那就没什么大不了的了。

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

再次,我只希望伪代码。也许我需要更多的咖啡,但我真的很困惑。

提前感谢任何建议。

0 个答案:

没有答案