作为我正在处理的软件包的一部分,我需要为特定于应用程序的文本文件实现解析器.我已经在纸上指定了这些文件的语法,但我很难将其转换为易于阅读/可更新的代码(现在只需通过大量
那么,在Java风格的OO环境中实现解析器是否有任何好的设计模式?
任何简单的方法来打破大规模切换到OO设计将是伪代码
class XTokenType { public bool isToken(string data); } class TokenParse { public void parseTokens(string data) { for each step in data { for each tokenType in tokenTypess { if (tokenType.isToken(step)) { parsedTokens[len] = new tokenType(step); } ... } } ... } }
在这里,您将每个switch语句分解为该令牌对象上的方法,以检测该字符串的下一位是否属于该令牌类型.
先前:
class TokenParse { public void parseTokens(string data) { for each step in data { switch (step) { case x: ... case y: ... ... } } ... } }