\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /proc/self/root/opt/cpanel/ea-ruby27/root/usr/local/share/gems/gems/prism-1.9.0/docs/

Viewing File: mapping.md

# Mapping

When considering the previous CRuby parser versus prism, this document should be helpful to understand how various concepts are mapped.

## Nodes

The following table shows how the various CRuby nodes are mapped to prism nodes.

| CRuby | prism |
| --- | --- |
| `NODE_SCOPE` | |
| `NODE_BLOCK` | |
| `NODE_IF` | `PM_IF_NODE` |
| `NODE_UNLESS` | `PM_UNLESS_NODE` |
| `NODE_CASE` | `PM_CASE_NODE` |
| `NODE_CASE2` | `PM_CASE_NODE` (with a null predicate) |
| `NODE_CASE3` | |
| `NODE_WHEN` | `PM_WHEN_NODE` |
| `NODE_IN` | `PM_IN_NODE` |
| `NODE_WHILE` | `PM_WHILE_NODE` |
| `NODE_UNTIL` | `PM_UNTIL_NODE` |
| `NODE_ITER` | `PM_CALL_NODE` (with a non-null block) |
| `NODE_FOR` | `PM_FOR_NODE` |
| `NODE_FOR_MASGN` | `PM_FOR_NODE` (with a multi-write node as the index) |
| `NODE_BREAK` | `PM_BREAK_NODE` |
| `NODE_NEXT` | `PM_NEXT_NODE` |
| `NODE_REDO` | `PM_REDO_NODE` |
| `NODE_RETRY` | `PM_RETRY_NODE` |
| `NODE_BEGIN` | `PM_BEGIN_NODE` |
| `NODE_RESCUE` | `PM_RESCUE_NODE` |
| `NODE_RESBODY` | |
| `NODE_ENSURE` | `PM_ENSURE_NODE` |
| `NODE_AND` | `PM_AND_NODE` |
| `NODE_OR` | `PM_OR_NODE` |
| `NODE_MASGN` | `PM_MULTI_WRITE_NODE` |
| `NODE_LASGN` | `PM_LOCAL_VARIABLE_WRITE_NODE` |
| `NODE_DASGN` | `PM_LOCAL_VARIABLE_WRITE_NODE` |
| `NODE_GASGN` | `PM_GLOBAL_VARIABLE_WRITE_NODE` |
| `NODE_IASGN` | `PM_INSTANCE_VARIABLE_WRITE_NODE` |
| `NODE_CDECL` | `PM_CONSTANT_PATH_WRITE_NODE` |
| `NODE_CVASGN` | `PM_CLASS_VARIABLE_WRITE_NODE` |
| `NODE_OP_ASGN1` | |
| `NODE_OP_ASGN2` | |
| `NODE_OP_ASGN_AND` | `PM_OPERATOR_AND_ASSIGNMENT_NODE` |
| `NODE_OP_ASGN_OR` | `PM_OPERATOR_OR_ASSIGNMENT_NODE` |
| `NODE_OP_CDECL` | |
| `NODE_CALL` | `PM_CALL_NODE` |
| `NODE_OPCALL` | `PM_CALL_NODE` (with an operator as the method) |
| `NODE_FCALL` | `PM_CALL_NODE` (with a null receiver and parentheses) |
| `NODE_VCALL` | `PM_CALL_NODE` (with a null receiver and parentheses or arguments) |
| `NODE_QCALL` | `PM_CALL_NODE` (with a &. operator) |
| `NODE_SUPER` | `PM_SUPER_NODE` |
| `NODE_ZSUPER` | `PM_FORWARDING_SUPER_NODE` |
| `NODE_LIST` | `PM_ARRAY_NODE` |
| `NODE_ZLIST` | `PM_ARRAY_NODE` (with no child elements) |
| `NODE_VALUES` | `PM_ARGUMENTS_NODE` |
| `NODE_HASH` | `PM_HASH_NODE` |
| `NODE_RETURN` | `PM_RETURN_NODE` |
| `NODE_YIELD` | `PM_YIELD_NODE` |
| `NODE_LVAR` | `PM_LOCAL_VARIABLE_READ_NODE` |
| `NODE_DVAR` | `PM_LOCAL_VARIABLE_READ_NODE` |
| `NODE_GVAR` | `PM_GLOBAL_VARIABLE_READ_NODE` |
| `NODE_IVAR` | `PM_INSTANCE_VARIABLE_READ_NODE` |
| `NODE_CONST` | `PM_CONSTANT_PATH_READ_NODE` |
| `NODE_CVAR` | `PM_CLASS_VARIABLE_READ_NODE` |
| `NODE_NTH_REF` | `PM_NUMBERED_REFERENCE_READ_NODE` |
| `NODE_BACK_REF` | `PM_BACK_REFERENCE_READ_NODE` |
| `NODE_MATCH` | |
| `NODE_MATCH2` | `PM_CALL_NODE` (with regular expression as receiver) |
| `NODE_MATCH3` | `PM_CALL_NODE` (with regular expression as only argument) |
| `NODE_LIT` | |
| `NODE_STR` | `PM_STRING_NODE` |
| `NODE_DSTR` | `PM_INTERPOLATED_STRING_NODE` |
| `NODE_XSTR` | `PM_X_STRING_NODE` |
| `NODE_DXSTR` | `PM_INTERPOLATED_X_STRING_NODE` |
| `NODE_EVSTR` | `PM_STRING_INTERPOLATED_NODE` |
| `NODE_DREGX` | `PM_INTERPOLATED_REGULAR_EXPRESSION_NODE` |
| `NODE_ONCE` | |
| `NODE_ARGS` | `PM_PARAMETERS_NODE` |
| `NODE_ARGS_AUX` | |
| `NODE_OPT_ARG` | `PM_OPTIONAL_PARAMETER_NODE` |
| `NODE_KW_ARG` | `PM_KEYWORD_PARAMETER_NODE` |
| `NODE_POSTARG` | `PM_REQUIRED_PARAMETER_NODE` |
| `NODE_ARGSCAT` | |
| `NODE_ARGSPUSH` | |
| `NODE_SPLAT` | `PM_SPLAT_NODE` |
| `NODE_BLOCK_PASS` | `PM_BLOCK_ARGUMENT_NODE` |
| `NODE_DEFN` | `PM_DEF_NODE` (with a null receiver) |
| `NODE_DEFS` | `PM_DEF_NODE` (with a non-null receiver) |
| `NODE_ALIAS` | `PM_ALIAS_NODE` |
| `NODE_VALIAS` | `PM_ALIAS_NODE` (with a global variable first argument) |
| `NODE_UNDEF` | `PM_UNDEF_NODE` |
| `NODE_CLASS` | `PM_CLASS_NODE` |
| `NODE_MODULE` | `PM_MODULE_NODE` |
| `NODE_SCLASS` | `PM_S_CLASS_NODE` |
| `NODE_COLON2` | `PM_CONSTANT_PATH_NODE` |
| `NODE_COLON3` | `PM_CONSTANT_PATH_NODE` (with a null receiver) |
| `NODE_DOT2` | `PM_RANGE_NODE` (with a .. operator) |
| `NODE_DOT3` | `PM_RANGE_NODE` (with a ... operator) |
| `NODE_FLIP2` | `PM_RANGE_NODE` (with a .. operator) |
| `NODE_FLIP3` | `PM_RANGE_NODE` (with a ... operator) |
| `NODE_SELF` | `PM_SELF_NODE` |
| `NODE_NIL` | `PM_NIL_NODE` |
| `NODE_TRUE` | `PM_TRUE_NODE` |
| `NODE_FALSE` | `PM_FALSE_NODE` |
| `NODE_ERRINFO` | |
| `NODE_DEFINED` | `PM_DEFINED_NODE` |
| `NODE_POSTEXE` | `PM_POST_EXECUTION_NODE` |
| `NODE_DSYM` | `PM_INTERPOLATED_SYMBOL_NODE` |
| `NODE_ATTRASGN` | `PM_CALL_NODE` (with a message that ends with =) |
| `NODE_LAMBDA` | `PM_LAMBDA_NODE` |
| `NODE_ARYPTN` | `PM_ARRAY_PATTERN_NODE` |
| `NODE_HSHPTN` | `PM_HASH_PATTERN_NODE` |
| `NODE_FNDPTN` | `PM_FIND_PATTERN_NODE` |
| `NODE_ERROR` | `PM_MISSING_NODE` |
| `NODE_LAST` | |
```