| /*=============================================================================# |
| # Copyright (c) 2007, 2019 Stephan Wahlbrink and others. |
| # |
| # This program and the accompanying materials are made available under the |
| # terms of the Eclipse Public License 2.0 which is available at |
| # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 |
| # which is available at https://www.apache.org/licenses/LICENSE-2.0. |
| # |
| # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 |
| # |
| # Contributors: |
| # Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation |
| #=============================================================================*/ |
| |
| package org.eclipse.statet.r.core.rsource.ast; |
| |
| import org.eclipse.statet.jcommons.lang.NonNullByDefault; |
| |
| import org.eclipse.statet.r.core.rsource.ast.RAstNode.Assoc; |
| |
| |
| /** |
| * Definitions for RAst nodes. |
| */ |
| @NonNullByDefault |
| public enum NodeType { |
| |
| SOURCELINES ("R", 100000000, Assoc.CONTAINER), //$NON-NLS-1$ |
| COMMENT ("#", -1, -1), //$NON-NLS-1$ |
| DOCU_AGGREGATION ("#'", -1, -1), //$NON-NLS-1$ |
| DOCU_TAG ("@", -1, -1), //$NON-NLS-1$ |
| DOCU_TEXT ("abc", -1, -1), //$NON-NLS-1$ |
| ERROR ("‼", 99, Assoc.LEFTSTD), //$NON-NLS-1$ |
| ERROR_TERM ("‼", 1, Assoc.TERM), //$NON-NLS-1$ |
| DUMMY ("", 1, Assoc.CONTAINER), //$NON-NLS-1$ |
| |
| STRING_CONST ("str", 1, Assoc.TERM), //$NON-NLS-1$ |
| NUM_CONST ("num", 1, Assoc.TERM), //$NON-NLS-1$ |
| NULL_CONST ("null", 1, Assoc.TERM), //$NON-NLS-1$ |
| SYMBOL ("sym", 1, Assoc.TERM), //$NON-NLS-1$ |
| |
| BLOCK ("{ }", 11, Assoc.CONTAINER), //$NON-NLS-1$ |
| GROUP ("( )", 11, Assoc.CONTAINER), //$NON-NLS-1$ |
| |
| SUB_INDEXED_S ("[", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| SUB_INDEXED_D ("[[", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| SUB_INDEXED_ARGS ("○", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| SUB_INDEXED_ARG ("•", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| |
| NS_GET ("::", 13, Assoc.TERM), //$NON-NLS-1$ |
| NS_GET_INT (":::", 13, Assoc.TERM), //$NON-NLS-1$ |
| |
| SUB_NAMED_PART ("$", 14, Assoc.LEFTSTD), //$NON-NLS-1$ |
| SUB_NAMED_SLOT ("@", 14, Assoc.LEFTSTD), //$NON-NLS-1$ |
| |
| POWER ("^", 101, Assoc.RIGHTSTD), //$NON-NLS-1$ |
| SIGN ("±", 102, Assoc.LEFTSTD), //$NON-NLS-1$ |
| SEQ (":", 103, Assoc.LEFTSTD), //$NON-NLS-1$ |
| SPECIAL ("%", 104, Assoc.LEFTSTD), //$NON-NLS-1$ |
| MULT ("*/", 105, Assoc.LEFTSTD), //$NON-NLS-1$ |
| ADD ("+-", 106, Assoc.LEFTSTD), //$NON-NLS-1$ |
| RELATIONAL ("<>", 111, Assoc.NOSTD), //$NON-NLS-1$ |
| NOT ("!", 112, Assoc.LEFTSTD), //$NON-NLS-1$ |
| AND ("&", 113, Assoc.LEFTSTD), //$NON-NLS-1$ |
| OR ("|", 114, Assoc.LEFTSTD), //$NON-NLS-1$ |
| |
| MODEL ("~", 1001, Assoc.LEFTSTD), //$NON-NLS-1$ |
| |
| A_RIGHT ("->", 10001, Assoc.LEFTSTD), //$NON-NLS-1$ |
| A_EQUALS ("=", 10005, Assoc.RIGHTSTD), // SPEC: precedence= 10002 //$NON-NLS-1$ |
| A_LEFT ("<-", 10003, Assoc.RIGHTSTD), //$NON-NLS-1$ |
| A_COLON (":=", 10003, Assoc.RIGHTSTD), // SPEC: missing //$NON-NLS-1$ |
| |
| C_IF ("if", 100001, Assoc.RIGHTSTD), //$NON-NLS-1$ |
| C_FOR ("for", 100002, Assoc.LEFTSTD), //$NON-NLS-1$ |
| C_IN ("in", 100002, Assoc.LEFTSTD), //$NON-NLS-1$ |
| C_WHILE ("while", 100002, Assoc.LEFTSTD), //$NON-NLS-1$ |
| C_REPEAT ("repeat", 100002, Assoc.LEFTSTD), //$NON-NLS-1$ |
| C_NEXT ("next", 1, Assoc.TERM), //$NON-NLS-1$ |
| C_BREAK ("break", 1, Assoc.TERM), //$NON-NLS-1$ |
| F_DEF ("def", 100002, Assoc.RIGHTSTD), //$NON-NLS-1$ |
| F_DEF_ARGS ("○", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| F_DEF_ARG ("•", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| F_CALL ("call", 11, Assoc.LEFTSTD), //$NON-NLS-1$ |
| F_CALL_ARGS ("○", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| F_CALL_ARG ("•", 12, Assoc.CONTAINER), //$NON-NLS-1$ |
| |
| HELP ("?", 999, Assoc.LEFTSTD), //$NON-NLS-1$ |
| ; |
| |
| |
| public final String label; |
| public final int opPrec; |
| final int opAssoc; |
| |
| |
| NodeType(final String label, final int precedence, final int assoc) { |
| this.label= label; |
| this.opPrec= precedence; |
| this.opAssoc= assoc; |
| } |
| |
| } |