|
|
| version 1.65, 2001/03/07 10:35:41 | version 1.66, 2001/03/07 10:45:49 |
|---|---|
| Line 188 action: get | put | with | call; | Line 188 action: get | put | with | call; |
| get: get_value { | get: get_value { |
| $$=$1; /* stack: resulting value */ | $$=$1; /* stack: resulting value */ |
| O($$, OP_WRITE); /* value=pop; write(value) */ | O($$, OP_WRITE); /* value=pop; wcontext.write(value) */ |
| }; | }; |
| get_value: '$' get_name_value { $$=$2 } | get_value: '$' get_name_value { $$=$2 } |
| get_name_value: name_without_curly_rdive EON | name_in_curly_rdive; | get_name_value: name_without_curly_rdive EON | name_in_curly_rdive; |
| Line 273 codes__excluding_sole_str_literal: actio | Line 273 codes__excluding_sole_str_literal: actio |
| /* call */ | /* call */ |
| call: '^' call_name store_params EON { /* ^field.$method{vasya} */ | call: call_value { |
| $$=$1; /* stack: value */ | |
| O($$, OP_WRITE); /* value=pop; wcontext.write(value) */ | |
| }; | |
| call_value: '^' call_name store_params EON { /* ^field.$method{vasya} */ | |
| $$=$2; /* with_xxx,diving code; stack: context,method_junction */ | $$=$2; /* with_xxx,diving code; stack: context,method_junction */ |
| O($$, OP_GET_METHOD_FRAME); /* stack: context,method_frame */ | O($$, OP_GET_METHOD_FRAME); /* stack: context,method_frame */ |
| P($$, $3); /* filling method_frame.store_params */ | P($$, $3); /* filling method_frame.store_params */ |
| O($$, OP_CALL); /* method_frame=pop; ncontext=pop; call(ncontext,method_frame) */ | O($$, OP_CALL); /* method_frame=pop; ncontext=pop; call(ncontext,method_frame) stack: value */ |
| }; | }; |
| call_name: name_without_curly_rdive; | call_name: name_without_curly_rdive; |
| Line 396 optimized_expr: expr { | Line 400 optimized_expr: expr { |
| expr: | expr: |
| STRING | STRING |
| | get_value | | get_value |
| | call_value | |
| | '"' string_inside_quotes_value '"' { $$ = $2; } | | '"' string_inside_quotes_value '"' { $$ = $2; } |
| | '(' expr ')' { $$ = $2; } | | '(' expr ')' { $$ = $2; } |
| /* stack: operand // stack: @operand */ | /* stack: operand // stack: @operand */ |