diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens')
3 files changed, 132 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCBracketToken.xtend b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCBracketToken.xtend new file mode 100644 index 000000000..073388b5f --- /dev/null +++ b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCBracketToken.xtend @@ -0,0 +1,53 @@ +/******************************************************************************* + * 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.tokens + +import org.eclipse.etrice.dctools.fsm.ast.tokens.DCBracketToken.BracketKind +import org.eclipse.xtend.lib.annotations.Data + +@Data +class DCBracketToken extends DCToken { + + enum BracketKind { + LEFT_ROUND, RIGHT_ROUND, + LEFT_CURLY, RIGHT_CURLY, + LEFT_SQUARE, RIGHT_SQUARE + } + + static val leftRoundBracket = new DCBracketToken(BracketKind.LEFT_ROUND) + static val rightRoundBracket = new DCBracketToken(BracketKind.RIGHT_ROUND) + static val leftCurlyBracket = new DCBracketToken(BracketKind.LEFT_CURLY) + static val rightCurlyBracket = new DCBracketToken(BracketKind.RIGHT_CURLY) + static val leftSquareBracket = new DCBracketToken(BracketKind.LEFT_SQUARE) + static val rightSquareBracket = new DCBracketToken(BracketKind.RIGHT_SQUARE) + + static val char2token = #{ + Character.valueOf('(') -> leftRoundBracket, + Character.valueOf(')') -> rightRoundBracket, + Character.valueOf('{') -> leftCurlyBracket, + Character.valueOf('}') -> rightCurlyBracket, + Character.valueOf('[') -> leftSquareBracket, + Character.valueOf(']') -> rightSquareBracket + } + + BracketKind bracketKind + + private new(BracketKind bk) { + super(Kind.BRACKET) + this.bracketKind = bk + } + + static def getToken(char c) { + char2token.get(c) + } +}
\ No newline at end of file diff --git a/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCTextToken.xtend b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCTextToken.xtend new file mode 100644 index 000000000..0a119c6ca --- /dev/null +++ b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCTextToken.xtend @@ -0,0 +1,22 @@ +/******************************************************************************* + * 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.tokens + +import org.eclipse.xtend.lib.annotations.Data + +@Data +class DCTextToken { + int begin + int length + DCToken token +}
\ No newline at end of file diff --git a/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCToken.xtend b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCToken.xtend new file mode 100644 index 000000000..c6dc4ec80 --- /dev/null +++ b/plugins/org.eclipse.etrice.dctools.fsm/src/org/eclipse/etrice/dctools/fsm/ast/tokens/DCToken.xtend @@ -0,0 +1,57 @@ +/******************************************************************************* + * 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.tokens + +import org.eclipse.jface.text.rules.IToken +import org.eclipse.xtend.lib.annotations.Data + +@Data +class DCToken implements IToken { + + enum Kind { + COMMENT, + STRING, + WHITESPACE, + PERIOD, + STATEMENT_SEP, + BRACKET, + NUMBER, + KEYWORD, + IDENTIFIER, + OTHER, + EOF + } + + Kind kind + + override getData() { + null + } + + override isEOF() { + kind===Kind.EOF + } + + override isOther() { + kind===Kind.OTHER + } + + override isUndefined() { + false + } + + override isWhitespace() { + kind===Kind.WHITESPACE + } + +}
\ No newline at end of file |