| 1807 | } |
| 1808 | |
| 1809 | void |
| 1810 | parser_ast_regvar (struct parser_node* node, char const* name, int i) |
| 1811 | { |
| 1812 | switch (node->type) |
| 1813 | { |
| 1814 | case PARSER_NUMBER: |
| 1815 | break; |
| 1816 | case PARSER_SYMBOL: |
| 1817 | if (std::strcmp(name, ((struct parser_symbol*)node)->name) == 0) { |
| 1818 | ((struct parser_symbol*)node)->ip = i; |
| 1819 | } |
| 1820 | break; |
| 1821 | case PARSER_ADD: |
| 1822 | case PARSER_SUB: |
| 1823 | case PARSER_MUL: |
| 1824 | case PARSER_DIV: |
| 1825 | case PARSER_LIST: |
| 1826 | parser_ast_regvar(node->l, name, i); |
| 1827 | parser_ast_regvar(node->r, name, i); |
| 1828 | break; |
| 1829 | case PARSER_F1: |
| 1830 | parser_ast_regvar(((struct parser_f1*)node)->l, name, i); |
| 1831 | break; |
| 1832 | case PARSER_F2: |
| 1833 | parser_ast_regvar(((struct parser_f2*)node)->l, name, i); |
| 1834 | parser_ast_regvar(((struct parser_f2*)node)->r, name, i); |
| 1835 | break; |
| 1836 | case PARSER_F3: |
| 1837 | parser_ast_regvar(((struct parser_f3*)node)->n1, name, i); |
| 1838 | parser_ast_regvar(((struct parser_f3*)node)->n2, name, i); |
| 1839 | parser_ast_regvar(((struct parser_f3*)node)->n3, name, i); |
| 1840 | break; |
| 1841 | case PARSER_USRF1: |
| 1842 | parser_ast_regvar(((struct parser_usrf1*)node)->l, name, i); |
| 1843 | break; |
| 1844 | case PARSER_USRF2: |
| 1845 | parser_ast_regvar(((struct parser_usrf2*)node)->l, name, i); |
| 1846 | parser_ast_regvar(((struct parser_usrf2*)node)->r, name, i); |
| 1847 | break; |
| 1848 | case PARSER_USRFN: |
| 1849 | { |
| 1850 | parser_ast_regvar(((struct parser_usrfn*)node)->n1, name, i); |
| 1851 | short argc = ((struct parser_usrfn*)node)->argc; |
| 1852 | for (short iarg = 0; iarg < argc-1; ++iarg) { |
| 1853 | parser_ast_regvar(((struct parser_usrfn*)node)->others[iarg], name, i); |
| 1854 | } |
| 1855 | break; |
| 1856 | } |
| 1857 | case PARSER_ASSIGN: |
| 1858 | parser_ast_regvar(((struct parser_assign*)node)->v, name, i); |
| 1859 | break; |
| 1860 | default: |
| 1861 | amrex::Abort("parser_ast_regvar: unknown node type "+std::to_string(node->type)); |
| 1862 | } |
| 1863 | } |
| 1864 | |
| 1865 | void parser_ast_setconst (struct parser_node* node, char const* name, double c) |
| 1866 | { |
no test coverage detected