zer*_*ord 5 oop file-io parsing design-patterns
作为我正在处理的软件包的一部分,我需要为特定于应用程序的文本文件实现解析器.我已经在纸上指定了这些文件的语法,但我很难将其转换为易于阅读/可更新的代码(现在只需通过大量的switch语句传递每行).
那么,在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);
}
...
}
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,您将每个switch语句分解为该令牌对象上的方法,以检测该字符串的下一位是否属于该令牌类型.
先前:
class TokenParse {
public void parseTokens(string data) {
for each step in data {
switch (step) {
case x:
...
case y:
...
...
}
}
...
}
}
Run Code Online (Sandbox Code Playgroud)