这种模式一般用来为一门语言创建解释器。解释语言时,会从一段上下文(context)开始解析。而这个上下文会由不同的部分组成,各个部分有不同的解析方式。比如一段html
- <html>
- <head>
- </head>
- <body>
- </body>
- </html>
解析器的类层次结构可以是:
- interface Expression { virtual void interpret(string context) = 0; }
- class HtmlExpression : public Expression
- {
- virtual void interpret(string context)
- {
- parseHtml(context);
- string headContext = getHeadContext(context);
- Expression* pHeadExp = new HeadExpression;
- pHeadExp->interpret(headContext);
- string bodyContext = getBodyContext(context);
- Expression* pBodyExp = new BodyExpression;
- pBodyExp->interpret(bodyContext);
- }
- };
- class HeadExpression : public Expression
- {
- virtual void interpret(string context)
- {
- parseHead(context);
- }
- };
- class BodyExpression : public Expression
- {
- virtual void interpret(string context)
- {
- parseBody(context);
- }
- };
阅读(1406) | 评论(0) | 转发(0) |