对于模糊的标题感到抱歉,我不知道如何用一行描述问题。
基本上我正在尝试为语言类似于XML的语言构建一个简单的解析器(手动),如下所示:
<my_language check="somestring">
*strings here*
</my_language>
这里的字符串意味着里面可能有任何东西(但很可能是来自另一种语言的代码)。 完整代码的示例可能是这样的:
<my_language check="House">
House myHouse = new House();
house.setAdress("somewhere");
</my_language>
<my_language check="House/Garage">
Garage myGarage = new Garage();
garage.setCar("some car");
</my_language>
语言的意义现在并不真正相关。我需要的是一种解析这个的方法,使用递归下降解析器(仅使用语法分析器和词法分析器)。
语法分析器的语法并不是真正的问题......我正在努力做的是找到我需要的令牌的词法分析器。
我最近为类似于XML的语言创建了另一个与此类似的解析器,并且我使用StreamTokenizer作为词法分析器。在这种情况下,虽然我不知道如何使用它。
使用StreamTokenizer,我可以轻松拆分“my_language check =”House“&gt;”等部分到令牌,但后来我需要将代码中的代码作为一个整体(保持格式完整),我不知道我该怎么做。基本上我需要整个代码块而不是逐字逐句,但我知道StreamTokenizer不能让我这样做。
那么,我应该采用什么方法?