01: /*
02: * OrNodeCompiler.java
03: *
04: * Created on January 12, 2007, 1:08 PM
05: *
06: * To change this template, choose Tools | Template Manager
07: * and open the template in the editor.
08: */
09:
10: package org.jruby.compiler;
11:
12: import org.jruby.ast.Node;
13: import org.jruby.ast.OrNode;
14:
15: /**
16: *
17: * @author headius
18: */
19: public class OrNodeCompiler implements NodeCompiler {
20:
21: /** Creates a new instance of OrNodeCompiler */
22: public OrNodeCompiler() {
23: }
24:
25: public void compile(Node node, Compiler context) {
26: context.lineNumber(node.getPosition());
27:
28: final OrNode orNode = (OrNode) node;
29:
30: NodeCompilerFactory.getCompiler(orNode.getFirstNode()).compile(
31: orNode.getFirstNode(), context);
32:
33: BranchCallback longCallback = new BranchCallback() {
34: public void branch(Compiler context) {
35: NodeCompilerFactory.getCompiler(orNode.getSecondNode())
36: .compile(orNode.getSecondNode(), context);
37: }
38: };
39:
40: context.performLogicalOr(longCallback);
41: }
42: }
|