标签: interpreter-pattern

为什么解释器模式很糟糕?

Steve Yegge对Design Patterns的评论中,他将Interpreter Pattern称为"开玩笑".他继续谈论编译器的看法是如何改变的,但是解释语言仍然存在,尽管我看不出它是如何与模式联系起来的.

有谁想要启发这个无知的学生?

interpreter design-patterns interpreter-pattern

13
推荐指数
1
解决办法
3335
查看次数

INTERPRETER是反模式吗?

对我来说,翻译模式听起来非常像一个被称为格林普森第十条规则的反模式:

任何足够复杂的C或Fortran程序都包含一个特殊的,非正式指定的,错误缠身的,一半Common Lisp的缓慢实现.

也就是说,如果你需要使用Interpreter,你可能会创建一些缓慢,临时和指定不当的东西.正确的解决方案是从一开始就使用正确的语言.

或者,或者,在您的应用程序中嵌入一个众所周知且语言清晰的语言,例如Guile(GNU可嵌入方案).或者使用Haskell作为嵌入式域特定语言.

但我在实践中没有看到这一点 - 您在构建自己的嵌入式语言方面有哪些经验?这是个好主意吗?它比嵌入已有的语言更好吗?

(我不是特别喜欢lisp的粉丝.这很好,但是C和Haskell以及python和很多其他语言都是如此.)

lisp design-patterns anti-patterns greenspunning interpreter-pattern

10
推荐指数
3
解决办法
1732
查看次数

在Composite结构上使用Interpreter模式

我被要求使用Composite,Recursive Descendent ParserInterpreter创建表达式求值程序.

这是语法:

<cond> ? <termb> [OR <termb>]*
<termb>?<factb>[AND <factb>]*
<factb>?<expr> RELOP <expr> | NOT <factb> | OPAR <cond> CPAR
<expr> ? [PLUS | MINUS] <term> [(PLUS <term>) | (MINUS <term>)]*
<term> ? <termp> [(MULT <termp>) | (DIV <termp>) | (REM <termp>)]*
<termp> ? <fact> [POWER <fact>]*
<fact> ? ID | NUM | OPAR1 <expr> CPAR1
----TERMINALS----
ID ? ("A" | ... | "Z" | "a" | ...| "z") …
Run Code Online (Sandbox Code Playgroud)

java design-patterns composite interpreter-pattern

10
推荐指数
1
解决办法
2226
查看次数

解释器模式示例

我很好奇知道解释器模式的一些实时示例。我可以找到一些重复的示例,例如“正则表达式”示例。有人可以引导我介绍其他示例吗?

design-patterns interpreter-pattern

4
推荐指数
1
解决办法
5290
查看次数

终结符和非终结符

我目前正在阅读有关解释器模式的内容,它说明了有关终端和非终端符号的内容。所以我去了维基百科并阅读了它。但我还是不明白终结符和非终结符是什么。你能给我一些编程的例子吗?我不想复制粘贴维基百科页面……我想要真实世界的例子。

design-patterns interpreter-pattern

2
推荐指数
1
解决办法
1847
查看次数

解释器模式和访问者模式有什么区别?

我很难理解这两种设计模式。

您能否给我提供上下文信息或示例,以便我可以清楚地了解并能够映射两者之间的差异。

谢谢。

java design-patterns visitor-pattern interpreter-pattern

0
推荐指数
1
解决办法
910
查看次数