我有這個巨大的Maude字符串。這是一小片的那樣:如何着手編寫解析器?
NamedElements
(
(
NamedElement
(
SpecTable
(
SpecColumns
(
(
SpecColumn
(
Name
(
"Id"
)
,
TypeVarChar
(
18
)
)
,
SpecColumn
(
name
(
"IsDeleted"
)
,
DataTypeBit
)
... ...
只有一種東西叫做NamedElements。這裏有很多NamedElement對象。格式很容易理解。我需要爲此編寫一個解析器,以便我可以執行類似於獲取所有SpecColumn對象的名稱相同的東西。我不確定最好的方法來做到這一點。
有些事情我也想過:。通過每個字符
循環播放,直到我找到了「(」我做一個新的對象我添加此對象作爲它上面的對象上的屬性我繼續去直到找到匹配的')'。然後,這完成了該對象中的內容。
基本上,我從來沒有做過這樣的事情,並想知道是否有一些既定的方式來做到這一點,或者我是否需要做一些類似於我上面描述的事情?
https://en.wikipedia.org/wiki/Recursive_descent_parsing –
對不起,這個問題不適合以及堆棧溢出的範圍,但這裏有一些建議:1.谷歌「遞歸下降解析器「,這是最簡單的解析技術,你會發現很多示例實現。 2.看看我寫的[過於簡單的JSON解析器](https://github.com/H2CO3/libjsonz/tree/master/src/jsonz.c)。 – 2013-10-04 17:39:14
有一些優秀的圖書館可用於這種事情,你指定的語法。一個語言的想法將有助於提供更多的指導,但提升精神將是我對C++的推薦。它也快得驚人。 – OllieB