diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/nodes/DCAstBracketNode.xtend')
-rw-r--r-- | plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/nodes/DCAstBracketNode.xtend | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/nodes/DCAstBracketNode.xtend b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/nodes/DCAstBracketNode.xtend new file mode 100644 index 000000000..660f8f632 --- /dev/null +++ b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/nodes/DCAstBracketNode.xtend @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2018 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Henrik Rentz-Reichert (initial contribution) + * + *******************************************************************************/ + +package org.eclipse.etrice.dctools.fsm.ast.nodes + +import org.eclipse.etrice.dctools.fsm.ast.nodes.DCAstNode +import org.eclipse.xtend.lib.annotations.Accessors + +@Accessors +class DCAstBracketNode extends DCAstTextNode { + + enum BracketType { + ROUND, + CURLY, + SQUARE + } + + BracketType type + int posClose + boolean closed + + new(DCAstNode parent, BracketType type, DCAstNode contents, int posOpen, int posClose) { + super(parent, 2, posOpen, posOpen+1) + this.type = type + this.posClose = posClose + this.closed = posClose>=0 + + if (contents!==null) { + contents.parent = this + } + } + + new(DCAstNode parent, BracketType type, DCAstNode contents, int posOpen) { + this(parent, type, contents, posOpen, -1) + } + + def left() { + switch type { + case CURLY: "{" + case ROUND: "(" + case SQUARE: "[" + } + } + + def right() { + switch type { + case CURLY: "}" + case ROUND: ")" + case SQUARE: "]" + } + } + + override toString() { + switch type { + case CURLY: "{}" + case ROUND: "()" + case SQUARE: "[]" + } + } + + override protected doPrint(String indent) { + println(indent + "DCAstBracketNode " + this.toString) + } + + override def String getText() { toString } +}
\ No newline at end of file |