| 941 | /* Handle |. */ |
| 942 | |
| 943 | static VALUE * |
| 944 | eval (bool evaluate) |
| 945 | { |
| 946 | #ifdef EVAL_TRACE |
| 947 | trace ("eval"); |
| 948 | #endif |
| 949 | VALUE *l = eval1 (evaluate); |
| 950 | while (true) |
| 951 | { |
| 952 | if (nextarg ("|")) |
| 953 | { |
| 954 | VALUE *r = eval1 (evaluate && null (l)); |
| 955 | if (null (l)) |
| 956 | { |
| 957 | freev (l); |
| 958 | l = r; |
| 959 | if (null (l)) |
| 960 | { |
| 961 | freev (l); |
| 962 | l = int_value (0); |
| 963 | } |
| 964 | } |
| 965 | else |
| 966 | freev (r); |
| 967 | } |
| 968 | else |
| 969 | return l; |
| 970 | } |
| 971 | } |