Organizing imports, reformatting source code.
diff --git a/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandLexer.java b/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandLexer.java
index e7fd95e..31acadf 100644
--- a/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandLexer.java
+++ b/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandLexer.java
@@ -12,264 +12,290 @@
*/
package org.eclipse.gmf.internal.xpand.parser;
-import lpg.lpgjavaruntime.*;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import lpg.lpgjavaruntime.LexParser;
+import lpg.lpgjavaruntime.LexStream;
+import lpg.lpgjavaruntime.LpgLexStream;
+import lpg.lpgjavaruntime.Monitor;
+import lpg.lpgjavaruntime.ParseTable;
+import lpg.lpgjavaruntime.PrsStream;
+import lpg.lpgjavaruntime.RuleAction;
+
import org.eclipse.gmf.internal.xpand.Activator;
import org.eclipse.gmf.internal.xpand.util.ParserException.ErrorLocationInfo;
-import org.eclipse.ocl.Environment;
-import org.eclipse.ocl.lpg.BasicEnvironment;
-import org.eclipse.ocl.util.OCLUtil;
-import org.eclipse.ocl.parser.OCLKWLexer;
public class XpandLexer extends LpgLexStream implements XpandParsersym, XpandLexersym, RuleAction {
- private static ParseTable prs = new XpandLexerprs();
- private PrsStream prsStream;
- private final LexParser lexParser = new LexParser(this, prs, this);
- private XpandKWLexer kwLexer;
+ private static ParseTable prs = new XpandLexerprs();
- public PrsStream getPrsStream() { return prsStream; }
- public int getToken(int i) { return lexParser.getToken(i); }
- public int getRhsFirstTokenIndex(int i) { return lexParser.getFirstToken(i); }
- public int getRhsLastTokenIndex(int i) { return lexParser.getLastToken(i); }
+ private PrsStream prsStream;
- public int getLeftSpan() { return lexParser.getFirstToken(); }
- public int getRightSpan() { return lexParser.getLastToken(); }
+ private final LexParser lexParser = new LexParser(this, prs, this);
- public XpandLexer(char[] input_chars, String filename, int tab) {
- super(input_chars, filename, tab);
- }
+ private XpandKWLexer kwLexer;
- public XpandLexer(char[] input_chars, String filename) {
- this(input_chars, filename, 4);
- }
+ public PrsStream getPrsStream() {
+ return prsStream;
+ }
- public String[] orderedExportedSymbols() { return XpandParsersym.orderedTerminalSymbols; }
- public LexStream getLexStream() { return (LexStream) this; }
+ public int getToken(int i) {
+ return lexParser.getToken(i);
+ }
- public int [] getKeywordKinds() { return kwLexer.getKeywordKinds(); }
+ public int getRhsFirstTokenIndex(int i) {
+ return lexParser.getFirstToken(i);
+ }
- public void lexer(PrsStream prsStream) {
- lexer(null, prsStream);
- }
-
- public void lexer(Monitor monitor, PrsStream prsStream) {
- if (getInputChars() == null) {
- throw new NullPointerException("LexStream was not initialized");
- }
+ public int getRhsLastTokenIndex(int i) {
+ return lexParser.getLastToken(i);
+ }
- this.prsStream = prsStream;
- resetErrors();
+ public int getLeftSpan() {
+ return lexParser.getFirstToken();
+ }
- prsStream.makeToken(0, 0, 0); // Token list must start with a bad token
-
- lexParser.parseCharacters(monitor); // Lex the input characters
-
- int i = getStreamIndex();
- prsStream.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token
- prsStream.setStreamLength(prsStream.getSize());
-
- return;
- }
+ public int getRightSpan() {
+ return lexParser.getLastToken();
+ }
+
+ public XpandLexer(char[] input_chars, String filename, int tab) {
+ super(input_chars, filename, tab);
+ }
+
+ public XpandLexer(char[] input_chars, String filename) {
+ this(input_chars, filename, 4);
+ }
+
+ public String[] orderedExportedSymbols() {
+ return XpandParsersym.orderedTerminalSymbols;
+ }
+
+ public LexStream getLexStream() {
+ return (LexStream) this;
+ }
+
+ public int[] getKeywordKinds() {
+ return kwLexer.getKeywordKinds();
+ }
+
+ public void lexer(PrsStream prsStream) {
+ lexer(null, prsStream);
+ }
+
+ public void lexer(Monitor monitor, PrsStream prsStream) {
+ if (getInputChars() == null) {
+ throw new NullPointerException("LexStream was not initialized");
+ }
+
+ this.prsStream = prsStream;
+ resetErrors();
+
+ prsStream.makeToken(0, 0, 0); // Token list must start with a bad token
+
+ lexParser.parseCharacters(monitor); // Lex the input characters
+
+ int i = getStreamIndex();
+ prsStream.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file
+ // token
+ prsStream.setStreamLength(prsStream.getSize());
+
+ return;
+ }
@Override
- public void initialize(char [] content, String filename) {
- super.initialize(content, filename);
- if (this.kwLexer == null) {
- this.kwLexer = new XpandKWLexer(getInputChars(), TK_IDENTIFIER);
- } else {
- this.kwLexer.setInputChars(getInputChars());
- }
- }
-
- final void makeToken(int kind) {
- int startOffset = getLeftSpan(),
- endOffset = getRightSpan();
- makeToken(startOffset, endOffset, kind);
- }
+ public void initialize(char[] content, String filename) {
+ super.initialize(content, filename);
+ if (this.kwLexer == null) {
+ this.kwLexer = new XpandKWLexer(getInputChars(), TK_IDENTIFIER);
+ } else {
+ this.kwLexer.setInputChars(getInputChars());
+ }
+ }
- final void makeComment(int kind) {
- int startOffset = getLeftSpan(),
- endOffset = getRightSpan();
- super.getPrsStream().makeAdjunct(startOffset, endOffset, kind);
- }
+ final void makeToken(int kind) {
+ int startOffset = getLeftSpan(), endOffset = getRightSpan();
+ makeToken(startOffset, endOffset, kind);
+ }
- final void skipToken() {
- }
-
- final void checkForKeyWord() {
- int startOffset = getLeftSpan(),
- endOffset = getRightSpan(),
- kwKind = kwLexer.lexer(startOffset, endOffset);
- makeToken(startOffset, endOffset, kwKind);
- }
+ final void makeComment(int kind) {
+ int startOffset = getLeftSpan(), endOffset = getRightSpan();
+ super.getPrsStream().makeAdjunct(startOffset, endOffset, kind);
+ }
- // aux data for getKind method
- private final int tokenKind[] = {
- Char_CtlCharNotWS, // 000 0x00
- Char_CtlCharNotWS, // 001 0x01
- Char_CtlCharNotWS, // 002 0x02
- Char_CtlCharNotWS, // 003 0x03
- Char_CtlCharNotWS, // 004 0x04
- Char_CtlCharNotWS, // 005 0x05
- Char_CtlCharNotWS, // 006 0x06
- Char_CtlCharNotWS, // 007 0x07
- Char_CtlCharNotWS, // 008 0x08
- Char_HT, // 009 0x09
- Char_LF, // 010 0x0A
- Char_CtlCharNotWS, // 011 0x0B
- Char_FF, // 012 0x0C
- Char_CR, // 013 0x0D
- Char_CtlCharNotWS, // 014 0x0E
- Char_CtlCharNotWS, // 015 0x0F
- Char_CtlCharNotWS, // 016 0x10
- Char_CtlCharNotWS, // 017 0x11
- Char_CtlCharNotWS, // 018 0x12
- Char_CtlCharNotWS, // 019 0x13
- Char_CtlCharNotWS, // 020 0x14
- Char_CtlCharNotWS, // 021 0x15
- Char_CtlCharNotWS, // 022 0x16
- Char_CtlCharNotWS, // 023 0x17
- Char_CtlCharNotWS, // 024 0x18
- Char_CtlCharNotWS, // 025 0x19
- Char_CtlCharNotWS, // 026 0x1A
- Char_CtlCharNotWS, // 027 0x1B
- Char_CtlCharNotWS, // 028 0x1C
- Char_CtlCharNotWS, // 029 0x1D
- Char_CtlCharNotWS, // 030 0x1E
- Char_CtlCharNotWS, // 031 0x1F
- Char_Space, // 032 0x20
- Char_Exclamation, // 033 0x21
- Char_DoubleQuote, // 034 0x22
- Char_Sharp, // 035 0x23
- Char_DollarSign, // 036 0x24
- Char_Percent, // 037 0x25
- Char_Ampersand, // 038 0x26
- Char_SingleQuote, // 039 0x27
- Char_LeftParen, // 040 0x28
- Char_RightParen, // 041 0x29
- Char_Star, // 042 0x2A
- Char_Plus, // 043 0x2B
- Char_Comma, // 044 0x2C
- Char_Minus, // 045 0x2D
- Char_Dot, // 046 0x2E
- Char_Slash, // 047 0x2F
- Char_0, // 048 0x30
- Char_1, // 049 0x31
- Char_2, // 050 0x32
- Char_3, // 051 0x33
- Char_4, // 052 0x34
- Char_5, // 053 0x35
- Char_6, // 054 0x36
- Char_7, // 055 0x37
- Char_8, // 056 0x38
- Char_9, // 057 0x39
- Char_Colon, // 058 0x3A
- Char_SemiColon, // 059 0x3B
- Char_LessThan, // 060 0x3C
- Char_Equal, // 061 0x3D
- Char_GreaterThan, // 062 0x3E
- Char_QuestionMark, // 063 0x3F
- Char_AtSign, // 064 0x40
- Char_A, // 065 0x41
- Char_B, // 066 0x42
- Char_C, // 067 0x43
- Char_D, // 068 0x44
- Char_E, // 069 0x45
- Char_F, // 070 0x46
- Char_G, // 071 0x47
- Char_H, // 072 0x48
- Char_I, // 073 0x49
- Char_J, // 074 0x4A
- Char_K, // 075 0x4B
- Char_L, // 076 0x4C
- Char_M, // 077 0x4D
- Char_N, // 078 0x4E
- Char_O, // 079 0x4F
- Char_P, // 080 0x50
- Char_Q, // 081 0x51
- Char_R, // 082 0x52
- Char_S, // 083 0x53
- Char_T, // 084 0x54
- Char_U, // 085 0x55
- Char_V, // 086 0x56
- Char_W, // 087 0x57
- Char_X, // 088 0x58
- Char_Y, // 089 0x59
- Char_Z, // 090 0x5A
- Char_LeftBracket, // 091 0x5B
- Char_BackSlash, // 092 0x5C
- Char_RightBracket, // 093 0x5D
- Char_Caret, // 094 0x5E
- Char__, // 095 0x5F
- Char_BackQuote, // 096 0x60
- Char_a, // 097 0x61
- Char_b, // 098 0x62
- Char_c, // 099 0x63
- Char_d, // 100 0x64
- Char_e, // 101 0x65
- Char_f, // 102 0x66
- Char_g, // 103 0x67
- Char_h, // 104 0x68
- Char_i, // 105 0x69
- Char_j, // 106 0x6A
- Char_k, // 107 0x6B
- Char_l, // 108 0x6C
- Char_m, // 109 0x6D
- Char_n, // 110 0x6E
- Char_o, // 111 0x6F
- Char_p, // 112 0x70
- Char_q, // 113 0x71
- Char_r, // 114 0x72
- Char_s, // 115 0x73
- Char_t, // 116 0x74
- Char_u, // 117 0x75
- Char_v, // 118 0x76
- Char_w, // 119 0x77
- Char_x, // 120 0x78
- Char_y, // 121 0x79
- Char_z, // 122 0x7A
- Char_LeftBrace, // 123 0x7B
- Char_VerticalBar, // 124 0x7C
- Char_RightBrace, // 125 0x7D
- Char_Tilde, // 126 0x7E
- // [artem] As I understand, there's no need to specify characters other than those
- // we'll try to access by index from getKind method (iow, this array is auxilary
- // as I indicated in its comment). Thus, there seems to be no reason to specify
- // Char_Acute here as it's done in OCL's LexerBasicMap.g
- Char_AfterASCII, // for all chars in range 128..65534
- Char_EOF // for '\uffff' or 65535
- };
+ final void skipToken() {
+ }
- // Classify character at ith location
- @Override
- public final int getKind(int i) {
- char c = (i >= getStreamLength() ? '\uffff' : getCharValue(i));
- return (c < 128 // ASCII Character
- ? tokenKind[c]
- : c == '\uffff'
- ? Char_EOF
- : getNonAsciiKind(c));
-
- }
+ final void checkForKeyWord() {
+ int startOffset = getLeftSpan(), endOffset = getRightSpan(), kwKind = kwLexer.lexer(startOffset, endOffset);
+ makeToken(startOffset, endOffset, kwKind);
+ }
- private final static int getNonAsciiKind(char c) {
- if (c == '\u00AB') {
- return Char_LG;
- }
- if (c == '\u00BB') {
- return Char_RG;
- }
- if (c == '\u00b4') {
- return Char_Acute; // For OCLLexer
- }
- return Char_AfterASCII;
-
- }
+ // aux data for getKind method
+ private final int tokenKind[] = { Char_CtlCharNotWS, // 000 0x00
+ Char_CtlCharNotWS, // 001 0x01
+ Char_CtlCharNotWS, // 002 0x02
+ Char_CtlCharNotWS, // 003 0x03
+ Char_CtlCharNotWS, // 004 0x04
+ Char_CtlCharNotWS, // 005 0x05
+ Char_CtlCharNotWS, // 006 0x06
+ Char_CtlCharNotWS, // 007 0x07
+ Char_CtlCharNotWS, // 008 0x08
+ Char_HT, // 009 0x09
+ Char_LF, // 010 0x0A
+ Char_CtlCharNotWS, // 011 0x0B
+ Char_FF, // 012 0x0C
+ Char_CR, // 013 0x0D
+ Char_CtlCharNotWS, // 014 0x0E
+ Char_CtlCharNotWS, // 015 0x0F
+ Char_CtlCharNotWS, // 016 0x10
+ Char_CtlCharNotWS, // 017 0x11
+ Char_CtlCharNotWS, // 018 0x12
+ Char_CtlCharNotWS, // 019 0x13
+ Char_CtlCharNotWS, // 020 0x14
+ Char_CtlCharNotWS, // 021 0x15
+ Char_CtlCharNotWS, // 022 0x16
+ Char_CtlCharNotWS, // 023 0x17
+ Char_CtlCharNotWS, // 024 0x18
+ Char_CtlCharNotWS, // 025 0x19
+ Char_CtlCharNotWS, // 026 0x1A
+ Char_CtlCharNotWS, // 027 0x1B
+ Char_CtlCharNotWS, // 028 0x1C
+ Char_CtlCharNotWS, // 029 0x1D
+ Char_CtlCharNotWS, // 030 0x1E
+ Char_CtlCharNotWS, // 031 0x1F
+ Char_Space, // 032 0x20
+ Char_Exclamation, // 033 0x21
+ Char_DoubleQuote, // 034 0x22
+ Char_Sharp, // 035 0x23
+ Char_DollarSign, // 036 0x24
+ Char_Percent, // 037 0x25
+ Char_Ampersand, // 038 0x26
+ Char_SingleQuote, // 039 0x27
+ Char_LeftParen, // 040 0x28
+ Char_RightParen, // 041 0x29
+ Char_Star, // 042 0x2A
+ Char_Plus, // 043 0x2B
+ Char_Comma, // 044 0x2C
+ Char_Minus, // 045 0x2D
+ Char_Dot, // 046 0x2E
+ Char_Slash, // 047 0x2F
+ Char_0, // 048 0x30
+ Char_1, // 049 0x31
+ Char_2, // 050 0x32
+ Char_3, // 051 0x33
+ Char_4, // 052 0x34
+ Char_5, // 053 0x35
+ Char_6, // 054 0x36
+ Char_7, // 055 0x37
+ Char_8, // 056 0x38
+ Char_9, // 057 0x39
+ Char_Colon, // 058 0x3A
+ Char_SemiColon, // 059 0x3B
+ Char_LessThan, // 060 0x3C
+ Char_Equal, // 061 0x3D
+ Char_GreaterThan, // 062 0x3E
+ Char_QuestionMark, // 063 0x3F
+ Char_AtSign, // 064 0x40
+ Char_A, // 065 0x41
+ Char_B, // 066 0x42
+ Char_C, // 067 0x43
+ Char_D, // 068 0x44
+ Char_E, // 069 0x45
+ Char_F, // 070 0x46
+ Char_G, // 071 0x47
+ Char_H, // 072 0x48
+ Char_I, // 073 0x49
+ Char_J, // 074 0x4A
+ Char_K, // 075 0x4B
+ Char_L, // 076 0x4C
+ Char_M, // 077 0x4D
+ Char_N, // 078 0x4E
+ Char_O, // 079 0x4F
+ Char_P, // 080 0x50
+ Char_Q, // 081 0x51
+ Char_R, // 082 0x52
+ Char_S, // 083 0x53
+ Char_T, // 084 0x54
+ Char_U, // 085 0x55
+ Char_V, // 086 0x56
+ Char_W, // 087 0x57
+ Char_X, // 088 0x58
+ Char_Y, // 089 0x59
+ Char_Z, // 090 0x5A
+ Char_LeftBracket, // 091 0x5B
+ Char_BackSlash, // 092 0x5C
+ Char_RightBracket, // 093 0x5D
+ Char_Caret, // 094 0x5E
+ Char__, // 095 0x5F
+ Char_BackQuote, // 096 0x60
+ Char_a, // 097 0x61
+ Char_b, // 098 0x62
+ Char_c, // 099 0x63
+ Char_d, // 100 0x64
+ Char_e, // 101 0x65
+ Char_f, // 102 0x66
+ Char_g, // 103 0x67
+ Char_h, // 104 0x68
+ Char_i, // 105 0x69
+ Char_j, // 106 0x6A
+ Char_k, // 107 0x6B
+ Char_l, // 108 0x6C
+ Char_m, // 109 0x6D
+ Char_n, // 110 0x6E
+ Char_o, // 111 0x6F
+ Char_p, // 112 0x70
+ Char_q, // 113 0x71
+ Char_r, // 114 0x72
+ Char_s, // 115 0x73
+ Char_t, // 116 0x74
+ Char_u, // 117 0x75
+ Char_v, // 118 0x76
+ Char_w, // 119 0x77
+ Char_x, // 120 0x78
+ Char_y, // 121 0x79
+ Char_z, // 122 0x7A
+ Char_LeftBrace, // 123 0x7B
+ Char_VerticalBar, // 124 0x7C
+ Char_RightBrace, // 125 0x7D
+ Char_Tilde, // 126 0x7E
+ // [artem] As I understand, there's no need to specify characters
+ // other than those
+ // we'll try to access by index from getKind method (iow, this array
+ // is auxilary
+ // as I indicated in its comment). Thus, there seems to be no reason
+ // to specify
+ // Char_Acute here as it's done in OCL's LexerBasicMap.g
+ Char_AfterASCII, // for all chars in range 128..65534
+ Char_EOF // for '\uffff' or 65535
+ };
+
+ // Classify character at ith location
+ @Override
+ public final int getKind(int i) {
+ char c = (i >= getStreamLength() ? '\uffff' : getCharValue(i));
+ return (c < 128 // ASCII Character
+ ? tokenKind[c]
+ : c == '\uffff' ? Char_EOF : getNonAsciiKind(c));
+
+ }
+
+ private final static int getNonAsciiKind(char c) {
+ if (c == '\u00AB') {
+ return Char_LG;
+ }
+ if (c == '\u00BB') {
+ return Char_RG;
+ }
+ if (c == '\u00b4') {
+ return Char_Acute; // For OCLLexer
+ }
+ return Char_AfterASCII;
+
+ }
public ErrorLocationInfo[] getErrors() {
return errors.toArray(new ErrorLocationInfo[errors.size()]);
@@ -298,7 +324,8 @@
public void reportError(int errorCode, String locationInfo, String tokenText) {
try {
Matcher m = Pattern.compile("(?:[^:]+::)*[^:]+:(\\d+):(\\d+):(\\d+):(\\d+):.*").matcher(locationInfo);
- boolean t = m.matches(); // ignore return value, rely on exception if anything wrong
+ boolean t = m.matches(); // ignore return value, rely on exception
+ // if anything wrong
assert t;
final int leftTokenLine = Integer.parseInt(m.group(1));
final int leftTokenColumn = Integer.parseInt(m.group(2));
@@ -318,7 +345,7 @@
final int leftTokenColumn = getColumn(leftToken);
final int rightTokenLine = getEndLine(rightToken);
final int rightTokenColumn = getEndColumn(rightToken);
- final String msg = tokenText + errorMsgText[errorCode] + (locationInfo != null && locationInfo.length() > 0 ? '(' + locationInfo + ')' : "");
+ final String msg = tokenText + errorMsgText[errorCode] + (locationInfo != null && locationInfo.length() > 0 ? '(' + locationInfo + ')' : "");
final int startOffset = leftToken;
final int endOffset = rightToken;
errors.add(new ErrorLocationInfo(msg, leftTokenLine, leftTokenColumn, rightTokenLine, rightTokenColumn, startOffset, endOffset));
@@ -328,449 +355,448 @@
*/
- public void ruleAction( int ruleNumber) {
- switch(ruleNumber) {
-
- //
- // Rule 1: Token ::= Identifier
- //
- case 1: {
- checkForKeyWord();
- break;
- }
-
- //
- // Rule 2: Token ::= EscapedSQ
- //
- case 2: {
- makeToken(TK_STRING_LITERAL);
- break;
- }
-
- //
- // Rule 3: Token ::= SingleQuote SLNotSQ SingleQuote
- //
- case 3: {
- makeToken(TK_STRING_LITERAL);
- break;
- }
-
- //
- // Rule 4: Token ::= Acute SLNotSQOpt Acute
- //
- case 4: {
- makeToken(TK_STRING_LITERAL);
- break;
- }
-
- //
- // Rule 5: Token ::= BackQuote SLNotSQOpt Acute
- //
- case 5: {
- makeToken(TK_STRING_LITERAL);
- break;
- }
-
- //
- // Rule 6: Token ::= IntegerLiteral
- //
- case 6:
- break;
-
- //
- // Rule 7: Token ::= IntegerLiteral DotToken
- //
- case 7:
- break;
-
- //
- // Rule 8: Token ::= IntegerLiteral DotDotToken
- //
- case 8:
- break;
-
- //
- // Rule 9: Token ::= RealLiteral
- //
- case 9: {
- makeToken(TK_REAL_LITERAL);
- break;
- }
-
- //
- // Rule 10: Token ::= SLC
- //
- case 10: {
- makeComment(TK_SINGLE_LINE_COMMENT);
- break;
- }
-
- //
- // Rule 11: Token ::= / * Inside Stars /
- //
- case 11: {
- makeComment(TK_MULTI_LINE_COMMENT);
- break;
- }
-
- //
- // Rule 12: Token ::= WS
- //
- case 12: {
- skipToken();
- break;
- }
-
- //
- // Rule 13: Token ::= +
- //
- case 13: {
- makeToken(TK_PLUS);
- break;
- }
-
- //
- // Rule 14: Token ::= -
- //
- case 14: {
- makeToken(TK_MINUS);
- break;
- }
-
- //
- // Rule 15: Token ::= *
- //
- case 15: {
- makeToken(TK_MULTIPLY);
- break;
- }
-
- //
- // Rule 16: Token ::= /
- //
- case 16: {
- makeToken(TK_DIVIDE);
- break;
- }
-
- //
- // Rule 17: Token ::= (
- //
- case 17: {
- makeToken(TK_LPAREN);
- break;
- }
-
- //
- // Rule 18: Token ::= )
- //
- case 18: {
- makeToken(TK_RPAREN);
- break;
- }
-
- //
- // Rule 19: Token ::= >
- //
- case 19: {
- makeToken(TK_GREATER);
- break;
- }
-
- //
- // Rule 20: Token ::= <
- //
- case 20: {
- makeToken(TK_LESS);
- break;
- }
-
- //
- // Rule 21: Token ::= =
- //
- case 21: {
- makeToken(TK_EQUAL);
- break;
- }
-
- //
- // Rule 22: Token ::= > =
- //
- case 22: {
- makeToken(TK_GREATER_EQUAL);
- break;
- }
-
- //
- // Rule 23: Token ::= < =
- //
- case 23: {
- makeToken(TK_LESS_EQUAL);
- break;
- }
-
- //
- // Rule 24: Token ::= < >
- //
- case 24: {
- makeToken(TK_NOT_EQUAL);
- break;
- }
-
- //
- // Rule 25: Token ::= [
- //
- case 25: {
- makeToken(TK_LBRACKET);
- break;
- }
-
- //
- // Rule 26: Token ::= ]
- //
- case 26: {
- makeToken(TK_RBRACKET);
- break;
- }
-
- //
- // Rule 27: Token ::= {
- //
- case 27: {
- makeToken(TK_LBRACE);
- break;
- }
-
- //
- // Rule 28: Token ::= }
- //
- case 28: {
- makeToken(TK_RBRACE);
- break;
- }
-
- //
- // Rule 29: Token ::= - >
- //
- case 29: {
- makeToken(TK_ARROW);
- break;
- }
-
- //
- // Rule 30: Token ::= |
- //
- case 30: {
- makeToken(TK_BAR);
- break;
- }
-
- //
- // Rule 31: Token ::= ,
- //
- case 31: {
- makeToken(TK_COMMA);
- break;
- }
-
- //
- // Rule 32: Token ::= :
- //
- case 32: {
- makeToken(TK_COLON);
- break;
- }
-
- //
- // Rule 33: Token ::= : :
- //
- case 33: {
- makeToken(TK_COLONCOLON);
- break;
- }
-
- //
- // Rule 34: Token ::= ;
- //
- case 34: {
- makeToken(TK_SEMICOLON);
- break;
- }
-
- //
- // Rule 35: Token ::= DotToken
- //
- case 35:
- break;
-
- //
- // Rule 36: DotToken ::= .
- //
- case 36: {
- makeToken(TK_DOT);
- break;
- }
-
- //
- // Rule 37: Token ::= DotDotToken
- //
- case 37:
- break;
-
- //
- // Rule 38: DotDotToken ::= . .
- //
- case 38: {
- makeToken(TK_DOTDOT);
- break;
- }
-
- //
- // Rule 39: IntegerLiteral ::= Integer
- //
- case 39: {
- makeToken(TK_INTEGER_LITERAL);
- break;
- }
-
- //
- // Rule 264: Token ::= @
- //
- case 264: {
- makeToken(TK_AT);
- break;
- }
-
- //
- // Rule 265: Token ::= ^
- //
- case 265: {
- makeToken(TK_CARET);
- break;
- }
-
- //
- // Rule 266: Token ::= ^ ^
- //
- case 266: {
- makeToken(TK_CARETCARET);
- break;
- }
-
- //
- // Rule 267: Token ::= ?
- //
- case 267: {
- makeToken(TK_QUESTIONMARK);
- break;
- }
-
- //
- // Rule 268: Token ::= : =
- //
- case 268: {
- makeToken(TK_RESET_ASSIGN);
- break;
- }
-
- //
- // Rule 269: Token ::= + =
- //
- case 269: {
- makeToken(TK_ADD_ASSIGN);
- break;
- }
-
- //
- // Rule 270: Token ::= !
- //
- case 270: {
- makeToken(TK_EXCLAMATION_MARK);
- break;
- }
-
- //
- // Rule 271: Token ::= ! =
- //
- case 271: {
- makeToken(TK_NOT_EQUAL_EXEQ);
- break;
- }
-
- //
- // Rule 272: Token ::= < <
- //
- case 272: {
- makeToken(TK_STEREOTYPE_QUALIFIER_OPEN);
- break;
- }
-
- //
- // Rule 273: Token ::= > >
- //
- case 273: {
- makeToken(TK_STEREOTYPE_QUALIFIER_CLOSE);
- break;
- }
-
- //
- // Rule 274: Token ::= . . .
- //
- case 274: {
- makeToken(TK_MULTIPLICITY_RANGE);
- break;
- }
-
- //
- // Rule 275: Token ::= ~
- //
- case 275: {
- makeToken(TK_TILDE_SIGN);
- break;
- }
-
- //
- // Rule 276: Token ::= : : =
- //
- case 276: {
- makeToken(TK_COLONCOLONEQUAL);
- break;
- }
-
- //
- // Rule 284: Token ::= DoubleQuote SLNotDQOpt DoubleQuote
- //
- case 284: {
- makeToken(TK_STRING_LITERAL);
- break;
- }
-
- //
- // Rule 288: Token ::= LG
- //
- case 288: {
- makeToken(TK_LG);
- break;
- }
- //
- // Rule 289: Token ::= RG textAny lgOpt
- //
- case 289: {
- makeToken(TK_TEXT);
- break;
- }
- //
- // Rule 299: Token ::= R E M RG commentAny lgPlus E N D R E M
- //
- case 299: {
- skipToken();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
+ public void ruleAction(int ruleNumber) {
+ switch (ruleNumber) {
+ //
+ // Rule 1: Token ::= Identifier
+ //
+ case 1: {
+ checkForKeyWord();
+ break;
+ }
+
+ //
+ // Rule 2: Token ::= EscapedSQ
+ //
+ case 2: {
+ makeToken(TK_STRING_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 3: Token ::= SingleQuote SLNotSQ SingleQuote
+ //
+ case 3: {
+ makeToken(TK_STRING_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 4: Token ::= Acute SLNotSQOpt Acute
+ //
+ case 4: {
+ makeToken(TK_STRING_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 5: Token ::= BackQuote SLNotSQOpt Acute
+ //
+ case 5: {
+ makeToken(TK_STRING_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 6: Token ::= IntegerLiteral
+ //
+ case 6:
+ break;
+
+ //
+ // Rule 7: Token ::= IntegerLiteral DotToken
+ //
+ case 7:
+ break;
+
+ //
+ // Rule 8: Token ::= IntegerLiteral DotDotToken
+ //
+ case 8:
+ break;
+
+ //
+ // Rule 9: Token ::= RealLiteral
+ //
+ case 9: {
+ makeToken(TK_REAL_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 10: Token ::= SLC
+ //
+ case 10: {
+ makeComment(TK_SINGLE_LINE_COMMENT);
+ break;
+ }
+
+ //
+ // Rule 11: Token ::= / * Inside Stars /
+ //
+ case 11: {
+ makeComment(TK_MULTI_LINE_COMMENT);
+ break;
+ }
+
+ //
+ // Rule 12: Token ::= WS
+ //
+ case 12: {
+ skipToken();
+ break;
+ }
+
+ //
+ // Rule 13: Token ::= +
+ //
+ case 13: {
+ makeToken(TK_PLUS);
+ break;
+ }
+
+ //
+ // Rule 14: Token ::= -
+ //
+ case 14: {
+ makeToken(TK_MINUS);
+ break;
+ }
+
+ //
+ // Rule 15: Token ::= *
+ //
+ case 15: {
+ makeToken(TK_MULTIPLY);
+ break;
+ }
+
+ //
+ // Rule 16: Token ::= /
+ //
+ case 16: {
+ makeToken(TK_DIVIDE);
+ break;
+ }
+
+ //
+ // Rule 17: Token ::= (
+ //
+ case 17: {
+ makeToken(TK_LPAREN);
+ break;
+ }
+
+ //
+ // Rule 18: Token ::= )
+ //
+ case 18: {
+ makeToken(TK_RPAREN);
+ break;
+ }
+
+ //
+ // Rule 19: Token ::= >
+ //
+ case 19: {
+ makeToken(TK_GREATER);
+ break;
+ }
+
+ //
+ // Rule 20: Token ::= <
+ //
+ case 20: {
+ makeToken(TK_LESS);
+ break;
+ }
+
+ //
+ // Rule 21: Token ::= =
+ //
+ case 21: {
+ makeToken(TK_EQUAL);
+ break;
+ }
+
+ //
+ // Rule 22: Token ::= > =
+ //
+ case 22: {
+ makeToken(TK_GREATER_EQUAL);
+ break;
+ }
+
+ //
+ // Rule 23: Token ::= < =
+ //
+ case 23: {
+ makeToken(TK_LESS_EQUAL);
+ break;
+ }
+
+ //
+ // Rule 24: Token ::= < >
+ //
+ case 24: {
+ makeToken(TK_NOT_EQUAL);
+ break;
+ }
+
+ //
+ // Rule 25: Token ::= [
+ //
+ case 25: {
+ makeToken(TK_LBRACKET);
+ break;
+ }
+
+ //
+ // Rule 26: Token ::= ]
+ //
+ case 26: {
+ makeToken(TK_RBRACKET);
+ break;
+ }
+
+ //
+ // Rule 27: Token ::= {
+ //
+ case 27: {
+ makeToken(TK_LBRACE);
+ break;
+ }
+
+ //
+ // Rule 28: Token ::= }
+ //
+ case 28: {
+ makeToken(TK_RBRACE);
+ break;
+ }
+
+ //
+ // Rule 29: Token ::= - >
+ //
+ case 29: {
+ makeToken(TK_ARROW);
+ break;
+ }
+
+ //
+ // Rule 30: Token ::= |
+ //
+ case 30: {
+ makeToken(TK_BAR);
+ break;
+ }
+
+ //
+ // Rule 31: Token ::= ,
+ //
+ case 31: {
+ makeToken(TK_COMMA);
+ break;
+ }
+
+ //
+ // Rule 32: Token ::= :
+ //
+ case 32: {
+ makeToken(TK_COLON);
+ break;
+ }
+
+ //
+ // Rule 33: Token ::= : :
+ //
+ case 33: {
+ makeToken(TK_COLONCOLON);
+ break;
+ }
+
+ //
+ // Rule 34: Token ::= ;
+ //
+ case 34: {
+ makeToken(TK_SEMICOLON);
+ break;
+ }
+
+ //
+ // Rule 35: Token ::= DotToken
+ //
+ case 35:
+ break;
+
+ //
+ // Rule 36: DotToken ::= .
+ //
+ case 36: {
+ makeToken(TK_DOT);
+ break;
+ }
+
+ //
+ // Rule 37: Token ::= DotDotToken
+ //
+ case 37:
+ break;
+
+ //
+ // Rule 38: DotDotToken ::= . .
+ //
+ case 38: {
+ makeToken(TK_DOTDOT);
+ break;
+ }
+
+ //
+ // Rule 39: IntegerLiteral ::= Integer
+ //
+ case 39: {
+ makeToken(TK_INTEGER_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 264: Token ::= @
+ //
+ case 264: {
+ makeToken(TK_AT);
+ break;
+ }
+
+ //
+ // Rule 265: Token ::= ^
+ //
+ case 265: {
+ makeToken(TK_CARET);
+ break;
+ }
+
+ //
+ // Rule 266: Token ::= ^ ^
+ //
+ case 266: {
+ makeToken(TK_CARETCARET);
+ break;
+ }
+
+ //
+ // Rule 267: Token ::= ?
+ //
+ case 267: {
+ makeToken(TK_QUESTIONMARK);
+ break;
+ }
+
+ //
+ // Rule 268: Token ::= : =
+ //
+ case 268: {
+ makeToken(TK_RESET_ASSIGN);
+ break;
+ }
+
+ //
+ // Rule 269: Token ::= + =
+ //
+ case 269: {
+ makeToken(TK_ADD_ASSIGN);
+ break;
+ }
+
+ //
+ // Rule 270: Token ::= !
+ //
+ case 270: {
+ makeToken(TK_EXCLAMATION_MARK);
+ break;
+ }
+
+ //
+ // Rule 271: Token ::= ! =
+ //
+ case 271: {
+ makeToken(TK_NOT_EQUAL_EXEQ);
+ break;
+ }
+
+ //
+ // Rule 272: Token ::= < <
+ //
+ case 272: {
+ makeToken(TK_STEREOTYPE_QUALIFIER_OPEN);
+ break;
+ }
+
+ //
+ // Rule 273: Token ::= > >
+ //
+ case 273: {
+ makeToken(TK_STEREOTYPE_QUALIFIER_CLOSE);
+ break;
+ }
+
+ //
+ // Rule 274: Token ::= . . .
+ //
+ case 274: {
+ makeToken(TK_MULTIPLICITY_RANGE);
+ break;
+ }
+
+ //
+ // Rule 275: Token ::= ~
+ //
+ case 275: {
+ makeToken(TK_TILDE_SIGN);
+ break;
+ }
+
+ //
+ // Rule 276: Token ::= : : =
+ //
+ case 276: {
+ makeToken(TK_COLONCOLONEQUAL);
+ break;
+ }
+
+ //
+ // Rule 284: Token ::= DoubleQuote SLNotDQOpt DoubleQuote
+ //
+ case 284: {
+ makeToken(TK_STRING_LITERAL);
+ break;
+ }
+
+ //
+ // Rule 288: Token ::= LG
+ //
+ case 288: {
+ makeToken(TK_LG);
+ break;
+ }
+ //
+ // Rule 289: Token ::= RG textAny lgOpt
+ //
+ case 289: {
+ makeToken(TK_TEXT);
+ break;
+ }
+ //
+ // Rule 299: Token ::= R E M RG commentAny lgPlus E N D R E M
+ //
+ case 299: {
+ skipToken();
+ break;
+ }
+
+ default:
+ break;
+ }
+ return;
+ }
+}
diff --git a/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandParser.java b/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandParser.java
index 3060acc..2cb9843 100644
--- a/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandParser.java
+++ b/plugins/org.eclipse.gmf.xpand/src/org/eclipse/gmf/internal/xpand/parser/XpandParser.java
@@ -12,191 +12,233 @@
*/
package org.eclipse.gmf.internal.xpand.parser;
-import lpg.lpgjavaruntime.*;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.eclipse.gmf.internal.xpand.Activator;
-import org.eclipse.gmf.internal.xpand.util.ParserException.ErrorLocationInfo;
-
-import org.eclipse.gmf.internal.xpand.expression.ast.Identifier;
-import org.eclipse.gmf.internal.xpand.ast.*;
-import org.eclipse.ocl.cst.*;
-import java.util.Collections;
-
-import org.eclipse.m2m.internal.qvt.oml.cst.SimpleSignatureCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.ParameterDeclarationCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.DirectionKindEnum;
-import org.eclipse.m2m.internal.qvt.oml.cst.DirectionKindCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.TypeSpecCS;
-
-import org.eclipse.ocl.util.OCLStandardLibraryUtil;
-import org.eclipse.ocl.utilities.PredefinedType;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.ocl.cst.CSTNode;
-import org.eclipse.ocl.cst.CallExpCS;
-import org.eclipse.ocl.cst.CollectionTypeCS;
-import org.eclipse.ocl.cst.CollectionTypeIdentifierEnum;
-import org.eclipse.ocl.cst.IsMarkedPreCS;
-import org.eclipse.ocl.cst.OCLExpressionCS;
-import org.eclipse.ocl.cst.OperationCallExpCS;
-import org.eclipse.ocl.cst.PathNameCS;
-import org.eclipse.ocl.cst.SimpleNameCS;
-import org.eclipse.ocl.cst.SimpleTypeEnum;
-import org.eclipse.ocl.cst.StringLiteralExpCS;
-import org.eclipse.ocl.cst.TypeCS;
-import org.eclipse.ocl.cst.VariableCS;
-
import lpg.lpgjavaruntime.BadParseException;
import lpg.lpgjavaruntime.BadParseSymFileException;
import lpg.lpgjavaruntime.DeterministicParser;
import lpg.lpgjavaruntime.DiagnoseParser;
+import lpg.lpgjavaruntime.ErrorToken;
import lpg.lpgjavaruntime.IToken;
+import lpg.lpgjavaruntime.LexStream;
import lpg.lpgjavaruntime.Monitor;
import lpg.lpgjavaruntime.NotDeterministicParseTableException;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.RuleAction;
-
-
-import org.eclipse.ocl.ParserException;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.BacktrackingParser;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
import lpg.lpgjavaruntime.NullExportedSymbolsException;
import lpg.lpgjavaruntime.NullTerminalSymbolsException;
+import lpg.lpgjavaruntime.ParseErrorCodes;
+import lpg.lpgjavaruntime.ParseTable;
+import lpg.lpgjavaruntime.PrsStream;
+import lpg.lpgjavaruntime.RuleAction;
+import lpg.lpgjavaruntime.TokenStream;
import lpg.lpgjavaruntime.UndefinedEofSymbolException;
import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-import org.eclipse.m2m.internal.qvt.oml.cst.AssertExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.AssignStatementCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.LogExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.BlockExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.ReturnExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.SwitchAltExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.temp.ScopedNameCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.temp.TempFactory;
-import org.eclipse.m2m.internal.qvt.oml.cst.ForExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.ImperativeIterateExpCS;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.internal.xpand.Activator;
+import org.eclipse.gmf.internal.xpand.ast.Advice;
+import org.eclipse.gmf.internal.xpand.ast.Definition;
+import org.eclipse.gmf.internal.xpand.ast.IfStatement;
+import org.eclipse.gmf.internal.xpand.ast.Template;
+import org.eclipse.gmf.internal.xpand.expression.ast.Identifier;
+import org.eclipse.gmf.internal.xpand.util.ParserException.ErrorLocationInfo;
import org.eclipse.m2m.internal.qvt.oml.cst.CompleteSignatureCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.LibraryImportCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.ListTypeCS;
import org.eclipse.m2m.internal.qvt.oml.cst.DictLiteralExpCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.DictionaryTypeCS;
import org.eclipse.m2m.internal.qvt.oml.cst.DictLiteralPartCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.StatementCS;
-import org.eclipse.m2m.internal.qvt.oml.cst.ListLiteralExpCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.DictionaryTypeCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.DirectionKindCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.DirectionKindEnum;
+import org.eclipse.m2m.internal.qvt.oml.cst.ImperativeIterateExpCS;
import org.eclipse.m2m.internal.qvt.oml.cst.ImperativeOperationCallExpCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.LibraryImportCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.ListLiteralExpCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.ListTypeCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.ParameterDeclarationCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.SimpleSignatureCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.StatementCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.TypeSpecCS;
+import org.eclipse.m2m.internal.qvt.oml.cst.temp.TempFactory;
+import org.eclipse.ocl.cst.BooleanLiteralExpCS;
+import org.eclipse.ocl.cst.CSTFactory;
+import org.eclipse.ocl.cst.CSTNode;
+import org.eclipse.ocl.cst.CallExpCS;
+import org.eclipse.ocl.cst.CollectionLiteralExpCS;
+import org.eclipse.ocl.cst.CollectionLiteralPartCS;
+import org.eclipse.ocl.cst.CollectionRangeCS;
+import org.eclipse.ocl.cst.CollectionTypeCS;
+import org.eclipse.ocl.cst.CollectionTypeIdentifierEnum;
+import org.eclipse.ocl.cst.DotOrArrowEnum;
+import org.eclipse.ocl.cst.FeatureCallExpCS;
+import org.eclipse.ocl.cst.IfExpCS;
+import org.eclipse.ocl.cst.IntegerLiteralExpCS;
+import org.eclipse.ocl.cst.InvalidLiteralExpCS;
+import org.eclipse.ocl.cst.IsMarkedPreCS;
+import org.eclipse.ocl.cst.IterateExpCS;
+import org.eclipse.ocl.cst.IteratorExpCS;
+import org.eclipse.ocl.cst.LetExpCS;
+import org.eclipse.ocl.cst.LiteralExpCS;
+import org.eclipse.ocl.cst.NullLiteralExpCS;
+import org.eclipse.ocl.cst.OCLExpressionCS;
+import org.eclipse.ocl.cst.OperationCallExpCS;
+import org.eclipse.ocl.cst.PathNameCS;
+import org.eclipse.ocl.cst.PrimitiveTypeCS;
+import org.eclipse.ocl.cst.RealLiteralExpCS;
+import org.eclipse.ocl.cst.SimpleNameCS;
+import org.eclipse.ocl.cst.SimpleTypeEnum;
+import org.eclipse.ocl.cst.StringLiteralExpCS;
+import org.eclipse.ocl.cst.TupleLiteralExpCS;
+import org.eclipse.ocl.cst.TupleTypeCS;
+import org.eclipse.ocl.cst.TypeCS;
+import org.eclipse.ocl.cst.UnlimitedNaturalLiteralExpCS;
+import org.eclipse.ocl.cst.VariableCS;
+import org.eclipse.ocl.cst.VariableExpCS;
+import org.eclipse.ocl.util.OCLStandardLibraryUtil;
+import org.eclipse.ocl.utilities.PredefinedType;
public class XpandParser extends PrsStream implements RuleAction {
- private static ParseTable prs = new XpandParserprs();
- private DeterministicParser dtParser;
- public DeterministicParser getParser() { return dtParser; }
- private void setResult(Object object) { dtParser.setSym1(object); }
- public Object getRhsSym(int i) { return dtParser.getSym(i); }
+ private static ParseTable prs = new XpandParserprs();
- public int getRhsTokenIndex(int i) { return dtParser.getToken(i); }
- public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); }
-
- public int getRhsFirstTokenIndex(int i) { return dtParser.getFirstToken(i); }
- public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); }
+ private DeterministicParser dtParser;
- public int getRhsLastTokenIndex(int i) { return dtParser.getLastToken(i); }
- public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); }
+ public DeterministicParser getParser() {
+ return dtParser;
+ }
- public int getLeftSpan() { return dtParser.getFirstToken(); }
- public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); }
+ private void setResult(Object object) {
+ dtParser.setSym1(object);
+ }
- public int getRightSpan() { return dtParser.getLastToken(); }
- public IToken getRightIToken() { return super.getIToken(getRightSpan()); }
+ public Object getRhsSym(int i) {
+ return dtParser.getSym(i);
+ }
- public int getRhsErrorTokenIndex(int i) {
- int index = dtParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
- public ErrorToken getRhsErrorIToken(int i) {
- int index = dtParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
+ public int getRhsTokenIndex(int i) {
+ return dtParser.getToken(i);
+ }
- public XpandParser(LexStream lexStream) {
- super(lexStream);
- xpandFactory = new XpandFactory(lexStream.getFileName());
+ public IToken getRhsIToken(int i) {
+ return super.getIToken(getRhsTokenIndex(i));
+ }
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), XpandParserprs.EOFT_SYMBOL);
- }
- catch(NullExportedSymbolsException e) {
- }
- catch(NullTerminalSymbolsException e) {
- }
- catch(UnimplementedTerminalsException e) {
- java.util.ArrayList<?> unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++)
- {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + XpandParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- }
- catch(UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException
- ("The Lexer does not implement the Eof symbol " +
- XpandParsersym.orderedTerminalSymbols[XpandParserprs.EOFT_SYMBOL]));
- }
- }
+ public int getRhsFirstTokenIndex(int i) {
+ return dtParser.getFirstToken(i);
+ }
- public String[] orderedTerminalSymbols() { return XpandParsersym.orderedTerminalSymbols; }
- public String getTokenKindName(int kind) { return XpandParsersym.orderedTerminalSymbols[kind]; }
- public int getEOFTokenKind() { return XpandParserprs.EOFT_SYMBOL; }
- public PrsStream getParseStream() { return (PrsStream) this; }
+ public IToken getRhsFirstIToken(int i) {
+ return super.getIToken(getRhsFirstTokenIndex(i));
+ }
- public Template parser() {
- return parser(null, 0);
- }
-
- public Template parser(Monitor monitor) {
- return parser(monitor, 0);
- }
-
- public Template parser(int error_repair_count) {
- return parser(null, error_repair_count);
- }
-
- public Template parser(Monitor monitor, int error_repair_count) {
- try {
- resetErrors();
- dtParser = new DeterministicParser(monitor, (TokenStream)this, prs, (RuleAction)this);
- }
- catch (NotDeterministicParseTableException e) {
- throw new Error(new NotDeterministicParseTableException
- ("Regenerate XpandParserprs.java with -NOBACKTRACK option"));
- }
- catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XpandParsersym.java. Regenerate XpandParserprs.java"));
- }
+ public int getRhsLastTokenIndex(int i) {
+ return dtParser.getLastToken(i);
+ }
- try {
- return (Template) dtParser.parse();
- }
- catch (BadParseException e) {
- reset(e.error_token); // point to error token
+ public IToken getRhsLastIToken(int i) {
+ return super.getIToken(getRhsLastTokenIndex(i));
+ }
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
+ public int getLeftSpan() {
+ return dtParser.getFirstToken();
+ }
- return null;
- }
+ public IToken getLeftIToken() {
+ return super.getIToken(getLeftSpan());
+ }
+ public int getRightSpan() {
+ return dtParser.getLastToken();
+ }
+
+ public IToken getRightIToken() {
+ return super.getIToken(getRightSpan());
+ }
+
+ public int getRhsErrorTokenIndex(int i) {
+ int index = dtParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (err instanceof ErrorToken ? index : 0);
+ }
+
+ public ErrorToken getRhsErrorIToken(int i) {
+ int index = dtParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (ErrorToken) (err instanceof ErrorToken ? err : null);
+ }
+
+ public XpandParser(LexStream lexStream) {
+ super(lexStream);
+ xpandFactory = new XpandFactory(lexStream.getFileName());
+
+ try {
+ super.remapTerminalSymbols(orderedTerminalSymbols(), XpandParserprs.EOFT_SYMBOL);
+ } catch (NullExportedSymbolsException e) {
+ } catch (NullTerminalSymbolsException e) {
+ } catch (UnimplementedTerminalsException e) {
+ java.util.ArrayList<?> unimplemented_symbols = e.getSymbols();
+ System.out.println("The Lexer will not scan the following token(s):");
+ for (int i = 0; i < unimplemented_symbols.size(); i++) {
+ Integer id = (Integer) unimplemented_symbols.get(i);
+ System.out.println(" " + XpandParsersym.orderedTerminalSymbols[id.intValue()]);
+ }
+ System.out.println();
+ } catch (UndefinedEofSymbolException e) {
+ throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol " + XpandParsersym.orderedTerminalSymbols[XpandParserprs.EOFT_SYMBOL]));
+ }
+ }
+
+ public String[] orderedTerminalSymbols() {
+ return XpandParsersym.orderedTerminalSymbols;
+ }
+
+ public String getTokenKindName(int kind) {
+ return XpandParsersym.orderedTerminalSymbols[kind];
+ }
+
+ public int getEOFTokenKind() {
+ return XpandParserprs.EOFT_SYMBOL;
+ }
+
+ public PrsStream getParseStream() {
+ return (PrsStream) this;
+ }
+
+ public Template parser() {
+ return parser(null, 0);
+ }
+
+ public Template parser(Monitor monitor) {
+ return parser(monitor, 0);
+ }
+
+ public Template parser(int error_repair_count) {
+ return parser(null, error_repair_count);
+ }
+
+ public Template parser(Monitor monitor, int error_repair_count) {
+ try {
+ resetErrors();
+ dtParser = new DeterministicParser(monitor, (TokenStream) this, prs, (RuleAction) this);
+ } catch (NotDeterministicParseTableException e) {
+ throw new Error(new NotDeterministicParseTableException("Regenerate XpandParserprs.java with -NOBACKTRACK option"));
+ } catch (BadParseSymFileException e) {
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XpandParsersym.java. Regenerate XpandParserprs.java"));
+ }
+
+ try {
+ return (Template) dtParser.parse();
+ } catch (BadParseException e) {
+ reset(e.error_token); // point to error token
+
+ DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
+ diagnoseParser.diagnose(e.error_token);
+ }
+
+ return null;
+ }
public ErrorLocationInfo[] getErrors() {
return errors.toArray(new ErrorLocationInfo[errors.size()]);
@@ -225,7 +267,8 @@
public void reportError(int errorCode, String locationInfo, String tokenText) {
try {
Matcher m = Pattern.compile("(?:[^:]+::)*[^:]+:(\\d+):(\\d+):(\\d+):(\\d+):.*").matcher(locationInfo);
- boolean t = m.matches(); // ignore return value, rely on exception if anything wrong
+ boolean t = m.matches(); // ignore return value, rely on exception
+ // if anything wrong
assert t;
final int leftTokenLine = Integer.parseInt(m.group(1));
final int leftTokenColumn = Integer.parseInt(m.group(2));
@@ -245,7 +288,7 @@
final int leftTokenColumn = getColumn(leftToken);
final int rightTokenLine = getEndLine(rightToken);
final int rightTokenColumn = getEndColumn(rightToken);
- final String msg = tokenText + errorMsgText[errorCode] + (locationInfo != null && locationInfo.length() > 0 ? '(' + locationInfo + ')' : "");
+ final String msg = tokenText + errorMsgText[errorCode] + (locationInfo != null && locationInfo.length() > 0 ? '(' + locationInfo + ')' : "");
final int startOffset = getStartOffset(leftToken);
final int endOffset = getEndOffset(rightToken);
errors.add(new ErrorLocationInfo(msg, leftTokenLine, leftTokenColumn, rightTokenLine, rightTokenColumn, startOffset, endOffset));
@@ -253,25 +296,21 @@
private final XpandFactory xpandFactory;
-
-
/**
*
* QVT Operational specific part
- *
+ *
*/
-
-
+
@SuppressWarnings("unchecked")
- private static final EList ourEmptyEList = new BasicEList.UnmodifiableEList(0, new Object[0]);
-
-
+ private static final EList ourEmptyEList = new BasicEList.UnmodifiableEList(0, new Object[0]);
+
private void diagnozeErrorToken(int token_index) {
IToken token = getIToken(token_index);
if (token instanceof lpg.lpgjavaruntime.ErrorToken) {
token = ((lpg.lpgjavaruntime.ErrorToken) token).getErrorToken();
}
-
+
reportError(lpg.lpgjavaruntime.ParseErrorCodes.MISPLACED_CODE, "", token.getTokenIndex(), token.getTokenIndex(), //$NON-NLS-1$
"'" + token.toString() + "'"); //$NON-NLS-1$ //$NON-NLS-2$
reset(token.getTokenIndex()); // point to error token
@@ -280,3043 +319,2816 @@
dtParser.setSym1(null);
}
-private ImperativeIterateExpCS createImperativeIterateExpCS(
- SimpleNameCS simpleNameCS,
- EList<VariableCS> iterators,
- VariableCS target,
- OCLExpressionCS body,
- OCLExpressionCS condition) {
- ImperativeIterateExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createImperativeIterateExpCS();
- result.setSimpleNameCS(simpleNameCS);
- if (iterators.size() > 0) {
- result.setVariable1(iterators.get(0));
- if (iterators.size() > 1) {
- result.setVariable2(iterators.get(1));
- }
- }
- if (target != null) {
- result.setTarget(target);
- }
- result.setBody(body);
- result.setCondition(condition);
- return result;
-}
-
-protected final CSTNode createCompleteSignatureCS(SimpleSignatureCS simpleSignatureCS, EList<ParameterDeclarationCS> resultList) {
- CompleteSignatureCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createCompleteSignatureCS();
- result.setSimpleSignature(simpleSignatureCS);
- result.getResultParams().addAll(resultList);
- return result;
-}
-
-protected final SimpleSignatureCS createSimpleSignatureCS(EList<ParameterDeclarationCS> paramsCS) {
- SimpleSignatureCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createSimpleSignatureCS();
- result.getParams().addAll(paramsCS);
- return result;
-}
-
-protected final ParameterDeclarationCS createParameterDeclarationCS(DirectionKindCS sym, IToken tokenText, TypeSpecCS typeSpecCS) {
- ParameterDeclarationCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createParameterDeclarationCS();
- SimpleNameCS nameCS = null;
- if (tokenText != null) {
- nameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, tokenText.toString());
- setOffsets(nameCS, tokenText);
- } else {
- //nameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, ""); //$NON-NLS-1$
- }
- result.setSimpleNameCS(nameCS);
- result.setTypeSpecCS(typeSpecCS);
- if (sym != null) {
- result.setDirectionKind(sym.getDirectionKind());
- }
- return result;
-}
-
-protected final CSTNode createLibraryImportCS(PathNameCS sym) {
- LibraryImportCS imp = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createLibraryImportCS();
- imp.setPathNameCS(sym);
- return imp;
-}
-
-protected final CSTNode createDirectionKindCS(DirectionKindEnum kind) {
- DirectionKindCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDirectionKindCS();
- result.setDirectionKind(kind);
- return result;
-}
-
-protected final TypeSpecCS createTypeSpecCS(TypeCS typeCS, IToken extentLocation) {
- TypeSpecCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createTypeSpecCS();
- result.setTypeCS(typeCS);
- setOffsets(result, typeCS);
- if (extentLocation != null) {
- SimpleNameCS nameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, extentLocation.toString());
- setOffsets(nameCS, extentLocation);
- result.setSimpleNameCS(nameCS);
- result.setEndOffset(extentLocation.getEndOffset());
- }
- return result;
-}
-
-private ListTypeCS createListTypeCS(TypeCS typeCS) {
- ListTypeCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createListTypeCS();
- result.setTypeCS(typeCS);
- return result;
-}
-
-private DictLiteralExpCS createDictLiteralExpCS(EList<DictLiteralPartCS> parts) {
- DictLiteralExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDictLiteralExpCS();
- result.getParts().addAll(parts);
- return result;
-}
-
-private DictionaryTypeCS createDictTypeCS(TypeCS keyTypeCS, TypeCS valueTypeCS) {
- DictionaryTypeCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDictionaryTypeCS();
- result.setKey(keyTypeCS);
- result.setValue(valueTypeCS);
- return result;
-}
-
-private DictLiteralPartCS createDictLiteralPartCS(LiteralExpCS keyLiteralCS, OCLExpressionCS valueExpCS) {
- DictLiteralPartCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDictLiteralPartCS();
- result.setKey(keyLiteralCS);
- result.setValue(valueExpCS);
- return result;
-}
-
-private final StatementCS createBreakCS() {
- StatementCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createBreakExpCS();
- return result;
-}
-
-private final StatementCS createContinueCS() {
- StatementCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createContinueExpCS();
- return result;
-}
-
-private ListLiteralExpCS createListLiteralExpCS(EList<CollectionLiteralPartCS> collectionLiteralParts) {
- ListLiteralExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createListLiteralExpCS();
- result.getCollectionLiteralParts().addAll(collectionLiteralParts);
- return result;
-}
-
-private boolean isTokenOfType(IToken token, int kind) {
- return (token != null) && (token.getKind() == kind);
-}
-
-private ImperativeOperationCallExpCS createFeatureFQNOperationCallExpCS(SimpleNameCS moduleName, SimpleNameCS operationName, EList<OCLExpressionCS> arguments) {
- ImperativeOperationCallExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createImperativeOperationCallExpCS();
- return setupImperativeOperationCallExpCS(moduleName, operationName, arguments, result);
-}
-
-private OperationCallExpCS createDotOperationCallExpCS(OCLExpressionCS oclExpressionCS, PathNameCS pathNameCs, SimpleNameCS simpleNameCS, IsMarkedPreCS isMarkedPreCS, EList<OCLExpressionCS> arguments) {
- if (pathNameCs != null && pathNameCs.getSimpleNames().size() == 1) {
- ImperativeOperationCallExpCS result = createFeatureFQNOperationCallExpCS(pathNameCs.getSimpleNames().get(0), simpleNameCS, arguments);
- if (oclExpressionCS != null) {
- result.setSource(oclExpressionCS);
- result.setIsAtomic(true);
+ private ImperativeIterateExpCS createImperativeIterateExpCS(SimpleNameCS simpleNameCS, EList<VariableCS> iterators, VariableCS target, OCLExpressionCS body, OCLExpressionCS condition) {
+ ImperativeIterateExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createImperativeIterateExpCS();
+ result.setSimpleNameCS(simpleNameCS);
+ if (iterators.size() > 0) {
+ result.setVariable1(iterators.get(0));
+ if (iterators.size() > 1) {
+ result.setVariable2(iterators.get(1));
+ }
}
- result.setAccessor(oclExpressionCS != null ? DotOrArrowEnum.DOT_LITERAL : DotOrArrowEnum.NONE_LITERAL);
- if (isAtPre(isMarkedPreCS)) {
- result.setIsMarkedPreCS(isMarkedPreCS);
+ if (target != null) {
+ result.setTarget(target);
+ }
+ result.setBody(body);
+ result.setCondition(condition);
+ return result;
+ }
+
+ protected final CSTNode createCompleteSignatureCS(SimpleSignatureCS simpleSignatureCS, EList<ParameterDeclarationCS> resultList) {
+ CompleteSignatureCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createCompleteSignatureCS();
+ result.setSimpleSignature(simpleSignatureCS);
+ result.getResultParams().addAll(resultList);
+ return result;
+ }
+
+ protected final SimpleSignatureCS createSimpleSignatureCS(EList<ParameterDeclarationCS> paramsCS) {
+ SimpleSignatureCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createSimpleSignatureCS();
+ result.getParams().addAll(paramsCS);
+ return result;
+ }
+
+ protected final ParameterDeclarationCS createParameterDeclarationCS(DirectionKindCS sym, IToken tokenText, TypeSpecCS typeSpecCS) {
+ ParameterDeclarationCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createParameterDeclarationCS();
+ SimpleNameCS nameCS = null;
+ if (tokenText != null) {
+ nameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, tokenText.toString());
+ setOffsets(nameCS, tokenText);
+ } else {
+ //nameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, ""); //$NON-NLS-1$
+ }
+ result.setSimpleNameCS(nameCS);
+ result.setTypeSpecCS(typeSpecCS);
+ if (sym != null) {
+ result.setDirectionKind(sym.getDirectionKind());
}
return result;
}
- OperationCallExpCS result = createOperationCallExpCS(oclExpressionCS, DotOrArrowEnum.DOT_LITERAL, pathNameCs, simpleNameCS, isMarkedPreCS, arguments);
- if (oclExpressionCS != null) {
- result.setIsAtomic(true);
+
+ protected final CSTNode createLibraryImportCS(PathNameCS sym) {
+ LibraryImportCS imp = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createLibraryImportCS();
+ imp.setPathNameCS(sym);
+ return imp;
}
- return result;
-}
-private ImperativeOperationCallExpCS setupImperativeOperationCallExpCS(SimpleNameCS moduleName, SimpleNameCS operationName, EList<OCLExpressionCS> arguments, ImperativeOperationCallExpCS result) {
- result.setModule(moduleName);
- result.setSimpleNameCS(operationName);
- result.getArguments().addAll(arguments);
- return result;
-}
+ protected final CSTNode createDirectionKindCS(DirectionKindEnum kind) {
+ DirectionKindCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDirectionKindCS();
+ result.setDirectionKind(kind);
+ return result;
+ }
-private OperationCallExpCS createArrowOperationCallExpCS(OCLExpressionCS oclExpressionCS, SimpleNameCS simpleNameCS, IsMarkedPreCS isMarkedPreCS, EList<OCLExpressionCS> arguments) {
- return createOperationCallExpCS(oclExpressionCS, DotOrArrowEnum.ARROW_LITERAL, null, simpleNameCS, isMarkedPreCS, arguments);
-}
+ protected final TypeSpecCS createTypeSpecCS(TypeCS typeCS, IToken extentLocation) {
+ TypeSpecCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createTypeSpecCS();
+ result.setTypeCS(typeCS);
+ setOffsets(result, typeCS);
+ if (extentLocation != null) {
+ SimpleNameCS nameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, extentLocation.toString());
+ setOffsets(nameCS, extentLocation);
+ result.setSimpleNameCS(nameCS);
+ result.setEndOffset(extentLocation.getEndOffset());
+ }
+ return result;
+ }
-private OperationCallExpCS createOperationCallExpCS(OCLExpressionCS oclExpressionCS, DotOrArrowEnum dotOrArrow, PathNameCS pathNameCS, SimpleNameCS simpleNameCS, IsMarkedPreCS isMarkedPreCS, EList<OCLExpressionCS> arguments) {
- OperationCallExpCS result = CSTFactory.eINSTANCE.createOperationCallExpCS();
- result.setSource(oclExpressionCS);
- result.setAccessor(oclExpressionCS != null ? dotOrArrow : DotOrArrowEnum.NONE_LITERAL);
- result.setPathNameCS((pathNameCS != null) && (pathNameCS.getSimpleNames().size() > 0) ? pathNameCS : null);
- result.setSimpleNameCS(simpleNameCS);
- result.getArguments().addAll(arguments);
+ private ListTypeCS createListTypeCS(TypeCS typeCS) {
+ ListTypeCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createListTypeCS();
+ result.setTypeCS(typeCS);
+ return result;
+ }
- if (isAtPre(isMarkedPreCS)) {
+ private DictLiteralExpCS createDictLiteralExpCS(EList<DictLiteralPartCS> parts) {
+ DictLiteralExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDictLiteralExpCS();
+ result.getParts().addAll(parts);
+ return result;
+ }
+
+ private DictionaryTypeCS createDictTypeCS(TypeCS keyTypeCS, TypeCS valueTypeCS) {
+ DictionaryTypeCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDictionaryTypeCS();
+ result.setKey(keyTypeCS);
+ result.setValue(valueTypeCS);
+ return result;
+ }
+
+ private DictLiteralPartCS createDictLiteralPartCS(LiteralExpCS keyLiteralCS, OCLExpressionCS valueExpCS) {
+ DictLiteralPartCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createDictLiteralPartCS();
+ result.setKey(keyLiteralCS);
+ result.setValue(valueExpCS);
+ return result;
+ }
+
+ private final StatementCS createBreakCS() {
+ StatementCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createBreakExpCS();
+ return result;
+ }
+
+ private final StatementCS createContinueCS() {
+ StatementCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createContinueExpCS();
+ return result;
+ }
+
+ private ListLiteralExpCS createListLiteralExpCS(EList<CollectionLiteralPartCS> collectionLiteralParts) {
+ ListLiteralExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createListLiteralExpCS();
+ result.getCollectionLiteralParts().addAll(collectionLiteralParts);
+ return result;
+ }
+
+ private boolean isTokenOfType(IToken token, int kind) {
+ return (token != null) && (token.getKind() == kind);
+ }
+
+ private ImperativeOperationCallExpCS createFeatureFQNOperationCallExpCS(SimpleNameCS moduleName, SimpleNameCS operationName, EList<OCLExpressionCS> arguments) {
+ ImperativeOperationCallExpCS result = org.eclipse.m2m.internal.qvt.oml.cst.CSTFactory.eINSTANCE.createImperativeOperationCallExpCS();
+ return setupImperativeOperationCallExpCS(moduleName, operationName, arguments, result);
+ }
+
+ private OperationCallExpCS createDotOperationCallExpCS(OCLExpressionCS oclExpressionCS, PathNameCS pathNameCs, SimpleNameCS simpleNameCS, IsMarkedPreCS isMarkedPreCS,
+ EList<OCLExpressionCS> arguments) {
+ if (pathNameCs != null && pathNameCs.getSimpleNames().size() == 1) {
+ ImperativeOperationCallExpCS result = createFeatureFQNOperationCallExpCS(pathNameCs.getSimpleNames().get(0), simpleNameCS, arguments);
+ if (oclExpressionCS != null) {
+ result.setSource(oclExpressionCS);
+ result.setIsAtomic(true);
+ }
+ result.setAccessor(oclExpressionCS != null ? DotOrArrowEnum.DOT_LITERAL : DotOrArrowEnum.NONE_LITERAL);
+ if (isAtPre(isMarkedPreCS)) {
+ result.setIsMarkedPreCS(isMarkedPreCS);
+ }
+ return result;
+ }
+ OperationCallExpCS result = createOperationCallExpCS(oclExpressionCS, DotOrArrowEnum.DOT_LITERAL, pathNameCs, simpleNameCS, isMarkedPreCS, arguments);
+ if (oclExpressionCS != null) {
+ result.setIsAtomic(true);
+ }
+ return result;
+ }
+
+ private ImperativeOperationCallExpCS setupImperativeOperationCallExpCS(SimpleNameCS moduleName, SimpleNameCS operationName, EList<OCLExpressionCS> arguments, ImperativeOperationCallExpCS result) {
+ result.setModule(moduleName);
+ result.setSimpleNameCS(operationName);
+ result.getArguments().addAll(arguments);
+ return result;
+ }
+
+ private OperationCallExpCS createArrowOperationCallExpCS(OCLExpressionCS oclExpressionCS, SimpleNameCS simpleNameCS, IsMarkedPreCS isMarkedPreCS, EList<OCLExpressionCS> arguments) {
+ return createOperationCallExpCS(oclExpressionCS, DotOrArrowEnum.ARROW_LITERAL, null, simpleNameCS, isMarkedPreCS, arguments);
+ }
+
+ private OperationCallExpCS createOperationCallExpCS(OCLExpressionCS oclExpressionCS, DotOrArrowEnum dotOrArrow, PathNameCS pathNameCS, SimpleNameCS simpleNameCS, IsMarkedPreCS isMarkedPreCS,
+ EList<OCLExpressionCS> arguments) {
+ OperationCallExpCS result = CSTFactory.eINSTANCE.createOperationCallExpCS();
+ result.setSource(oclExpressionCS);
+ result.setAccessor(oclExpressionCS != null ? dotOrArrow : DotOrArrowEnum.NONE_LITERAL);
+ result.setPathNameCS((pathNameCS != null) && (pathNameCS.getSimpleNames().size() > 0) ? pathNameCS : null);
+ result.setSimpleNameCS(simpleNameCS);
+ result.getArguments().addAll(arguments);
+
+ if (isAtPre(isMarkedPreCS)) {
+ result.setIsMarkedPreCS(isMarkedPreCS);
+ }
+
+ return result;
+ }
+
+ private OperationCallExpCS createOperationCallExpCS(OCLExpressionCS oclExpressionCS, SimpleNameCS simpleNameCS, EList<OCLExpressionCS> arguments) {
+ return createOperationCallExpCS(oclExpressionCS, null, null, simpleNameCS, null, arguments);
+ }
+
+ private VariableExpCS createVariableExpCS(SimpleNameCS simpleNameCS, EList<OCLExpressionCS> arguments, IsMarkedPreCS isMarkedPreCS) {
+ VariableExpCS result = CSTFactory.eINSTANCE.createVariableExpCS();
+ result.setSimpleNameCS(simpleNameCS);
+ result.getArguments().addAll(arguments);
result.setIsMarkedPreCS(isMarkedPreCS);
+ return result;
}
- return result;
-}
+ private SimpleNameCS createSimpleNameCS(SimpleTypeEnum type, String value) {
+ SimpleNameCS result = CSTFactory.eINSTANCE.createSimpleNameCS();
+ result.setType(type);
+ result.setValue(unquote(value));
+ return result;
+ }
-private OperationCallExpCS createOperationCallExpCS(OCLExpressionCS oclExpressionCS, SimpleNameCS simpleNameCS, EList<OCLExpressionCS> arguments) {
- return createOperationCallExpCS(oclExpressionCS, null, null, simpleNameCS, null, arguments);
-}
+ private PrimitiveTypeCS createPrimitiveTypeCS(SimpleTypeEnum type, String value) {
+ PrimitiveTypeCS result = CSTFactory.eINSTANCE.createPrimitiveTypeCS();
+ result.setType(type);
+ result.setValue(value);
+ return result;
+ }
-private VariableExpCS createVariableExpCS(
- SimpleNameCS simpleNameCS,
- EList<OCLExpressionCS> arguments,
- IsMarkedPreCS isMarkedPreCS) {
- VariableExpCS result = CSTFactory.eINSTANCE.createVariableExpCS();
- result.setSimpleNameCS(simpleNameCS);
- result.getArguments().addAll(arguments);
- result.setIsMarkedPreCS(isMarkedPreCS);
- return result;
-}
+ private PathNameCS createPathNameCS(SimpleNameCS name) {
+ PathNameCS result = CSTFactory.eINSTANCE.createPathNameCS();
+ result.getSimpleNames().add(name);
+ return result;
+ }
-private SimpleNameCS createSimpleNameCS(
- SimpleTypeEnum type,
- String value) {
- SimpleNameCS result = CSTFactory.eINSTANCE.createSimpleNameCS();
- result.setType(type);
- result.setValue(unquote(value));
- return result;
-}
+ private PathNameCS extendPathNameCS(PathNameCS path, SimpleNameCS name) {
+ path.getSimpleNames().add(name);
+ return path;
+ }
-private PrimitiveTypeCS createPrimitiveTypeCS(
- SimpleTypeEnum type,
- String value) {
- PrimitiveTypeCS result = CSTFactory.eINSTANCE.createPrimitiveTypeCS();
- result.setType(type);
- result.setValue(value);
- return result;
-}
+ private SimpleNameCS removeLastSimpleNameCS(PathNameCS path) {
+ EList<SimpleNameCS> simpleNames = path.getSimpleNames();
+ SimpleNameCS name = simpleNames.remove(simpleNames.size() - 1);
+ setOffsets(path, path, simpleNames.size() > 0 ? simpleNames.get(simpleNames.size() - 1) : path);
+ return name;
+ }
-private PathNameCS createPathNameCS(SimpleNameCS name) {
- PathNameCS result = CSTFactory.eINSTANCE.createPathNameCS();
- result.getSimpleNames().add(name);
- return result;
-}
+ private CollectionLiteralExpCS createCollectionLiteralExpCS(CollectionTypeCS typeCS, EList<CollectionLiteralPartCS> collectionLiteralParts) {
+ CollectionLiteralExpCS result = CSTFactory.eINSTANCE.createCollectionLiteralExpCS();
+ result.setCollectionType(typeCS.getCollectionTypeIdentifier());
+ result.getCollectionLiteralParts().addAll(collectionLiteralParts);
+ return result;
+ }
-private PathNameCS extendPathNameCS(PathNameCS path, SimpleNameCS name) {
- path.getSimpleNames().add(name);
- return path;
-}
+ private CollectionLiteralPartCS createCollectionLiteralPartCS(OCLExpressionCS oclExpressionCS) {
+ CollectionLiteralPartCS result = CSTFactory.eINSTANCE.createCollectionLiteralPartCS();
+ result.setExpressionCS(oclExpressionCS);
+ return result;
+ }
-private SimpleNameCS removeLastSimpleNameCS(PathNameCS path) {
- EList<SimpleNameCS> simpleNames = path.getSimpleNames();
- SimpleNameCS name = simpleNames.remove(simpleNames.size()-1);
- setOffsets(path, path, simpleNames.size() > 0 ? simpleNames.get(simpleNames.size()-1) : path);
- return name;
-}
+ private CollectionRangeCS createCollectionRangeCS(OCLExpressionCS oclExpressionCS, OCLExpressionCS lastOCLExpressionCS) {
+ CollectionRangeCS result = CSTFactory.eINSTANCE.createCollectionRangeCS();
+ result.setExpressionCS(oclExpressionCS);
+ result.setLastExpressionCS(lastOCLExpressionCS);
+ return result;
+ }
+ private TupleLiteralExpCS createTupleLiteralExpCS(EList<VariableCS> variables) {
+ TupleLiteralExpCS result = CSTFactory.eINSTANCE.createTupleLiteralExpCS();
+ result.getVariables().addAll(variables);
+ return result;
+ }
-private CollectionLiteralExpCS createCollectionLiteralExpCS(CollectionTypeCS typeCS, EList<CollectionLiteralPartCS> collectionLiteralParts) {
- CollectionLiteralExpCS result = CSTFactory.eINSTANCE.createCollectionLiteralExpCS();
- result.setCollectionType(typeCS.getCollectionTypeIdentifier());
- result.getCollectionLiteralParts().addAll(collectionLiteralParts);
- return result;
-}
-
-private CollectionLiteralPartCS createCollectionLiteralPartCS(OCLExpressionCS oclExpressionCS) {
- CollectionLiteralPartCS result = CSTFactory.eINSTANCE.createCollectionLiteralPartCS();
- result.setExpressionCS(oclExpressionCS);
- return result;
-}
-
-private CollectionRangeCS createCollectionRangeCS(
- OCLExpressionCS oclExpressionCS,
- OCLExpressionCS lastOCLExpressionCS) {
- CollectionRangeCS result = CSTFactory.eINSTANCE.createCollectionRangeCS();
- result.setExpressionCS(oclExpressionCS);
- result.setLastExpressionCS(lastOCLExpressionCS);
- return result;
-}
-
-private TupleLiteralExpCS createTupleLiteralExpCS(EList<VariableCS> variables) {
- TupleLiteralExpCS result = CSTFactory.eINSTANCE.createTupleLiteralExpCS();
- result.getVariables().addAll(variables);
- return result;
-}
-
-private IntegerLiteralExpCS createIntegerLiteralExpCS(String string) {
- IntegerLiteralExpCS result = CSTFactory.eINSTANCE.createIntegerLiteralExpCS();
- result.setSymbol(string);
- result.setIntegerSymbol(Integer.valueOf(string));
- return result;
-}
-
-@SuppressWarnings("nls")
-private UnlimitedNaturalLiteralExpCS createUnlimitedNaturalLiteralExpCS(String string) {
- UnlimitedNaturalLiteralExpCS result = CSTFactory.eINSTANCE.createUnlimitedNaturalLiteralExpCS();
- result.setSymbol(string);
- if ("*".equals(string)) {
- result.setIntegerSymbol(-1);
- } else {
+ private IntegerLiteralExpCS createIntegerLiteralExpCS(String string) {
+ IntegerLiteralExpCS result = CSTFactory.eINSTANCE.createIntegerLiteralExpCS();
+ result.setSymbol(string);
result.setIntegerSymbol(Integer.valueOf(string));
- }
- return result;
-}
-
-private RealLiteralExpCS createRealLiteralExpCS(String string) {
- RealLiteralExpCS result = CSTFactory.eINSTANCE.createRealLiteralExpCS();
- result.setSymbol(string);
- result.setRealSymbol(Double.valueOf(string));
- return result;
-}
-
-private StringLiteralExpCS createStringLiteralExpCS(String string) {
- StringLiteralExpCS result = CSTFactory.eINSTANCE.createStringLiteralExpCS();
- result.setSymbol(string);
- result.setStringSymbol(string);
- return result;
-}
-
-private BooleanLiteralExpCS createBooleanLiteralExpCS(String string) {
- BooleanLiteralExpCS result = CSTFactory.eINSTANCE.createBooleanLiteralExpCS();
- result.setSymbol(string);
- result.setBooleanSymbol(Boolean.valueOf(string));
- return result;
-}
-
-private NullLiteralExpCS createNullLiteralExpCS(String string) {
- NullLiteralExpCS result = CSTFactory.eINSTANCE.createNullLiteralExpCS();
- result.setValue(string);
- result.setType(SimpleTypeEnum.KEYWORD_LITERAL);
- return result;
-}
-
-private InvalidLiteralExpCS createInvalidLiteralExpCS(String string) {
- InvalidLiteralExpCS result = CSTFactory.eINSTANCE.createInvalidLiteralExpCS();
- result.setValue(string);
- result.setType(SimpleTypeEnum.KEYWORD_LITERAL);
- return result;
-}
-
-protected IteratorExpCS createIteratorExpCS(OCLExpressionCS source, SimpleNameCS simpleNameCS, VariableCS variable1, VariableCS variable2, OCLExpressionCS oclExpressionCS) {
- IteratorExpCS result = CSTFactory.eINSTANCE.createIteratorExpCS();
- result.setSource(source);
- result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
- result.setSimpleNameCS(simpleNameCS);
- result.setVariable1(variable1);
- result.setVariable2(variable2);
- result.setBody(oclExpressionCS);
- return result;
-}
-
-protected IterateExpCS createIterateExpCS(OCLExpressionCS source, SimpleNameCS simpleNameCS, VariableCS variable1, VariableCS variable2, OCLExpressionCS oclExpressionCS) {
- IterateExpCS result = CSTFactory.eINSTANCE.createIterateExpCS();
- result.setSource(source);
- result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
- result.setSimpleNameCS(simpleNameCS);
- result.setVariable1(variable1);
- result.setVariable2(variable2);
- result.setBody(oclExpressionCS);
- return result;
-}
-
-private VariableCS createVariableCS(
- String varName,
- TypeCS typeCS,
- OCLExpressionCS oclExpressionCS) {
- VariableCS result = CSTFactory.eINSTANCE.createVariableCS();
- result.setName(unquote(varName));
- result.setTypeCS(typeCS);
- result.setInitExpression(oclExpressionCS);
- return result;
-}
-
-private VariableCS createVariableCS(SimpleNameCS varName, TypeCS typeCS, OCLExpressionCS oclExpressionCS) {
- VariableCS result = CSTFactory.eINSTANCE.createVariableCS();
- result.setName(unquote(varName.getValue()));
- result.setTypeCS(typeCS);
- result.setInitExpression(oclExpressionCS);
- return result;
-}
-
-protected CollectionTypeCS createCollectionTypeCS(CollectionTypeIdentifierEnum collectionType, String value) {
- CollectionTypeCS result = CSTFactory.eINSTANCE.createCollectionTypeCS();
- result.setType(SimpleTypeEnum.IDENTIFIER_LITERAL);
- result.setValue(unquote(value));
- result.setCollectionTypeIdentifier(collectionType);
- return result;
-}
-
-private TupleTypeCS createTupleTypeCS(EList<VariableCS> variables) {
- TupleTypeCS result = CSTFactory.eINSTANCE.createTupleTypeCS();
- result.getVariables().addAll(variables);
- return result;
-}
-
-private FeatureCallExpCS createFeatureCallExpCS(OCLExpressionCS source, PathNameCS pathNameCS, SimpleNameCS simpleNameCS, EList<OCLExpressionCS> arguments, IsMarkedPreCS isMarkedPreCS) {
- FeatureCallExpCS result = CSTFactory.eINSTANCE.createFeatureCallExpCS();
- result.setSource(source);
- result.setAccessor(source != null ? DotOrArrowEnum.DOT_LITERAL : DotOrArrowEnum.NONE_LITERAL);
- result.setPathNameCS((pathNameCS != null) && (pathNameCS.getSimpleNames().size() > 0) ? pathNameCS : null);
- result.setSimpleNameCS(simpleNameCS);
- result.getArguments().addAll(arguments);
-
- if (isAtPre(isMarkedPreCS)) {
- result.setIsMarkedPreCS(isMarkedPreCS);
+ return result;
}
- return result;
-}
-
-private LetExpCS createLetExpCS(
- EList<VariableCS> variables,
- OCLExpressionCS oclExpressionCS) {
- LetExpCS result = CSTFactory.eINSTANCE.createLetExpCS();
- result.getVariables().addAll(variables);
- result.setInExpression(oclExpressionCS);
- return result;
-}
-
-private IfExpCS createIfExpCS(
- OCLExpressionCS condition,
- OCLExpressionCS thenExpression,
- OCLExpressionCS elseExpression) {
- IfExpCS result = CSTFactory.eINSTANCE.createIfExpCS();
- result.setCondition(condition);
- result.setThenExpression(thenExpression);
- result.setElseExpression(elseExpression);
- return result;
-}
-
-private String unescape(IToken stringLiteral) {
- String rawString = stringLiteral.toString();
- int rawStringLength = rawString.length();
- if (rawStringLength <= 2) {
- return ""; //$NON-NLS-1$
+ @SuppressWarnings("nls")
+ private UnlimitedNaturalLiteralExpCS createUnlimitedNaturalLiteralExpCS(String string) {
+ UnlimitedNaturalLiteralExpCS result = CSTFactory.eINSTANCE.createUnlimitedNaturalLiteralExpCS();
+ result.setSymbol(string);
+ if ("*".equals(string)) {
+ result.setIntegerSymbol(-1);
+ } else {
+ result.setIntegerSymbol(Integer.valueOf(string));
+ }
+ return result;
}
- StringBuilder unescapedStringBuilder = null;
- boolean isBackslashEscapeProcessingUsed = true; //getEnvironment().isEnabled(ParsingOptions.USE_BACKSLASH_ESCAPE_PROCESSING);
- boolean isNonStdSQEscapingUsed = false;
- int n = rawStringLength - 1;
- for (int i = 1; i < n; i++) {
- char ch = rawString.charAt(i);
- if ((isBackslashEscapeProcessingUsed && (ch == '\\'))
- || ((ch == '\'') && isNonStdSQSupported())) {
- if (unescapedStringBuilder == null) {
- unescapedStringBuilder = new StringBuilder(rawString
- .substring(1, i));
- }
- i++;
- if (i >= n) {
- reportError(
- ParseErrorCodes.INVALID_CODE,
- "", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$
- "String literal not properly closed");
- }
- char nextCh = rawString.charAt(i);
- if (ch == '\\') {
- switch (nextCh) {
- case 'b' :
+
+ private RealLiteralExpCS createRealLiteralExpCS(String string) {
+ RealLiteralExpCS result = CSTFactory.eINSTANCE.createRealLiteralExpCS();
+ result.setSymbol(string);
+ result.setRealSymbol(Double.valueOf(string));
+ return result;
+ }
+
+ private StringLiteralExpCS createStringLiteralExpCS(String string) {
+ StringLiteralExpCS result = CSTFactory.eINSTANCE.createStringLiteralExpCS();
+ result.setSymbol(string);
+ result.setStringSymbol(string);
+ return result;
+ }
+
+ private BooleanLiteralExpCS createBooleanLiteralExpCS(String string) {
+ BooleanLiteralExpCS result = CSTFactory.eINSTANCE.createBooleanLiteralExpCS();
+ result.setSymbol(string);
+ result.setBooleanSymbol(Boolean.valueOf(string));
+ return result;
+ }
+
+ private NullLiteralExpCS createNullLiteralExpCS(String string) {
+ NullLiteralExpCS result = CSTFactory.eINSTANCE.createNullLiteralExpCS();
+ result.setValue(string);
+ result.setType(SimpleTypeEnum.KEYWORD_LITERAL);
+ return result;
+ }
+
+ private InvalidLiteralExpCS createInvalidLiteralExpCS(String string) {
+ InvalidLiteralExpCS result = CSTFactory.eINSTANCE.createInvalidLiteralExpCS();
+ result.setValue(string);
+ result.setType(SimpleTypeEnum.KEYWORD_LITERAL);
+ return result;
+ }
+
+ protected IteratorExpCS createIteratorExpCS(OCLExpressionCS source, SimpleNameCS simpleNameCS, VariableCS variable1, VariableCS variable2, OCLExpressionCS oclExpressionCS) {
+ IteratorExpCS result = CSTFactory.eINSTANCE.createIteratorExpCS();
+ result.setSource(source);
+ result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
+ result.setSimpleNameCS(simpleNameCS);
+ result.setVariable1(variable1);
+ result.setVariable2(variable2);
+ result.setBody(oclExpressionCS);
+ return result;
+ }
+
+ protected IterateExpCS createIterateExpCS(OCLExpressionCS source, SimpleNameCS simpleNameCS, VariableCS variable1, VariableCS variable2, OCLExpressionCS oclExpressionCS) {
+ IterateExpCS result = CSTFactory.eINSTANCE.createIterateExpCS();
+ result.setSource(source);
+ result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
+ result.setSimpleNameCS(simpleNameCS);
+ result.setVariable1(variable1);
+ result.setVariable2(variable2);
+ result.setBody(oclExpressionCS);
+ return result;
+ }
+
+ private VariableCS createVariableCS(String varName, TypeCS typeCS, OCLExpressionCS oclExpressionCS) {
+ VariableCS result = CSTFactory.eINSTANCE.createVariableCS();
+ result.setName(unquote(varName));
+ result.setTypeCS(typeCS);
+ result.setInitExpression(oclExpressionCS);
+ return result;
+ }
+
+ private VariableCS createVariableCS(SimpleNameCS varName, TypeCS typeCS, OCLExpressionCS oclExpressionCS) {
+ VariableCS result = CSTFactory.eINSTANCE.createVariableCS();
+ result.setName(unquote(varName.getValue()));
+ result.setTypeCS(typeCS);
+ result.setInitExpression(oclExpressionCS);
+ return result;
+ }
+
+ protected CollectionTypeCS createCollectionTypeCS(CollectionTypeIdentifierEnum collectionType, String value) {
+ CollectionTypeCS result = CSTFactory.eINSTANCE.createCollectionTypeCS();
+ result.setType(SimpleTypeEnum.IDENTIFIER_LITERAL);
+ result.setValue(unquote(value));
+ result.setCollectionTypeIdentifier(collectionType);
+ return result;
+ }
+
+ private TupleTypeCS createTupleTypeCS(EList<VariableCS> variables) {
+ TupleTypeCS result = CSTFactory.eINSTANCE.createTupleTypeCS();
+ result.getVariables().addAll(variables);
+ return result;
+ }
+
+ private FeatureCallExpCS createFeatureCallExpCS(OCLExpressionCS source, PathNameCS pathNameCS, SimpleNameCS simpleNameCS, EList<OCLExpressionCS> arguments, IsMarkedPreCS isMarkedPreCS) {
+ FeatureCallExpCS result = CSTFactory.eINSTANCE.createFeatureCallExpCS();
+ result.setSource(source);
+ result.setAccessor(source != null ? DotOrArrowEnum.DOT_LITERAL : DotOrArrowEnum.NONE_LITERAL);
+ result.setPathNameCS((pathNameCS != null) && (pathNameCS.getSimpleNames().size() > 0) ? pathNameCS : null);
+ result.setSimpleNameCS(simpleNameCS);
+ result.getArguments().addAll(arguments);
+
+ if (isAtPre(isMarkedPreCS)) {
+ result.setIsMarkedPreCS(isMarkedPreCS);
+ }
+
+ return result;
+ }
+
+ private LetExpCS createLetExpCS(EList<VariableCS> variables, OCLExpressionCS oclExpressionCS) {
+ LetExpCS result = CSTFactory.eINSTANCE.createLetExpCS();
+ result.getVariables().addAll(variables);
+ result.setInExpression(oclExpressionCS);
+ return result;
+ }
+
+ private IfExpCS createIfExpCS(OCLExpressionCS condition, OCLExpressionCS thenExpression, OCLExpressionCS elseExpression) {
+ IfExpCS result = CSTFactory.eINSTANCE.createIfExpCS();
+ result.setCondition(condition);
+ result.setThenExpression(thenExpression);
+ result.setElseExpression(elseExpression);
+ return result;
+ }
+
+ private String unescape(IToken stringLiteral) {
+ String rawString = stringLiteral.toString();
+ int rawStringLength = rawString.length();
+ if (rawStringLength <= 2) {
+ return ""; //$NON-NLS-1$
+ }
+ StringBuilder unescapedStringBuilder = null;
+ boolean isBackslashEscapeProcessingUsed = true; // getEnvironment().isEnabled(ParsingOptions.USE_BACKSLASH_ESCAPE_PROCESSING);
+ boolean isNonStdSQEscapingUsed = false;
+ int n = rawStringLength - 1;
+ for (int i = 1; i < n; i++) {
+ char ch = rawString.charAt(i);
+ if ((isBackslashEscapeProcessingUsed && (ch == '\\')) || ((ch == '\'') && isNonStdSQSupported())) {
+ if (unescapedStringBuilder == null) {
+ unescapedStringBuilder = new StringBuilder(rawString.substring(1, i));
+ }
+ i++;
+ if (i >= n) {
+ reportError(ParseErrorCodes.INVALID_CODE, "", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$
+ "String literal not properly closed");
+ }
+ char nextCh = rawString.charAt(i);
+ if (ch == '\\') {
+ switch (nextCh) {
+ case 'b':
unescapedStringBuilder.append('\b');
break;
- case 't' :
+ case 't':
unescapedStringBuilder.append('\t');
break;
- case 'n' :
+ case 'n':
unescapedStringBuilder.append('\n');
break;
- case 'f' :
+ case 'f':
unescapedStringBuilder.append('\f');
break;
- case 'r' :
+ case 'r':
unescapedStringBuilder.append('\r');
break;
- case '\"' :
+ case '\"':
unescapedStringBuilder.append('\"');
break;
- case '\'' :
+ case '\'':
unescapedStringBuilder.append('\'');
break;
- case '\\' :
+ case '\\':
unescapedStringBuilder.append('\\');
break;
- default :
+ default:
// octal escape check
int unescapedChar = -1;
if ((nextCh >= '\u0030') && (nextCh <= '\u0037')) { // octal
- // digit
- unescapedChar = Character
- .getNumericValue(nextCh);
+ // digit
+ unescapedChar = Character.getNumericValue(nextCh);
if (i + 1 < n) {
char tmpCh = rawString.charAt(i + 1);
- if ((tmpCh >= '\u0030')
- && (tmpCh <= '\u0037')) { // octal digit
- unescapedChar = 8 * unescapedChar
- + Character.getNumericValue(tmpCh);
+ if ((tmpCh >= '\u0030') && (tmpCh <= '\u0037')) { // octal
+ // digit
+ unescapedChar = 8 * unescapedChar + Character.getNumericValue(tmpCh);
i++;
if (i + 1 < n) {
tmpCh = rawString.charAt(i + 1);
- if ((tmpCh >= '\u0030')
- && (tmpCh <= '\u0037') // octal
- // digit
- && (nextCh <= '\u0033')) { // most-significant
- // digit
- // in
- // range
- // 0..2
- unescapedChar = 8
- * unescapedChar
- + Character
- .getNumericValue(tmpCh);
+ if ((tmpCh >= '\u0030') && (tmpCh <= '\u0037') // octal
+ // digit
+ && (nextCh <= '\u0033')) { // most-significant
+ // digit
+ // in
+ // range
+ // 0..2
+ unescapedChar = 8 * unescapedChar + Character.getNumericValue(tmpCh);
i++;
}
}
}
}
- unescapedStringBuilder
- .append((char) unescapedChar);
+ unescapedStringBuilder.append((char) unescapedChar);
}
if (unescapedChar < 0) {
- reportError(
- ParseErrorCodes.INVALID_CODE,
- "", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$
- "Invalid escape sequence (valid ones are \\b \\t \\n \\f \\r \\\" \\\' \\\\)");
+ reportError(ParseErrorCodes.INVALID_CODE, "", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$
+ "Invalid escape sequence (valid ones are \\b \\t \\n \\f \\r \\\" \\\' \\\\)");
}
break;
+ }
+ } else { // non-std '' escaping
+ unescapedStringBuilder.append('\'');
+ isNonStdSQEscapingUsed = true;
+ assert nextCh == '\'' : "Unexpected escape sequence in string literal: " + rawString; //$NON-NLS-1$
}
- } else { // non-std '' escaping
- unescapedStringBuilder.append('\'');
- isNonStdSQEscapingUsed = true;
- assert nextCh == '\'' : "Unexpected escape sequence in string literal: " + rawString; //$NON-NLS-1$
+ } else if (unescapedStringBuilder != null) {
+ unescapedStringBuilder.append(ch);
}
- } else if (unescapedStringBuilder != null) {
- unescapedStringBuilder.append(ch);
}
- }
- if (isNonStdSQEscapingUsed) {
-// Should not be called - isNonStdSQSupported returns false
-
-// // check settings for using non-standard closure iterator
-// ProblemHandler.Severity sev = getEnvironment().getValue(
-// ProblemOption.STRING_SINGLE_QUOTE_ESCAPE);
-// if ((sev != null) && (sev != ProblemHandler.Severity.OK)) {
-// getEnvironment().problem(
-// sev,
-// ProblemHandler.Phase.PARSER,
-// OCLMessages.bind(OCLMessages.NonStd_SQuote_Escape_,
-// stringLiteral), "STRING_LITERAL", //$NON-NLS-1$
-// null);
-// }
- }
- return (unescapedStringBuilder == null)
- ? rawString.substring(1, n)
- : unescapedStringBuilder.toString();
-}
+ if (isNonStdSQEscapingUsed) {
+ // Should not be called - isNonStdSQSupported returns false
-private boolean isNonStdSQSupported() {
- return false;
-}
-
-/**
- * Sets the start and end offsets of the given <code>CSTNode</code>
- * to the start and end offsets of the given <code>IToken</code>
- *
- * @param cstNode <code>CSTNode</code> to set offsets
- * @param startEnd <code>IToken</code> to retrieve offsets from
- */
-private void setOffsets(CSTNode cstNode, IToken startEnd) {
- cstNode.setStartOffset(startEnd.getStartOffset());
- cstNode.setEndOffset(startEnd.getEndOffset());
-}
-
-/**
- * Sets the start and end offsets of the given <code>CSTNode</code>
- * to the start and end offsets of the 2nd given <code>CSTNode</code>
- *
- * @param cstNode <code>CSTNode</code> to set offsets
- * @param startEnd <code>CSTNode</code> to retrieve offsets from
- */
-private void setOffsets(CSTNode cstNode, CSTNode startEnd) {
- cstNode.setStartOffset(startEnd.getStartOffset());
- cstNode.setEndOffset(startEnd.getEndOffset());
-}
-
-/**
- * Sets the start and end offsets of the given <code>CSTNode</code>
- * to the start offset of the 2nd given <code>CSTNode</code> and the
- * end offset of the 3rd given <code>CSTNode</code>
- *
- * @param cstNode <code>CSTNode</code> to set offsets
- * @param start <code>CSTNode</code> to retrieve start offset from
- * @param end <code>CSTNode</code> to retrieve end offset from
- */
-private void setOffsets(CSTNode cstNode, CSTNode start, CSTNode end) {
- cstNode.setStartOffset(start.getStartOffset());
- cstNode.setEndOffset(end.getEndOffset());
-}
-
-/**
- * Sets the start and end offsets of the given <code>CSTNode</code>
- * to the start offset of the 2nd given <code>CSTNode</code> and the
- * end offset of the given <code>IToken</code>
- *
- * @param cstNode <code>CSTNode</code> to set offsets
- * @param start <code>CSTNode</code> to retrieve start offset from
- * @param end <code>IToken</code> to retrieve end offset from
- */
-private void setOffsets(CSTNode cstNode, CSTNode start, IToken end) {
- cstNode.setStartOffset(start.getStartOffset());
- cstNode.setEndOffset(end.getEndOffset());
-}
-
-/**
- * Sets the start and end offsets of the given <code>CSTNode</code>
- * to the start offset of the given <code>IToken</code> and the
- * end offset of the 2nd given <code>CSTNode</code>
- *
- * @param cstNode <code>CSTNode</code> to set offsets
- * @param start <code>IToken</code> to retrieve start offset from
- * @param end <code>CSTNode</code> to retrieve end offset from
- */
-private void setOffsets(CSTNode cstNode, IToken start, CSTNode end) {
- cstNode.setStartOffset(start.getStartOffset());
- cstNode.setEndOffset(end.getEndOffset());
-}
-
-/**
- * Sets the start and end offsets of the given <code>CSTNode</code>
- * to the start offset of the 1std given <code>IToken</code> and the
- * end offset of the 2nd given <code>IToken</code>
- *
- * @param cstNode <code>CSTNode</code> to set offsets
- * @param start <code>IToken</code> to retrieve start offset from
- * @param end <code>IToken</code> to retrieve end offset from
- */
-private void setOffsets(CSTNode cstNode, IToken start, IToken end) {
- cstNode.setStartOffset(start.getStartOffset());
- cstNode.setEndOffset(end.getEndOffset());
-}
-
-/**
- * Removes the "s surrounding a quoted string, if any.
- *
- * @param quoted a possibly quoted string
- * @return <code>quoted</code> without the surrounding quotes, or just
- * <code>quoted</code> verbatim if there were none
- */
-private String unquote(String quoted) {
- String result = quoted;
-
- if ((result != null) && (result.length() > 1)) {
- int max = result.length() - 1;
-
- if ((result.charAt(0) == '"') && (quoted.charAt(max) == '"')) {
- result = result.substring(1, max);
+ // // check settings for using non-standard closure iterator
+ // ProblemHandler.Severity sev = getEnvironment().getValue(
+ // ProblemOption.STRING_SINGLE_QUOTE_ESCAPE);
+ // if ((sev != null) && (sev != ProblemHandler.Severity.OK)) {
+ // getEnvironment().problem(
+ // sev,
+ // ProblemHandler.Phase.PARSER,
+ // OCLMessages.bind(OCLMessages.NonStd_SQuote_Escape_,
+ // stringLiteral), "STRING_LITERAL", //$NON-NLS-1$
+ // null);
+ // }
}
-
- // this is a regexp, so the backslash needs to be
- // re-escaped, thus "\\" is rendered in a Java
- // string literal as "\\\\"
- result = result.replaceAll("\\\\\"", "\""); //$NON-NLS-2$//$NON-NLS-1$
- /*
- * [artem] removed extra error handling fon non-spec escape processing
- */
+ return (unescapedStringBuilder == null) ? rawString.substring(1, n) : unescapedStringBuilder.toString();
}
- return result;
-}
+ private boolean isNonStdSQSupported() {
+ return false;
+ }
-private boolean isAtPre(IsMarkedPreCS atPreCS) {
- return atPreCS != null;
-}
+ /**
+ * Sets the start and end offsets of the given <code>CSTNode</code> to the
+ * start and end offsets of the given <code>IToken</code>
+ *
+ * @param cstNode
+ * <code>CSTNode</code> to set offsets
+ * @param startEnd
+ * <code>IToken</code> to retrieve offsets from
+ */
+ private void setOffsets(CSTNode cstNode, IToken startEnd) {
+ cstNode.setStartOffset(startEnd.getStartOffset());
+ cstNode.setEndOffset(startEnd.getEndOffset());
+ }
+
+ /**
+ * Sets the start and end offsets of the given <code>CSTNode</code> to the
+ * start and end offsets of the 2nd given <code>CSTNode</code>
+ *
+ * @param cstNode
+ * <code>CSTNode</code> to set offsets
+ * @param startEnd
+ * <code>CSTNode</code> to retrieve offsets from
+ */
+ private void setOffsets(CSTNode cstNode, CSTNode startEnd) {
+ cstNode.setStartOffset(startEnd.getStartOffset());
+ cstNode.setEndOffset(startEnd.getEndOffset());
+ }
+
+ /**
+ * Sets the start and end offsets of the given <code>CSTNode</code> to the
+ * start offset of the 2nd given <code>CSTNode</code> and the end offset of
+ * the 3rd given <code>CSTNode</code>
+ *
+ * @param cstNode
+ * <code>CSTNode</code> to set offsets
+ * @param start
+ * <code>CSTNode</code> to retrieve start offset from
+ * @param end
+ * <code>CSTNode</code> to retrieve end offset from
+ */
+ private void setOffsets(CSTNode cstNode, CSTNode start, CSTNode end) {
+ cstNode.setStartOffset(start.getStartOffset());
+ cstNode.setEndOffset(end.getEndOffset());
+ }
+
+ /**
+ * Sets the start and end offsets of the given <code>CSTNode</code> to the
+ * start offset of the 2nd given <code>CSTNode</code> and the end offset of
+ * the given <code>IToken</code>
+ *
+ * @param cstNode
+ * <code>CSTNode</code> to set offsets
+ * @param start
+ * <code>CSTNode</code> to retrieve start offset from
+ * @param end
+ * <code>IToken</code> to retrieve end offset from
+ */
+ private void setOffsets(CSTNode cstNode, CSTNode start, IToken end) {
+ cstNode.setStartOffset(start.getStartOffset());
+ cstNode.setEndOffset(end.getEndOffset());
+ }
+
+ /**
+ * Sets the start and end offsets of the given <code>CSTNode</code> to the
+ * start offset of the given <code>IToken</code> and the end offset of the
+ * 2nd given <code>CSTNode</code>
+ *
+ * @param cstNode
+ * <code>CSTNode</code> to set offsets
+ * @param start
+ * <code>IToken</code> to retrieve start offset from
+ * @param end
+ * <code>CSTNode</code> to retrieve end offset from
+ */
+ private void setOffsets(CSTNode cstNode, IToken start, CSTNode end) {
+ cstNode.setStartOffset(start.getStartOffset());
+ cstNode.setEndOffset(end.getEndOffset());
+ }
+
+ /**
+ * Sets the start and end offsets of the given <code>CSTNode</code> to the
+ * start offset of the 1std given <code>IToken</code> and the end offset of
+ * the 2nd given <code>IToken</code>
+ *
+ * @param cstNode
+ * <code>CSTNode</code> to set offsets
+ * @param start
+ * <code>IToken</code> to retrieve start offset from
+ * @param end
+ * <code>IToken</code> to retrieve end offset from
+ */
+ private void setOffsets(CSTNode cstNode, IToken start, IToken end) {
+ cstNode.setStartOffset(start.getStartOffset());
+ cstNode.setEndOffset(end.getEndOffset());
+ }
+
+ /**
+ * Removes the "s surrounding a quoted string, if any.
+ *
+ * @param quoted
+ * a possibly quoted string
+ * @return <code>quoted</code> without the surrounding quotes, or just
+ * <code>quoted</code> verbatim if there were none
+ */
+ private String unquote(String quoted) {
+ String result = quoted;
+
+ if ((result != null) && (result.length() > 1)) {
+ int max = result.length() - 1;
+
+ if ((result.charAt(0) == '"') && (quoted.charAt(max) == '"')) {
+ result = result.substring(1, max);
+ }
+
+ // this is a regexp, so the backslash needs to be
+ // re-escaped, thus "\\" is rendered in a Java
+ // string literal as "\\\\"
+ result = result.replaceAll("\\\\\"", "\""); //$NON-NLS-2$//$NON-NLS-1$
+ /*
+ * [artem] removed extra error handling fon non-spec escape
+ * processing
+ */
+ }
+
+ return result;
+ }
+
+ private boolean isAtPre(IsMarkedPreCS atPreCS) {
+ return atPreCS != null;
+ }
@SuppressWarnings("unchecked")
public void ruleAction(int ruleNumber) {
switch (ruleNumber) {
-
- //
- // Rule 31: binaryKeywordCS ::= binaryKeyword
- //
- case 31:
-
- //
- // Rule 32: unaryKeywordCS ::= unaryKeyword
- //
- case 32:
-
- //
- // Rule 33: reservedPunctuationCS ::= reservedPunctuation
- //
- case 33: {
-
- SimpleNameCS result = createSimpleNameCS(
- SimpleTypeEnum.KEYWORD_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 34: iterateNameCS ::= iterateIdentifier
- //
- case 34:
-
- //
- // Rule 35: iteratorNameCS ::= iteratorIdentifier
- //
- case 35:
-
- //
- // Rule 36: simpleIdentifierCS ::= otherIdentifier
- //
- case 36: {
-
- CSTNode result = createSimpleNameCS(
- SimpleTypeEnum.IDENTIFIER_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 38: simpleIdentifierCS ::= self
- //
- case 38: {
-
- CSTNode result = createSimpleNameCS(
- SimpleTypeEnum.SELF_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 51: pathNameCS ::= notReservedSimpleNameCS
- //
- case 51: {
-
- SimpleNameCS simpleName = (SimpleNameCS)dtParser.getSym(1);
- PathNameCS result = createPathNameCS(simpleName);
- setOffsets(result, simpleName);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 53: qualifiedPathNameCS ::= pathNameCS :: notReservedSimpleNameCS
- //
- case 53: {
-
- PathNameCS result = (PathNameCS)dtParser.getSym(1);
- SimpleNameCS simpleName = (SimpleNameCS)dtParser.getSym(3);
- result = extendPathNameCS(result, simpleName);
- setOffsets(result, result, simpleName);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 54: primitiveTypeCS ::= Boolean
- //
- case 54: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.BOOLEAN_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 55: primitiveTypeCS ::= Integer
- //
- case 55: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.INTEGER_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 56: primitiveTypeCS ::= Real
- //
- case 56: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.REAL_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 57: primitiveTypeCS ::= String
- //
- case 57: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.STRING_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 58: primitiveTypeCS ::= UnlimitedNatural
- //
- case 58: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.UNLIMITED_NATURAL_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 59: primitiveTypeCS ::= OclAny
- //
- case 59: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.OCL_ANY_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 60: primitiveTypeCS ::= OclInvalid
- //
- case 60: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.OCL_INVALID_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 61: primitiveTypeCS ::= OclVoid
- //
- case 61: {
-
- CSTNode result = createPrimitiveTypeCS(
- SimpleTypeEnum.OCL_VOID_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 62: CollectionTypeIdentifierCS ::= Bag
- //
- case 62: {
-
- SimpleNameCS result = createCollectionTypeCS(
- CollectionTypeIdentifierEnum.BAG_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 63: CollectionTypeIdentifierCS ::= Collection
- //
- case 63: {
-
- SimpleNameCS result = createCollectionTypeCS(
- CollectionTypeIdentifierEnum.COLLECTION_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 64: CollectionTypeIdentifierCS ::= OrderedSet
- //
- case 64: {
-
- SimpleNameCS result = createCollectionTypeCS(
- CollectionTypeIdentifierEnum.ORDERED_SET_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 65: CollectionTypeIdentifierCS ::= Sequence
- //
- case 65: {
-
- SimpleNameCS result = createCollectionTypeCS(
- CollectionTypeIdentifierEnum.SEQUENCE_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 66: CollectionTypeIdentifierCS ::= Set
- //
- case 66: {
-
- SimpleNameCS result = createCollectionTypeCS(
- CollectionTypeIdentifierEnum.SET_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 67: collectionTypeCS ::= CollectionTypeIdentifierCS ( typeCS )
- //
- case 67: {
-
- CollectionTypeCS result = (CollectionTypeCS)dtParser.getSym(1);
- result.setTypeCS((TypeCS)dtParser.getSym(3));
- setOffsets(result, result, getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 68: tupleTypeCS ::= Tuple ( variableDeclarationListCSopt )
- //
- case 68: {
-
- CSTNode result = createTupleTypeCS((EList)dtParser.getSym(3));
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 69: typeCS ::= notReservedSimpleNameCS
- //
- case 69: {
-
- CSTNode result = (CSTNode)dtParser.getSym(1);
- if (!(result instanceof TypeCS)) {
- PathNameCS pathNameCS = createPathNameCS((SimpleNameCS)result);
- setOffsets(pathNameCS, result);
- result = pathNameCS;
- }
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 77: typedVariableCS ::= BooleanLiteralExpCS : typeCS
- //
- case 77:
-
- //
- // Rule 78: typedVariableCS ::= InvalidLiteralExpCS : typeCS
- //
- case 78:
-
- //
- // Rule 79: typedVariableCS ::= NullLiteralExpCS : typeCS
- //
- case 79:
-
- //
- // Rule 80: typedVariableCS ::= notLiteralNorReservedSimpleNameCS : typeCS
- //
- case 80: {
-
- SimpleNameCS name = (SimpleNameCS)dtParser.getSym(1);
- TypeCS type = (TypeCS)dtParser.getSym(3);
- VariableCS result = createVariableCS(name, type, null);
- setOffsets(result, name, type);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 81: VariableDeclarationCS ::= variableNameCS
- //
- case 81: {
-
- SimpleNameCS name = (SimpleNameCS)dtParser.getSym(1);
- CSTNode result = createVariableCS(name, null, null);
- setOffsets(result, name);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 83: VariableDeclarationCS ::= typedVariableCS = OclExpressionCS
- //
- case 83: {
-
- VariableCS result = (VariableCS)dtParser.getSym(1);
- OCLExpressionCS initExpression = (OCLExpressionCS)dtParser.getSym(3);
- result.setInitExpression(initExpression);
- setOffsets(result, result, initExpression);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 84: variableDeclarationListCS ::= VariableDeclarationCS
- //
- case 84: {
-
- EList result = new BasicEList();
- result.add(dtParser.getSym(1));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 85: variableDeclarationListCS ::= variableDeclarationListCS , VariableDeclarationCS
- //
- case 85: {
-
- EList result = (EList)dtParser.getSym(1);
- result.add(dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 86: variableDeclarationListCSopt ::= $Empty
- //
- case 86:
- dtParser.setSym1(new BasicEList());
- break;
-
- //
- // Rule 88: BooleanLiteralExpCS ::= false
- //
- case 88: {
-
- CSTNode result = createBooleanLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 89: BooleanLiteralExpCS ::= true
- //
- case 89: {
-
- CSTNode result = createBooleanLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 90: IntegerLiteralExpCS ::= INTEGER_LITERAL
- //
- case 90: {
-
- CSTNode result = createIntegerLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 91: InvalidLiteralExpCS ::= invalid
- //
- case 91: {
-
- CSTNode result = createInvalidLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 92: NullLiteralExpCS ::= null
- //
- case 92: {
-
- CSTNode result = createNullLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 93: RealLiteralExpCS ::= REAL_LITERAL
- //
- case 93: {
-
- CSTNode result = createRealLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 94: StringLiteralExpCS ::= STRING_LITERAL
- //
- case 94: {
-
- IToken literalToken = getIToken(dtParser.getToken(1));
- StringLiteralExpCS result = createStringLiteralExpCS(literalToken.toString());
- result.setUnescapedStringSymbol(unescape(literalToken));
- setOffsets(result, literalToken);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 95: UnlimitedNaturalLiteralExpCS ::= *
- //
- case 95: {
-
- CSTNode result = createUnlimitedNaturalLiteralExpCS(getTokenText(dtParser.getToken(1)));
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 101: CollectionLiteralExpCS ::= CollectionTypeIdentifierCS { CollectionLiteralPartsCSopt }
- //
- case 101: {
-
- CollectionTypeCS typeCS = (CollectionTypeCS)dtParser.getSym(1);
- CSTNode result = createCollectionLiteralExpCS(
- typeCS,
- (EList)dtParser.getSym(3)
- );
- setOffsets(result, typeCS, getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 102: CollectionRangeCS ::= OclExpressionCS .. OclExpressionCS
- //
- case 102: {
-
- CSTNode result = createCollectionRangeCS(
- (OCLExpressionCS)dtParser.getSym(1),
- (OCLExpressionCS)dtParser.getSym(3)
- );
- setOffsets(result, (CSTNode)dtParser.getSym(1), (CSTNode)dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 104: CollectionLiteralPartCS ::= OclExpressionCS
- //
- case 104: {
-
- CSTNode result = createCollectionLiteralPartCS(
- (OCLExpressionCS)dtParser.getSym(1)
- );
- setOffsets(result, (CSTNode)dtParser.getSym(1));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 105: CollectionLiteralPartsCS ::= CollectionLiteralPartCS
- //
- case 105: {
-
- EList result = new BasicEList();
- result.add(dtParser.getSym(1));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 106: CollectionLiteralPartsCS ::= CollectionLiteralPartsCS , CollectionLiteralPartCS
- //
- case 106: {
-
- EList result = (EList)dtParser.getSym(1);
- result.add(dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 107: CollectionLiteralPartsCSopt ::= $Empty
- //
- case 107:
- dtParser.setSym1(new BasicEList());
- break;
-
- //
- // Rule 109: TupleLiteralExpCS ::= Tuple { TupleLiteralPartsCS }
- //
- case 109: {
-
- CSTNode result = createTupleLiteralExpCS((EList)dtParser.getSym(3));
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 110: TupleLiteralPartCS ::= variableNameCS = OclExpressionCS
- //
- case 110: {
-
- SimpleNameCS name = (SimpleNameCS)dtParser.getSym(1);
- OCLExpressionCS initExpression = (OCLExpressionCS)dtParser.getSym(3);
- VariableCS result = createVariableCS(name, null, initExpression);
- setOffsets(result, name, initExpression);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 111: TupleLiteralPartCS ::= typedVariableCS = OclExpressionCS
- //
- case 111: {
-
- VariableCS result = (VariableCS)dtParser.getSym(1);
- OCLExpressionCS initExpression = (OCLExpressionCS)dtParser.getSym(3);
- result.setInitExpression(initExpression);
- setOffsets(result, result, initExpression);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 112: TupleLiteralPartsCS ::= TupleLiteralPartCS
- //
- case 112: {
-
- EList result = new BasicEList();
- result.add(dtParser.getSym(1));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 113: TupleLiteralPartsCS ::= TupleLiteralPartsCS , TupleLiteralPartCS
- //
- case 113: {
-
- EList result = (EList)dtParser.getSym(1);
- result.add(dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 119: OperationCallExpCS ::= primaryExpCS -> notIteratorNorReservedSimpleNameCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 119: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- CSTNode result = createArrowOperationCallExpCS(
- source,
- (SimpleNameCS)dtParser.getSym(3),
- (IsMarkedPreCS)dtParser.getSym(4),
- (EList)dtParser.getSym(6)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(7)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 120: OperationCallExpCS ::= primaryExpCS . binaryKeywordCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 120:
-
- //
- // Rule 121: OperationCallExpCS ::= primaryExpCS . unaryKeywordCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 121:
-
- //
- // Rule 122: OperationCallExpCS ::= primaryExpCS . reservedPunctuationCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 122:
-
- //
- // Rule 123: OperationCallExpCS ::= primaryExpCS . notReservedSimpleNameCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 123: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- CSTNode result = createDotOperationCallExpCS(
- source,
- null,
- (SimpleNameCS)dtParser.getSym(3),
- (IsMarkedPreCS)dtParser.getSym(4),
- (EList)dtParser.getSym(6)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(7)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 124: OperationCallExpCS ::= literalSimpleNameCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 124:
-
- //
- // Rule 125: OperationCallExpCS ::= notLiteralNorReservedSimpleNameCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 125: {
-
- CSTNode result = createDotOperationCallExpCS(
- null,
- null,
- (SimpleNameCS)dtParser.getSym(1),
- (IsMarkedPreCS)dtParser.getSym(2),
- (EList)dtParser.getSym(4)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 126: OperationCallExpCS ::= qualifiedPathNameCS ( argumentsCSopt )
- //
- case 126: {
-
- PathNameCS pathNameCS = (PathNameCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
- OperationCallExpCS result = createDotOperationCallExpCS(
- null,
- pathNameCS,
- simpleNameCS,
- null,
- (EList)dtParser.getSym(3)
- );
- setOffsets(result, pathNameCS, getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 127: OperationCallExpCS ::= primaryExpCS . qualifiedPathNameCS isMarkedPreCSopt ( argumentsCSopt )
- //
- case 127: {
-
- PathNameCS pathNameCS = (PathNameCS)dtParser.getSym(3);
- SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- CallExpCS result = createDotOperationCallExpCS(
- source,
- pathNameCS,
- simpleNameCS,
- (IsMarkedPreCS)dtParser.getSym(4),
- (EList)dtParser.getSym(6)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(7)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 128: argumentsCS ::= OclExpressionCS
- //
- case 128: {
-
- EList result = new BasicEList();
- result.add(dtParser.getSym(1));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 129: argumentsCS ::= argumentsCS , OclExpressionCS
- //
- case 129: {
-
- EList result = (EList)dtParser.getSym(1);
- result.add(dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 130: argumentsCSopt ::= $Empty
- //
- case 130:
- dtParser.setSym1(new BasicEList());
- break;
-
- //
- // Rule 132: isMarkedPreCSopt ::= $Empty
- //
- case 132: {
-
- dtParser.setSym1(null);
- break;
- }
-
- //
- // Rule 133: PropertyCallExpCS ::= primaryExpCS . notReservedSimpleNameCS isMarkedPreCSopt
- //
- case 133: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)dtParser.getSym(4);
- CSTNode result = createFeatureCallExpCS(
- source,
- null,
- simpleNameCS,
- new BasicEList(),
- isMarkedPreCS
- );
- if (isMarkedPreCS != null) {
- setOffsets(result, source, isMarkedPreCS);
- } else {
- setOffsets(result, source, simpleNameCS);
- }
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 134: PropertyCallExpCS ::= primaryExpCS . qualifiedPathNameCS isMarkedPreCSopt
- //
- case 134: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- PathNameCS pathNameCS = (PathNameCS)dtParser.getSym(3);
- SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
- IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)dtParser.getSym(4);
- CSTNode result = createFeatureCallExpCS(
- source,
- pathNameCS,
- simpleNameCS,
- new BasicEList(),
- isMarkedPreCS
- );
- if (isMarkedPreCS != null) {
- setOffsets(result, source, isMarkedPreCS);
- } else {
- setOffsets(result, source, simpleNameCS);
- }
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 135: PropertyCallExpCS ::= qualifiedPathNameCS isMarkedPreCSopt
- //
- case 135: {
-
- PathNameCS pathNameCS = (PathNameCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
- IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)dtParser.getSym(2);
- CSTNode result = createFeatureCallExpCS(
- null,
- pathNameCS,
- simpleNameCS,
- new BasicEList(),
- isMarkedPreCS
- );
- if (isMarkedPreCS != null) {
- setOffsets(result, pathNameCS, isMarkedPreCS);
- } else {
- setOffsets(result, pathNameCS, simpleNameCS);
- }
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 136: AssociationClassCallExpCS ::= notLiteralNorReservedSimpleNameCS isMarkedPreCSopt
- //
- case 136: {
-
- IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)dtParser.getSym(2);
- CSTNode result = createVariableExpCS(
- (SimpleNameCS)dtParser.getSym(1),
- new BasicEList(),
- isMarkedPreCS
- );
- if (isMarkedPreCS != null) {
- setOffsets(result, (CSTNode)dtParser.getSym(1), (CSTNode)dtParser.getSym(2));
- } else {
- setOffsets(result, (CSTNode)dtParser.getSym(1));
- }
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 140: IterateExpCS ::= primaryExpCS -> iterateNameCS ( VariableDeclarationCS | OclExpressionCS )
- //
- case 140: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- CSTNode result = createIterateExpCS(
- source,
- simpleNameCS,
- (VariableCS)dtParser.getSym(5),
- null,
- (OCLExpressionCS)dtParser.getSym(7)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(8)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 141: IterateExpCS ::= primaryExpCS -> iterateNameCS ( VariableDeclarationCS ; VariableDeclarationCS | OclExpressionCS )
- //
- case 141: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- CSTNode result = createIterateExpCS(
- source,
- simpleNameCS,
- (VariableCS)dtParser.getSym(5),
- (VariableCS)dtParser.getSym(7),
- (OCLExpressionCS)dtParser.getSym(9)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(10)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 142: IteratorExpCS ::= primaryExpCS -> iteratorNameCS ( OclExpressionCS )
- //
- case 142: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- CSTNode result = createIteratorExpCS(
- source,
- simpleNameCS,
- null,
- null,
- (OCLExpressionCS)dtParser.getSym(5)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(6)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 143: IteratorExpCS ::= primaryExpCS -> iteratorNameCS ( VariableDeclarationCS | OclExpressionCS )
- //
- case 143: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- CSTNode result = createIteratorExpCS(
- source,
- simpleNameCS,
- (VariableCS)dtParser.getSym(5),
- null,
- (OCLExpressionCS)dtParser.getSym(7)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(8)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 144: IteratorExpCS ::= primaryExpCS -> iteratorNameCS ( VariableDeclarationCS , VariableDeclarationCS | OclExpressionCS )
- //
- case 144: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- CSTNode result = createIteratorExpCS(
- source,
- simpleNameCS,
- (VariableCS)dtParser.getSym(5),
- (VariableCS)dtParser.getSym(7),
- (OCLExpressionCS)dtParser.getSym(9)
- );
- setOffsets(result, source, getIToken(dtParser.getToken(10)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 149: LetExpCS ::= let variableDeclarationListCS in OclExpressionCS
- //
- case 149: {
-
- OCLExpressionCS expr = (OCLExpressionCS)dtParser.getSym(4);
- CSTNode result = createLetExpCS(
- (EList)dtParser.getSym(2),
- expr
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), expr);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 154: impliesExpCS ::= impliesExpCS implies xorExpCS
- //
- case 154:
-
- //
- // Rule 155: impliesLetCS ::= impliesExpCS implies xorLetCS
- //
- case 155:
-
- //
- // Rule 158: xorExpCS ::= xorExpCS xor orExpCS
- //
- case 158:
-
- //
- // Rule 159: xorLetCS ::= xorExpCS xor orLetCS
- //
- case 159:
-
- //
- // Rule 162: orExpCS ::= orExpCS or andExpCS
- //
- case 162:
-
- //
- // Rule 163: orLetCS ::= orExpCS or andLetCS
- //
- case 163:
-
- //
- // Rule 166: andExpCS ::= andExpCS and equalityExpCS
- //
- case 166:
-
- //
- // Rule 167: andLetCS ::= andExpCS and equalityLetCS
- //
- case 167:
-
- //
- // Rule 170: equalityExpCS ::= equalityExpCS = relationalExpCS
- //
- case 170:
-
- //
- // Rule 171: equalityLetCS ::= equalityExpCS = relationalLetCS
- //
- case 171:
-
- //
- // Rule 172: equalityExpCS ::= equalityExpCS <> relationalExpCS
- //
- case 172:
-
- //
- // Rule 173: equalityLetCS ::= equalityExpCS <> relationalLetCS
- //
- case 173:
-
- //
- // Rule 176: relationalExpCS ::= relationalExpCS > additiveExpCS
- //
- case 176:
-
- //
- // Rule 177: relationalLetCS ::= relationalExpCS > additiveLetCS
- //
- case 177:
-
- //
- // Rule 178: relationalExpCS ::= relationalExpCS < additiveExpCS
- //
- case 178:
-
- //
- // Rule 179: relationalLetCS ::= relationalExpCS < additiveLetCS
- //
- case 179:
-
- //
- // Rule 180: relationalExpCS ::= relationalExpCS >= additiveExpCS
- //
- case 180:
-
- //
- // Rule 181: relationalLetCS ::= relationalExpCS >= additiveLetCS
- //
- case 181:
-
- //
- // Rule 182: relationalExpCS ::= relationalExpCS <= additiveExpCS
- //
- case 182:
-
- //
- // Rule 183: relationalLetCS ::= relationalExpCS <= additiveLetCS
- //
- case 183:
-
- //
- // Rule 186: additiveExpCS ::= additiveExpCS + multiplicativeExpCS
- //
- case 186:
-
- //
- // Rule 187: additiveLetCS ::= additiveExpCS + multiplicativeLetCS
- //
- case 187:
-
- //
- // Rule 188: additiveExpCS ::= additiveExpCS - multiplicativeExpCS
- //
- case 188:
-
- //
- // Rule 189: additiveLetCS ::= additiveExpCS - multiplicativeLetCS
- //
- case 189:
-
- //
- // Rule 192: multiplicativeExpCS ::= multiplicativeExpCS * unaryExpCS
- //
- case 192:
-
- //
- // Rule 193: multiplicativeLetCS ::= multiplicativeExpCS * unaryLetCS
- //
- case 193:
-
- //
- // Rule 194: multiplicativeExpCS ::= multiplicativeExpCS / unaryExpCS
- //
- case 194:
-
- //
- // Rule 195: multiplicativeLetCS ::= multiplicativeExpCS / unaryLetCS
- //
- case 195: {
-
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.STRING_LITERAL,
- getTokenText(dtParser.getToken(2))
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(2)));
- OCLExpressionCS left = (OCLExpressionCS)dtParser.getSym(1);
- OCLExpressionCS right = (OCLExpressionCS)dtParser.getSym(3);
- EList args = new BasicEList();
- args.add(right);
- CSTNode result = createOperationCallExpCS(
- left,
- simpleNameCS,
- args
- );
- setOffsets(result, left, right);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 198: unaryExpCS ::= - unaryExpCS
- //
- case 198:
-
- //
- // Rule 199: unaryLetCS ::= - unaryLetCS
- //
- case 199:
-
- //
- // Rule 200: unaryExpCS ::= not unaryExpCS
- //
- case 200:
-
- //
- // Rule 201: unaryLetCS ::= not unaryLetCS
- //
- case 201: {
-
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.STRING_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(1)));
- OCLExpressionCS expr = (OCLExpressionCS)dtParser.getSym(2);
- CSTNode result = createOperationCallExpCS(
- expr,
- simpleNameCS,
- new BasicEList()
- );
- setOffsets(result, simpleNameCS, expr);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 205: primaryExpCS ::= ( OclExpressionCS )
- //
- case 205: {
-
- CSTNode result = (CSTNode)dtParser.getSym(2);
- if (result instanceof OperationCallExpCS) {
- ((OperationCallExpCS)result).setIsAtomic(true);
- }
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 208: declarator1 ::= IDENTIFIER : typeCS
- //
- case 208: {
-
- CSTNode result = createVariableCS(
- getTokenText(dtParser.getToken(1)),
- (TypeCS)dtParser.getSym(3),
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 209: declarator1 ::= IDENTIFIER : typeCS = OclExpressionCS
- //
- case 209: {
-
- CSTNode result = createVariableCS(
- getTokenText(dtParser.getToken(1)),
- (TypeCS)dtParser.getSym(3),
- (OCLExpressionCS)dtParser.getSym(5)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(5));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 210: declarator1 ::= IDENTIFIER : typeCS := OclExpressionCS
- //
- case 210: {
-
- CSTNode result = createVariableCS(
- getTokenText(dtParser.getToken(1)),
- (TypeCS)dtParser.getSym(3),
- (OCLExpressionCS)dtParser.getSym(5)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(5));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 211: declarator2 ::= IDENTIFIER := OclExpressionCS
- //
- case 211: {
-
- CSTNode result = createVariableCS(
- getTokenText(dtParser.getToken(1)),
- null,
- (OCLExpressionCS)dtParser.getSym(3)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 212: letExpSubCS3 ::= variableNameCS = OclExpressionCS
- //
- case 212: {
-
- SimpleNameCS name = (SimpleNameCS)dtParser.getSym(1);
- OCLExpressionCS initExpression = (OCLExpressionCS)dtParser.getSym(3);
- VariableCS variableCS = createVariableCS(name, null, initExpression);
- setOffsets(variableCS, name, initExpression);
+ //
+ // Rule 31: binaryKeywordCS ::= binaryKeyword
+ //
+ case 31:
- EList result = new BasicEList();
- result.add(variableCS);
- dtParser.setSym1(result);
- break;
+ //
+ // Rule 32: unaryKeywordCS ::= unaryKeyword
+ //
+ case 32:
+
+ //
+ // Rule 33: reservedPunctuationCS ::= reservedPunctuation
+ //
+ case 33: {
+
+ SimpleNameCS result = createSimpleNameCS(SimpleTypeEnum.KEYWORD_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 34: iterateNameCS ::= iterateIdentifier
+ //
+ case 34:
+
+ //
+ // Rule 35: iteratorNameCS ::= iteratorIdentifier
+ //
+ case 35:
+
+ //
+ // Rule 36: simpleIdentifierCS ::= otherIdentifier
+ //
+ case 36: {
+
+ CSTNode result = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 38: simpleIdentifierCS ::= self
+ //
+ case 38: {
+
+ CSTNode result = createSimpleNameCS(SimpleTypeEnum.SELF_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 51: pathNameCS ::= notReservedSimpleNameCS
+ //
+ case 51: {
+
+ SimpleNameCS simpleName = (SimpleNameCS) dtParser.getSym(1);
+ PathNameCS result = createPathNameCS(simpleName);
+ setOffsets(result, simpleName);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 53: qualifiedPathNameCS ::= pathNameCS ::
+ // notReservedSimpleNameCS
+ //
+ case 53: {
+
+ PathNameCS result = (PathNameCS) dtParser.getSym(1);
+ SimpleNameCS simpleName = (SimpleNameCS) dtParser.getSym(3);
+ result = extendPathNameCS(result, simpleName);
+ setOffsets(result, result, simpleName);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 54: primitiveTypeCS ::= Boolean
+ //
+ case 54: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.BOOLEAN_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 55: primitiveTypeCS ::= Integer
+ //
+ case 55: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.INTEGER_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 56: primitiveTypeCS ::= Real
+ //
+ case 56: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.REAL_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 57: primitiveTypeCS ::= String
+ //
+ case 57: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.STRING_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 58: primitiveTypeCS ::= UnlimitedNatural
+ //
+ case 58: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.UNLIMITED_NATURAL_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 59: primitiveTypeCS ::= OclAny
+ //
+ case 59: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.OCL_ANY_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 60: primitiveTypeCS ::= OclInvalid
+ //
+ case 60: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.OCL_INVALID_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 61: primitiveTypeCS ::= OclVoid
+ //
+ case 61: {
+
+ CSTNode result = createPrimitiveTypeCS(SimpleTypeEnum.OCL_VOID_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 62: CollectionTypeIdentifierCS ::= Bag
+ //
+ case 62: {
+
+ SimpleNameCS result = createCollectionTypeCS(CollectionTypeIdentifierEnum.BAG_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 63: CollectionTypeIdentifierCS ::= Collection
+ //
+ case 63: {
+
+ SimpleNameCS result = createCollectionTypeCS(CollectionTypeIdentifierEnum.COLLECTION_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 64: CollectionTypeIdentifierCS ::= OrderedSet
+ //
+ case 64: {
+
+ SimpleNameCS result = createCollectionTypeCS(CollectionTypeIdentifierEnum.ORDERED_SET_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 65: CollectionTypeIdentifierCS ::= Sequence
+ //
+ case 65: {
+
+ SimpleNameCS result = createCollectionTypeCS(CollectionTypeIdentifierEnum.SEQUENCE_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 66: CollectionTypeIdentifierCS ::= Set
+ //
+ case 66: {
+
+ SimpleNameCS result = createCollectionTypeCS(CollectionTypeIdentifierEnum.SET_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 67: collectionTypeCS ::= CollectionTypeIdentifierCS ( typeCS
+ // )
+ //
+ case 67: {
+
+ CollectionTypeCS result = (CollectionTypeCS) dtParser.getSym(1);
+ result.setTypeCS((TypeCS) dtParser.getSym(3));
+ setOffsets(result, result, getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 68: tupleTypeCS ::= Tuple ( variableDeclarationListCSopt )
+ //
+ case 68: {
+
+ CSTNode result = createTupleTypeCS((EList) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 69: typeCS ::= notReservedSimpleNameCS
+ //
+ case 69: {
+
+ CSTNode result = (CSTNode) dtParser.getSym(1);
+ if (!(result instanceof TypeCS)) {
+ PathNameCS pathNameCS = createPathNameCS((SimpleNameCS) result);
+ setOffsets(pathNameCS, result);
+ result = pathNameCS;
}
-
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 213: letExpSubCS3 ::= letExpSubCS3 , TupleLiteralPartCS
+ // Rule 77: typedVariableCS ::= BooleanLiteralExpCS : typeCS
//
- case 213: {
-
- EList result = (EList)dtParser.getSym(1);
- result.add(dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
+ case 77:
+
+ //
+ // Rule 78: typedVariableCS ::= InvalidLiteralExpCS : typeCS
+ //
+ case 78:
+
+ //
+ // Rule 79: typedVariableCS ::= NullLiteralExpCS : typeCS
+ //
+ case 79:
+
+ //
+ // Rule 80: typedVariableCS ::= notLiteralNorReservedSimpleNameCS :
+ // typeCS
+ //
+ case 80: {
+
+ SimpleNameCS name = (SimpleNameCS) dtParser.getSym(1);
+ TypeCS type = (TypeCS) dtParser.getSym(3);
+ VariableCS result = createVariableCS(name, type, null);
+ setOffsets(result, name, type);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 81: VariableDeclarationCS ::= variableNameCS
+ //
+ case 81: {
+
+ SimpleNameCS name = (SimpleNameCS) dtParser.getSym(1);
+ CSTNode result = createVariableCS(name, null, null);
+ setOffsets(result, name);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 83: VariableDeclarationCS ::= typedVariableCS =
+ // OclExpressionCS
+ //
+ case 83: {
+
+ VariableCS result = (VariableCS) dtParser.getSym(1);
+ OCLExpressionCS initExpression = (OCLExpressionCS) dtParser.getSym(3);
+ result.setInitExpression(initExpression);
+ setOffsets(result, result, initExpression);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 84: variableDeclarationListCS ::= VariableDeclarationCS
+ //
+ case 84: {
+
+ EList result = new BasicEList();
+ result.add(dtParser.getSym(1));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 85: variableDeclarationListCS ::= variableDeclarationListCS
+ // , VariableDeclarationCS
+ //
+ case 85: {
+
+ EList result = (EList) dtParser.getSym(1);
+ result.add(dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 86: variableDeclarationListCSopt ::= $Empty
+ //
+ case 86:
+ dtParser.setSym1(new BasicEList());
+ break;
+
+ //
+ // Rule 88: BooleanLiteralExpCS ::= false
+ //
+ case 88: {
+
+ CSTNode result = createBooleanLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 89: BooleanLiteralExpCS ::= true
+ //
+ case 89: {
+
+ CSTNode result = createBooleanLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 90: IntegerLiteralExpCS ::= INTEGER_LITERAL
+ //
+ case 90: {
+
+ CSTNode result = createIntegerLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 91: InvalidLiteralExpCS ::= invalid
+ //
+ case 91: {
+
+ CSTNode result = createInvalidLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 92: NullLiteralExpCS ::= null
+ //
+ case 92: {
+
+ CSTNode result = createNullLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 93: RealLiteralExpCS ::= REAL_LITERAL
+ //
+ case 93: {
+
+ CSTNode result = createRealLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 94: StringLiteralExpCS ::= STRING_LITERAL
+ //
+ case 94: {
+
+ IToken literalToken = getIToken(dtParser.getToken(1));
+ StringLiteralExpCS result = createStringLiteralExpCS(literalToken.toString());
+ result.setUnescapedStringSymbol(unescape(literalToken));
+ setOffsets(result, literalToken);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 95: UnlimitedNaturalLiteralExpCS ::= *
+ //
+ case 95: {
+
+ CSTNode result = createUnlimitedNaturalLiteralExpCS(getTokenText(dtParser.getToken(1)));
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 101: CollectionLiteralExpCS ::= CollectionTypeIdentifierCS {
+ // CollectionLiteralPartsCSopt }
+ //
+ case 101: {
+
+ CollectionTypeCS typeCS = (CollectionTypeCS) dtParser.getSym(1);
+ CSTNode result = createCollectionLiteralExpCS(typeCS, (EList) dtParser.getSym(3));
+ setOffsets(result, typeCS, getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 102: CollectionRangeCS ::= OclExpressionCS ..
+ // OclExpressionCS
+ //
+ case 102: {
+
+ CSTNode result = createCollectionRangeCS((OCLExpressionCS) dtParser.getSym(1), (OCLExpressionCS) dtParser.getSym(3));
+ setOffsets(result, (CSTNode) dtParser.getSym(1), (CSTNode) dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 104: CollectionLiteralPartCS ::= OclExpressionCS
+ //
+ case 104: {
+
+ CSTNode result = createCollectionLiteralPartCS((OCLExpressionCS) dtParser.getSym(1));
+ setOffsets(result, (CSTNode) dtParser.getSym(1));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 105: CollectionLiteralPartsCS ::= CollectionLiteralPartCS
+ //
+ case 105: {
+
+ EList result = new BasicEList();
+ result.add(dtParser.getSym(1));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 106: CollectionLiteralPartsCS ::= CollectionLiteralPartsCS ,
+ // CollectionLiteralPartCS
+ //
+ case 106: {
+
+ EList result = (EList) dtParser.getSym(1);
+ result.add(dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 107: CollectionLiteralPartsCSopt ::= $Empty
+ //
+ case 107:
+ dtParser.setSym1(new BasicEList());
+ break;
+
+ //
+ // Rule 109: TupleLiteralExpCS ::= Tuple { TupleLiteralPartsCS }
+ //
+ case 109: {
+
+ CSTNode result = createTupleLiteralExpCS((EList) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 110: TupleLiteralPartCS ::= variableNameCS = OclExpressionCS
+ //
+ case 110: {
+
+ SimpleNameCS name = (SimpleNameCS) dtParser.getSym(1);
+ OCLExpressionCS initExpression = (OCLExpressionCS) dtParser.getSym(3);
+ VariableCS result = createVariableCS(name, null, initExpression);
+ setOffsets(result, name, initExpression);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 111: TupleLiteralPartCS ::= typedVariableCS =
+ // OclExpressionCS
+ //
+ case 111: {
+
+ VariableCS result = (VariableCS) dtParser.getSym(1);
+ OCLExpressionCS initExpression = (OCLExpressionCS) dtParser.getSym(3);
+ result.setInitExpression(initExpression);
+ setOffsets(result, result, initExpression);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 112: TupleLiteralPartsCS ::= TupleLiteralPartCS
+ //
+ case 112: {
+
+ EList result = new BasicEList();
+ result.add(dtParser.getSym(1));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 113: TupleLiteralPartsCS ::= TupleLiteralPartsCS ,
+ // TupleLiteralPartCS
+ //
+ case 113: {
+
+ EList result = (EList) dtParser.getSym(1);
+ result.add(dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 119: OperationCallExpCS ::= primaryExpCS ->
+ // notIteratorNorReservedSimpleNameCS isMarkedPreCSopt (
+ // argumentsCSopt )
+ //
+ case 119: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ CSTNode result = createArrowOperationCallExpCS(source, (SimpleNameCS) dtParser.getSym(3), (IsMarkedPreCS) dtParser.getSym(4), (EList) dtParser.getSym(6));
+ setOffsets(result, source, getIToken(dtParser.getToken(7)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 120: OperationCallExpCS ::= primaryExpCS . binaryKeywordCS
+ // isMarkedPreCSopt ( argumentsCSopt )
+ //
+ case 120:
+
+ //
+ // Rule 121: OperationCallExpCS ::= primaryExpCS . unaryKeywordCS
+ // isMarkedPreCSopt ( argumentsCSopt )
+ //
+ case 121:
+
+ //
+ // Rule 122: OperationCallExpCS ::= primaryExpCS .
+ // reservedPunctuationCS isMarkedPreCSopt ( argumentsCSopt )
+ //
+ case 122:
+
+ //
+ // Rule 123: OperationCallExpCS ::= primaryExpCS .
+ // notReservedSimpleNameCS isMarkedPreCSopt ( argumentsCSopt )
+ //
+ case 123: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ CSTNode result = createDotOperationCallExpCS(source, null, (SimpleNameCS) dtParser.getSym(3), (IsMarkedPreCS) dtParser.getSym(4), (EList) dtParser.getSym(6));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(7)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 124: OperationCallExpCS ::= literalSimpleNameCS
+ // isMarkedPreCSopt ( argumentsCSopt )
+ //
+ case 124:
+
+ //
+ // Rule 125: OperationCallExpCS ::=
+ // notLiteralNorReservedSimpleNameCS isMarkedPreCSopt (
+ // argumentsCSopt )
+ //
+ case 125: {
+
+ CSTNode result = createDotOperationCallExpCS(null, null, (SimpleNameCS) dtParser.getSym(1), (IsMarkedPreCS) dtParser.getSym(2), (EList) dtParser.getSym(4));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 126: OperationCallExpCS ::= qualifiedPathNameCS (
+ // argumentsCSopt )
+ //
+ case 126: {
+
+ PathNameCS pathNameCS = (PathNameCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
+ OperationCallExpCS result = createDotOperationCallExpCS(null, pathNameCS, simpleNameCS, null, (EList) dtParser.getSym(3));
+ setOffsets(result, pathNameCS, getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 127: OperationCallExpCS ::= primaryExpCS .
+ // qualifiedPathNameCS isMarkedPreCSopt ( argumentsCSopt )
+ //
+ case 127: {
+
+ PathNameCS pathNameCS = (PathNameCS) dtParser.getSym(3);
+ SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ CallExpCS result = createDotOperationCallExpCS(source, pathNameCS, simpleNameCS, (IsMarkedPreCS) dtParser.getSym(4), (EList) dtParser.getSym(6));
+ setOffsets(result, source, getIToken(dtParser.getToken(7)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 128: argumentsCS ::= OclExpressionCS
+ //
+ case 128: {
+
+ EList result = new BasicEList();
+ result.add(dtParser.getSym(1));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 129: argumentsCS ::= argumentsCS , OclExpressionCS
+ //
+ case 129: {
+
+ EList result = (EList) dtParser.getSym(1);
+ result.add(dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 130: argumentsCSopt ::= $Empty
+ //
+ case 130:
+ dtParser.setSym1(new BasicEList());
+ break;
+
+ //
+ // Rule 132: isMarkedPreCSopt ::= $Empty
+ //
+ case 132: {
+
+ dtParser.setSym1(null);
+ break;
+ }
+
+ //
+ // Rule 133: PropertyCallExpCS ::= primaryExpCS .
+ // notReservedSimpleNameCS isMarkedPreCSopt
+ //
+ case 133: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS) dtParser.getSym(4);
+ CSTNode result = createFeatureCallExpCS(source, null, simpleNameCS, new BasicEList(), isMarkedPreCS);
+ if (isMarkedPreCS != null) {
+ setOffsets(result, source, isMarkedPreCS);
+ } else {
+ setOffsets(result, source, simpleNameCS);
}
-
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 214: LetExpCS ::= let letExpSubCS3 in OclExpressionCS
+ // Rule 134: PropertyCallExpCS ::= primaryExpCS .
+ // qualifiedPathNameCS isMarkedPreCSopt
//
- case 214: {
-
- EList variables = (EList)dtParser.getSym(2);
- CSTNode result = createLetExpCS(
- variables,
- (OCLExpressionCS)dtParser.getSym(4)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(4));
- dtParser.setSym1(result);
- break;
+ case 134: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ PathNameCS pathNameCS = (PathNameCS) dtParser.getSym(3);
+ SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS) dtParser.getSym(4);
+ CSTNode result = createFeatureCallExpCS(source, pathNameCS, simpleNameCS, new BasicEList(), isMarkedPreCS);
+ if (isMarkedPreCS != null) {
+ setOffsets(result, source, isMarkedPreCS);
+ } else {
+ setOffsets(result, source, simpleNameCS);
}
-
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 215: LetExpCS ::= let letExpSubCS3 in qvtErrorToken
+ // Rule 135: PropertyCallExpCS ::= qualifiedPathNameCS
+ // isMarkedPreCSopt
//
- case 215: {
-
- EList variables = (EList)dtParser.getSym(2);
- CSTNode result = createLetExpCS(
- variables,
- createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, "") //$NON-NLS-1$
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
- dtParser.setSym1(result);
- break;
+ case 135: {
+
+ PathNameCS pathNameCS = (PathNameCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = removeLastSimpleNameCS(pathNameCS);
+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS) dtParser.getSym(2);
+ CSTNode result = createFeatureCallExpCS(null, pathNameCS, simpleNameCS, new BasicEList(), isMarkedPreCS);
+ if (isMarkedPreCS != null) {
+ setOffsets(result, pathNameCS, isMarkedPreCS);
+ } else {
+ setOffsets(result, pathNameCS, simpleNameCS);
}
-
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 216: CallExpCS ::= . qvtErrorToken
+ // Rule 136: AssociationClassCallExpCS ::=
+ // notLiteralNorReservedSimpleNameCS isMarkedPreCSopt
//
- case 216: {
-
- CallExpCS result = TempFactory.eINSTANCE.createErrorCallExpCS();
- result.setAccessor(DotOrArrowEnum.DOT_LITERAL);
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
+ case 136: {
+
+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS) dtParser.getSym(2);
+ CSTNode result = createVariableExpCS((SimpleNameCS) dtParser.getSym(1), new BasicEList(), isMarkedPreCS);
+ if (isMarkedPreCS != null) {
+ setOffsets(result, (CSTNode) dtParser.getSym(1), (CSTNode) dtParser.getSym(2));
+ } else {
+ setOffsets(result, (CSTNode) dtParser.getSym(1));
}
-
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 217: CallExpCS ::= -> qvtErrorToken
+ // Rule 140: IterateExpCS ::= primaryExpCS -> iterateNameCS (
+ // VariableDeclarationCS | OclExpressionCS )
//
- case 217: {
-
- CallExpCS result = TempFactory.eINSTANCE.createErrorCallExpCS();
- result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
+ case 140: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ CSTNode result = createIterateExpCS(source, simpleNameCS, (VariableCS) dtParser.getSym(5), null, (OCLExpressionCS) dtParser.getSym(7));
+ setOffsets(result, source, getIToken(dtParser.getToken(8)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 141: IterateExpCS ::= primaryExpCS -> iterateNameCS (
+ // VariableDeclarationCS ; VariableDeclarationCS | OclExpressionCS )
+ //
+ case 141: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ CSTNode result = createIterateExpCS(source, simpleNameCS, (VariableCS) dtParser.getSym(5), (VariableCS) dtParser.getSym(7), (OCLExpressionCS) dtParser.getSym(9));
+ setOffsets(result, source, getIToken(dtParser.getToken(10)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 142: IteratorExpCS ::= primaryExpCS -> iteratorNameCS (
+ // OclExpressionCS )
+ //
+ case 142: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ CSTNode result = createIteratorExpCS(source, simpleNameCS, null, null, (OCLExpressionCS) dtParser.getSym(5));
+ setOffsets(result, source, getIToken(dtParser.getToken(6)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 143: IteratorExpCS ::= primaryExpCS -> iteratorNameCS (
+ // VariableDeclarationCS | OclExpressionCS )
+ //
+ case 143: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ CSTNode result = createIteratorExpCS(source, simpleNameCS, (VariableCS) dtParser.getSym(5), null, (OCLExpressionCS) dtParser.getSym(7));
+ setOffsets(result, source, getIToken(dtParser.getToken(8)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 144: IteratorExpCS ::= primaryExpCS -> iteratorNameCS (
+ // VariableDeclarationCS , VariableDeclarationCS | OclExpressionCS )
+ //
+ case 144: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ CSTNode result = createIteratorExpCS(source, simpleNameCS, (VariableCS) dtParser.getSym(5), (VariableCS) dtParser.getSym(7), (OCLExpressionCS) dtParser.getSym(9));
+ setOffsets(result, source, getIToken(dtParser.getToken(10)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 149: LetExpCS ::= let variableDeclarationListCS in
+ // OclExpressionCS
+ //
+ case 149: {
+
+ OCLExpressionCS expr = (OCLExpressionCS) dtParser.getSym(4);
+ CSTNode result = createLetExpCS((EList) dtParser.getSym(2), expr);
+ setOffsets(result, getIToken(dtParser.getToken(1)), expr);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 154: impliesExpCS ::= impliesExpCS implies xorExpCS
+ //
+ case 154:
+
+ //
+ // Rule 155: impliesLetCS ::= impliesExpCS implies xorLetCS
+ //
+ case 155:
+
+ //
+ // Rule 158: xorExpCS ::= xorExpCS xor orExpCS
+ //
+ case 158:
+
+ //
+ // Rule 159: xorLetCS ::= xorExpCS xor orLetCS
+ //
+ case 159:
+
+ //
+ // Rule 162: orExpCS ::= orExpCS or andExpCS
+ //
+ case 162:
+
+ //
+ // Rule 163: orLetCS ::= orExpCS or andLetCS
+ //
+ case 163:
+
+ //
+ // Rule 166: andExpCS ::= andExpCS and equalityExpCS
+ //
+ case 166:
+
+ //
+ // Rule 167: andLetCS ::= andExpCS and equalityLetCS
+ //
+ case 167:
+
+ //
+ // Rule 170: equalityExpCS ::= equalityExpCS = relationalExpCS
+ //
+ case 170:
+
+ //
+ // Rule 171: equalityLetCS ::= equalityExpCS = relationalLetCS
+ //
+ case 171:
+
+ //
+ // Rule 172: equalityExpCS ::= equalityExpCS <> relationalExpCS
+ //
+ case 172:
+
+ //
+ // Rule 173: equalityLetCS ::= equalityExpCS <> relationalLetCS
+ //
+ case 173:
+
+ //
+ // Rule 176: relationalExpCS ::= relationalExpCS > additiveExpCS
+ //
+ case 176:
+
+ //
+ // Rule 177: relationalLetCS ::= relationalExpCS > additiveLetCS
+ //
+ case 177:
+
+ //
+ // Rule 178: relationalExpCS ::= relationalExpCS < additiveExpCS
+ //
+ case 178:
+
+ //
+ // Rule 179: relationalLetCS ::= relationalExpCS < additiveLetCS
+ //
+ case 179:
+
+ //
+ // Rule 180: relationalExpCS ::= relationalExpCS >= additiveExpCS
+ //
+ case 180:
+
+ //
+ // Rule 181: relationalLetCS ::= relationalExpCS >= additiveLetCS
+ //
+ case 181:
+
+ //
+ // Rule 182: relationalExpCS ::= relationalExpCS <= additiveExpCS
+ //
+ case 182:
+
+ //
+ // Rule 183: relationalLetCS ::= relationalExpCS <= additiveLetCS
+ //
+ case 183:
+
+ //
+ // Rule 186: additiveExpCS ::= additiveExpCS + multiplicativeExpCS
+ //
+ case 186:
+
+ //
+ // Rule 187: additiveLetCS ::= additiveExpCS + multiplicativeLetCS
+ //
+ case 187:
+
+ //
+ // Rule 188: additiveExpCS ::= additiveExpCS - multiplicativeExpCS
+ //
+ case 188:
+
+ //
+ // Rule 189: additiveLetCS ::= additiveExpCS - multiplicativeLetCS
+ //
+ case 189:
+
+ //
+ // Rule 192: multiplicativeExpCS ::= multiplicativeExpCS *
+ // unaryExpCS
+ //
+ case 192:
+
+ //
+ // Rule 193: multiplicativeLetCS ::= multiplicativeExpCS *
+ // unaryLetCS
+ //
+ case 193:
+
+ //
+ // Rule 194: multiplicativeExpCS ::= multiplicativeExpCS /
+ // unaryExpCS
+ //
+ case 194:
+
+ //
+ // Rule 195: multiplicativeLetCS ::= multiplicativeExpCS /
+ // unaryLetCS
+ //
+ case 195: {
+
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.STRING_LITERAL, getTokenText(dtParser.getToken(2)));
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(2)));
+ OCLExpressionCS left = (OCLExpressionCS) dtParser.getSym(1);
+ OCLExpressionCS right = (OCLExpressionCS) dtParser.getSym(3);
+ EList args = new BasicEList();
+ args.add(right);
+ CSTNode result = createOperationCallExpCS(left, simpleNameCS, args);
+ setOffsets(result, left, right);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 198: unaryExpCS ::= - unaryExpCS
+ //
+ case 198:
+
+ //
+ // Rule 199: unaryLetCS ::= - unaryLetCS
+ //
+ case 199:
+
+ //
+ // Rule 200: unaryExpCS ::= not unaryExpCS
+ //
+ case 200:
+
+ //
+ // Rule 201: unaryLetCS ::= not unaryLetCS
+ //
+ case 201: {
+
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.STRING_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(1)));
+ OCLExpressionCS expr = (OCLExpressionCS) dtParser.getSym(2);
+ CSTNode result = createOperationCallExpCS(expr, simpleNameCS, new BasicEList());
+ setOffsets(result, simpleNameCS, expr);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 205: primaryExpCS ::= ( OclExpressionCS )
+ //
+ case 205: {
+
+ CSTNode result = (CSTNode) dtParser.getSym(2);
+ if (result instanceof OperationCallExpCS) {
+ ((OperationCallExpCS) result).setIsAtomic(true);
}
-
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 218: argumentsCS ::= qvtErrorToken
+ // Rule 208: declarator1 ::= IDENTIFIER : typeCS
//
- case 218:
- dtParser.setSym1(new BasicEList());
- break;
-
+ case 208: {
+
+ CSTNode result = createVariableCS(getTokenText(dtParser.getToken(1)), (TypeCS) dtParser.getSym(3), null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 220: IteratorExpCS ::= primaryExpCS -> iteratorNameCS ( qvtErrorToken
+ // Rule 209: declarator1 ::= IDENTIFIER : typeCS = OclExpressionCS
//
- case 220: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS simpleNameCS = (SimpleNameCS)dtParser.getSym(3);
- CSTNode result = createIteratorExpCS(
- source,
- simpleNameCS,
- null,
- null,
- null
- );
- setOffsets(result, source, getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
+ case 209: {
+
+ CSTNode result = createVariableCS(getTokenText(dtParser.getToken(1)), (TypeCS) dtParser.getSym(3), (OCLExpressionCS) dtParser.getSym(5));
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(5));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 210: declarator1 ::= IDENTIFIER : typeCS := OclExpressionCS
+ //
+ case 210: {
+
+ CSTNode result = createVariableCS(getTokenText(dtParser.getToken(1)), (TypeCS) dtParser.getSym(3), (OCLExpressionCS) dtParser.getSym(5));
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(5));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 211: declarator2 ::= IDENTIFIER := OclExpressionCS
+ //
+ case 211: {
+
+ CSTNode result = createVariableCS(getTokenText(dtParser.getToken(1)), null, (OCLExpressionCS) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 212: letExpSubCS3 ::= variableNameCS = OclExpressionCS
+ //
+ case 212: {
+
+ SimpleNameCS name = (SimpleNameCS) dtParser.getSym(1);
+ OCLExpressionCS initExpression = (OCLExpressionCS) dtParser.getSym(3);
+ VariableCS variableCS = createVariableCS(name, null, initExpression);
+ setOffsets(variableCS, name, initExpression);
+
+ EList result = new BasicEList();
+ result.add(variableCS);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 213: letExpSubCS3 ::= letExpSubCS3 , TupleLiteralPartCS
+ //
+ case 213: {
+
+ EList result = (EList) dtParser.getSym(1);
+ result.add(dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 214: LetExpCS ::= let letExpSubCS3 in OclExpressionCS
+ //
+ case 214: {
+
+ EList variables = (EList) dtParser.getSym(2);
+ CSTNode result = createLetExpCS(variables, (OCLExpressionCS) dtParser.getSym(4));
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(4));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 215: LetExpCS ::= let letExpSubCS3 in qvtErrorToken
+ //
+ case 215: {
+
+ EList variables = (EList) dtParser.getSym(2);
+ CSTNode result = createLetExpCS(variables, createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, "") //$NON-NLS-1$
+ );
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 216: CallExpCS ::= . qvtErrorToken
+ //
+ case 216: {
+
+ CallExpCS result = TempFactory.eINSTANCE.createErrorCallExpCS();
+ result.setAccessor(DotOrArrowEnum.DOT_LITERAL);
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 217: CallExpCS ::= -> qvtErrorToken
+ //
+ case 217: {
+
+ CallExpCS result = TempFactory.eINSTANCE.createErrorCallExpCS();
+ result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 218: argumentsCS ::= qvtErrorToken
+ //
+ case 218:
+ dtParser.setSym1(new BasicEList());
+ break;
+
+ //
+ // Rule 220: IteratorExpCS ::= primaryExpCS -> iteratorNameCS (
+ // qvtErrorToken
+ //
+ case 220: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS simpleNameCS = (SimpleNameCS) dtParser.getSym(3);
+ CSTNode result = createIteratorExpCS(source, simpleNameCS, null, null, null);
+ setOffsets(result, source, getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 221: qvtErrorToken ::= ERROR_TOKEN
+ //
+ case 221: {
+
+ diagnozeErrorToken(dtParser.getToken(1));
+ break;
+ }
+
+ //
+ // Rule 222: equalityExpCS ::= equalityExpCS != relationalExpCS
+ //
+ case 222:
+
+ //
+ // Rule 223: equalityLetCS ::= equalityExpCS != relationalLetCS
+ //
+ case 223: {
+
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.STRING_LITERAL, OCLStandardLibraryUtil.getOperationName(PredefinedType.NOT_EQUAL));
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(2)));
+ EList args = new BasicEList();
+ args.add(dtParser.getSym(3));
+ CSTNode result = createOperationCallExpCS((OCLExpressionCS) dtParser.getSym(1), simpleNameCS, args);
+ setOffsets(result, (CSTNode) dtParser.getSym(1), (CSTNode) dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 224: StringLiteralExpCS ::= StringLiteralExpCS
+ // STRING_LITERAL
+ //
+ case 224: {
+
+ IToken literalToken = getIToken(dtParser.getToken(2));
+ StringLiteralExpCS result = (StringLiteralExpCS) dtParser.getSym(1);
+ result.setSymbol(result.getSymbol() + literalToken.toString());
+ result.setStringSymbol(result.getStringSymbol() + literalToken.toString());
+ result.setUnescapedStringSymbol(result.getUnescapedStringSymbol() + unescape(literalToken));
+ int tokenLine = literalToken.getLine();
+ setOffsets(result, result, literalToken);
+ IToken prevToken = getParseStream().getTokenAt(literalToken.getTokenIndex() - 1);
+ int prevTokenLine = prevToken.getLine();
+ if (prevTokenLine == tokenLine) {
+ reportError(lpg.lpgjavaruntime.ParseErrorCodes.INVALID_CODE,
+ "", prevToken.getTokenIndex(), literalToken.getTokenIndex(), "Multiline string literals must be located in different lines!"); //$NON-NLS-1$ //$NON-NLS-2$
}
-
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 221: qvtErrorToken ::= ERROR_TOKEN
+ // Rule 226: listTypeCS ::= List ( typeCS )
//
- case 221: {
-
- diagnozeErrorToken(dtParser.getToken(1));
- break;
+ case 226: {
+
+ CSTNode result = createListTypeCS((TypeCS) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 227: listLiteralCS ::= List { CollectionLiteralPartsCSopt }
+ //
+ case 227: {
+
+ CSTNode result = createListLiteralExpCS((EList) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 229: dictTypeCS ::= Dict ( typeCS , typeCS )
+ //
+ case 229: {
+
+ CSTNode result = createDictTypeCS((TypeCS) dtParser.getSym(3), (TypeCS) dtParser.getSym(5));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(6)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 230: dictLiteralCS ::= Dict { dictLiteralPartListCSopt }
+ //
+ case 230: {
+
+ CSTNode result = createDictLiteralExpCS((EList<DictLiteralPartCS>) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 235: dictLiteralPartCS ::= literalSimpleCS = OclExpressionCS
+ //
+ case 235: {
+
+ CSTNode result = createDictLiteralPartCS((LiteralExpCS) dtParser.getSym(1), (OCLExpressionCS) dtParser.getSym(3));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 237: dictLiteralPartListCSopt ::= $Empty
+ //
+ case 237:
+ dtParser.setSym1(new BasicEList());
+ break;
+
+ //
+ // Rule 238: dictLiteralPartListCS ::= dictLiteralPartCS
+ //
+ case 238: {
+
+ EList result = new BasicEList();
+ result.add(dtParser.getSym(1));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 239: dictLiteralPartListCS ::= dictLiteralPartListCS ,
+ // dictLiteralPartCS
+ //
+ case 239: {
+
+ EList result = (EList) dtParser.getSym(1);
+ result.add(dtParser.getSym(3));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 240: dictLiteralPartListCS ::= dictLiteralPartListCS
+ // qvtErrorToken
+ //
+ case 240: {
+
+ EList result = (EList) dtParser.getSym(1);
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 242: IfExpCS ::= if OclExpressionCS then ifExpBodyCS else
+ // ifExpBodyCS endif
+ //
+ case 242: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), (OCLExpressionCS) dtParser.getSym(4), (OCLExpressionCS) dtParser.getSym(6));
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(7)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 243: IfExpCS ::= if OclExpressionCS then ifExpBodyCS endif
+ //
+ case 243: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), (OCLExpressionCS) dtParser.getSym(4), null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 244: IfExpCS ::= if OclExpressionCS then ifExpBodyCS else
+ // ifExpBodyCS qvtErrorToken
+ //
+ case 244: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), (OCLExpressionCS) dtParser.getSym(4), (OCLExpressionCS) dtParser.getSym(6));
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(6));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 245: IfExpCS ::= if OclExpressionCS then ifExpBodyCS else
+ // qvtErrorToken
+ //
+ case 245: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), (OCLExpressionCS) dtParser.getSym(4), null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 246: IfExpCS ::= if OclExpressionCS then ifExpBodyCS
+ // qvtErrorToken
+ //
+ case 246: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), (OCLExpressionCS) dtParser.getSym(4), null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(4));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 247: IfExpCS ::= if OclExpressionCS then qvtErrorToken
+ //
+ case 247: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), null, null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 248: IfExpCS ::= if OclExpressionCS qvtErrorToken
+ //
+ case 248: {
+
+ CSTNode result = createIfExpCS((OCLExpressionCS) dtParser.getSym(2), null, null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode) dtParser.getSym(2));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 249: IfExpCS ::= if qvtErrorToken
+ //
+ case 249: {
+
+ OCLExpressionCS invalidCondition = createInvalidLiteralExpCS(""); //$NON-NLS-1$
+ invalidCondition.setStartOffset(getIToken(dtParser.getToken(1)).getEndOffset());
+ invalidCondition.setEndOffset(getIToken(dtParser.getToken(1)).getEndOffset());
+ CSTNode result = createIfExpCS(invalidCondition, null, null);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 250: IterateExpCS ::= primaryExpCS -> imperativeIterateExpCS
+ //
+ case 250: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ ImperativeIterateExpCS iterateExpCS = (ImperativeIterateExpCS) dtParser.getSym(3);
+ iterateExpCS.setSource(source);
+ setOffsets(iterateExpCS, source, iterateExpCS);
+ dtParser.setSym1(iterateExpCS);
+ break;
+ }
+
+ //
+ // Rule 259: imperativeIterateExpCS ::=
+ // imperativeIteratorExpCSToken12 ( imperativeIterContents12 )
+ //
+ case 259:
+
+ //
+ // Rule 260: imperativeIterateExpCS ::=
+ // imperativeIteratorExpCSToken3 ( imperativeIterContents3 )
+ //
+ case 260: {
+
+ String opCode = getTokenText(dtParser.getToken(1));
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.KEYWORD_LITERAL, opCode);
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(1)));
+ Object[] iterContents = (Object[]) dtParser.getSym(3);
+ OCLExpressionCS bodyCS = null;
+ OCLExpressionCS conditionCS = null;
+ if ("xcollect".equals(opCode) || "collectOne".equals(opCode)) { //$NON-NLS-1$ //$NON-NLS-2$
+ bodyCS = (OCLExpressionCS) iterContents[2];
+ } else {
+ conditionCS = (OCLExpressionCS) iterContents[2];
}
-
+ CSTNode result = createImperativeIterateExpCS(simpleNameCS, (EList<VariableCS>) iterContents[0], (VariableCS) iterContents[1], bodyCS, conditionCS);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 222: equalityExpCS ::= equalityExpCS != relationalExpCS
+ // Rule 261: imperativeIterateExpCS ::= imperativeIteratorExpCSToken
+ // qvtErrorToken
//
- case 222:
-
+ case 261: {
+
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.KEYWORD_LITERAL, getTokenText(dtParser.getToken(1)));
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(1)));
+ CSTNode result = createImperativeIterateExpCS(simpleNameCS, ourEmptyEList, null, null, null);
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
//
- // Rule 223: equalityLetCS ::= equalityExpCS != relationalLetCS
+ // Rule 262: imperativeIterContents12 ::= OclExpressionCS
//
- case 223: {
-
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.STRING_LITERAL,
- OCLStandardLibraryUtil.getOperationName(PredefinedType.NOT_EQUAL)
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(2)));
- EList args = new BasicEList();
- args.add(dtParser.getSym(3));
- CSTNode result = createOperationCallExpCS(
- (OCLExpressionCS)dtParser.getSym(1),
- simpleNameCS,
- args
- );
- setOffsets(result, (CSTNode)dtParser.getSym(1), (CSTNode)dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
+ case 262: {
+
+ dtParser.setSym1(new Object[] { ourEmptyEList, null, dtParser.getSym(1) });
+ break;
+ }
+
//
- // Rule 224: StringLiteralExpCS ::= StringLiteralExpCS STRING_LITERAL
+ // Rule 263: imperativeIterContents12 ::= variableDeclarationListCS
+ // | OclExpressionCS
//
- case 224: {
-
- IToken literalToken = getIToken(dtParser.getToken(2));
- StringLiteralExpCS result = (StringLiteralExpCS) dtParser.getSym(1);
- result.setSymbol(result.getSymbol() + literalToken.toString());
- result.setStringSymbol(result.getStringSymbol() + literalToken.toString());
- result.setUnescapedStringSymbol(result.getUnescapedStringSymbol() + unescape(literalToken));
- int tokenLine = literalToken.getLine();
- setOffsets(result, result, literalToken);
- IToken prevToken = getParseStream().getTokenAt(literalToken.getTokenIndex() - 1);
- int prevTokenLine = prevToken.getLine();
- if (prevTokenLine == tokenLine) {
- reportError(lpg.lpgjavaruntime.ParseErrorCodes.INVALID_CODE, "", prevToken.getTokenIndex(), literalToken.getTokenIndex(), "Multiline string literals must be located in different lines!"); //$NON-NLS-1$ //$NON-NLS-2$
+ case 263: {
+
+ dtParser.setSym1(new Object[] { dtParser.getSym(1), null, dtParser.getSym(3) });
+ break;
+ }
+
+ //
+ // Rule 264: imperativeIterContents3 ::= variableDeclarationListCS ;
+ // TupleLiteralPartCS | OclExpressionCS
+ //
+ case 264: {
+
+ dtParser.setSym1(new Object[] { dtParser.getSym(1), dtParser.getSym(3), dtParser.getSym(5) });
+ break;
+ }
+
+ //
+ // Rule 265: exclamationOpt ::= $Empty
+ //
+ case 265:
+ dtParser.setSym1(null);
+ break;
+
+ //
+ // Rule 267: declarator_vsep ::= IDENTIFIER |
+ //
+ case 267: {
+
+ CSTNode result = createVariableCS(getTokenText(dtParser.getToken(1)), null, null);
+ setOffsets(result, getIToken(dtParser.getToken(1)));
+ dtParser.setSym1(result);
+ break;
+ }
+
+ //
+ // Rule 268: declarator_vsepOpt ::= $Empty
+ //
+ case 268:
+ dtParser.setSym1(null);
+ break;
+
+ //
+ // Rule 270: IterateExpCS ::= primaryExpCS exclamationOpt [
+ // declarator_vsepOpt OclExpressionCS ]
+ //
+ case 270: {
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ if (source instanceof ImperativeIterateExpCS) {
+ String opCode = isTokenOfType(getIToken(dtParser.getToken(2)), XpandParsersym.TK_EXCLAMATION_MARK) ? "collectselectOne" : "collectselect"; //$NON-NLS-1$ //$NON-NLS-2$
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.KEYWORD_LITERAL, opCode);
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(3)), getIToken(dtParser.getToken(6)));
+
+ ImperativeIterateExpCS result = (ImperativeIterateExpCS) source;
+ result.setSimpleNameCS(simpleNameCS);
+
+ VariableCS variableCS = (VariableCS) dtParser.getSym(4);
+ if (variableCS != null) {
+ result.setTarget(variableCS);
}
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 226: listTypeCS ::= List ( typeCS )
- //
- case 226: {
-
- CSTNode result = createListTypeCS(
- (TypeCS)dtParser.getSym(3)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 227: listLiteralCS ::= List { CollectionLiteralPartsCSopt }
- //
- case 227: {
-
- CSTNode result = createListLiteralExpCS((EList)dtParser.getSym(3));
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 229: dictTypeCS ::= Dict ( typeCS , typeCS )
- //
- case 229: {
-
- CSTNode result = createDictTypeCS((TypeCS)dtParser.getSym(3), (TypeCS)dtParser.getSym(5));
+ result.setCondition((OCLExpressionCS) dtParser.getSym(5));
+
setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(6)));
dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 230: dictLiteralCS ::= Dict { dictLiteralPartListCSopt }
- //
- case 230: {
-
- CSTNode result = createDictLiteralExpCS((EList<DictLiteralPartCS>)dtParser.getSym(3));
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 235: dictLiteralPartCS ::= literalSimpleCS = OclExpressionCS
- //
- case 235: {
-
- CSTNode result = createDictLiteralPartCS((LiteralExpCS)dtParser.getSym(1), (OCLExpressionCS)dtParser.getSym(3));
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 237: dictLiteralPartListCSopt ::= $Empty
- //
- case 237:
- dtParser.setSym1(new BasicEList());
- break;
-
- //
- // Rule 238: dictLiteralPartListCS ::= dictLiteralPartCS
- //
- case 238: {
-
- EList result = new BasicEList();
- result.add(dtParser.getSym(1));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 239: dictLiteralPartListCS ::= dictLiteralPartListCS , dictLiteralPartCS
- //
- case 239: {
-
- EList result = (EList)dtParser.getSym(1);
- result.add(dtParser.getSym(3));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 240: dictLiteralPartListCS ::= dictLiteralPartListCS qvtErrorToken
- //
- case 240: {
-
- EList result = (EList)dtParser.getSym(1);
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 242: IfExpCS ::= if OclExpressionCS then ifExpBodyCS else ifExpBodyCS endif
- //
- case 242: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- (OCLExpressionCS)dtParser.getSym(4),
- (OCLExpressionCS)dtParser.getSym(6)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(7)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 243: IfExpCS ::= if OclExpressionCS then ifExpBodyCS endif
- //
- case 243: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- (OCLExpressionCS)dtParser.getSym(4),
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 244: IfExpCS ::= if OclExpressionCS then ifExpBodyCS else ifExpBodyCS qvtErrorToken
- //
- case 244: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- (OCLExpressionCS)dtParser.getSym(4),
- (OCLExpressionCS)dtParser.getSym(6)
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(6));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 245: IfExpCS ::= if OclExpressionCS then ifExpBodyCS else qvtErrorToken
- //
- case 245: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- (OCLExpressionCS)dtParser.getSym(4),
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 246: IfExpCS ::= if OclExpressionCS then ifExpBodyCS qvtErrorToken
- //
- case 246: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- (OCLExpressionCS)dtParser.getSym(4),
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(4));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 247: IfExpCS ::= if OclExpressionCS then qvtErrorToken
- //
- case 247: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- null,
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 248: IfExpCS ::= if OclExpressionCS qvtErrorToken
- //
- case 248: {
-
- CSTNode result = createIfExpCS(
- (OCLExpressionCS)dtParser.getSym(2),
- null,
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), (CSTNode)dtParser.getSym(2));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 249: IfExpCS ::= if qvtErrorToken
- //
- case 249: {
-
- OCLExpressionCS invalidCondition = createInvalidLiteralExpCS(""); //$NON-NLS-1$
- invalidCondition.setStartOffset(getIToken(dtParser.getToken(1)).getEndOffset());
- invalidCondition.setEndOffset(getIToken(dtParser.getToken(1)).getEndOffset());
- CSTNode result = createIfExpCS(
- invalidCondition,
- null,
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 250: IterateExpCS ::= primaryExpCS -> imperativeIterateExpCS
- //
- case 250: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- ImperativeIterateExpCS iterateExpCS = (ImperativeIterateExpCS) dtParser.getSym(3);
- iterateExpCS.setSource(source);
- setOffsets(iterateExpCS, source, iterateExpCS);
- dtParser.setSym1(iterateExpCS);
- break;
- }
-
- //
- // Rule 259: imperativeIterateExpCS ::= imperativeIteratorExpCSToken12 ( imperativeIterContents12 )
- //
- case 259:
-
- //
- // Rule 260: imperativeIterateExpCS ::= imperativeIteratorExpCSToken3 ( imperativeIterContents3 )
- //
- case 260: {
-
- String opCode = getTokenText(dtParser.getToken(1));
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.KEYWORD_LITERAL,
- opCode
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(1)));
- Object[] iterContents = (Object[]) dtParser.getSym(3);
- OCLExpressionCS bodyCS = null;
- OCLExpressionCS conditionCS = null;
- if ("xcollect".equals(opCode) || "collectOne".equals(opCode)) { //$NON-NLS-1$ //$NON-NLS-2$
- bodyCS = (OCLExpressionCS) iterContents[2];
- } else {
- conditionCS = (OCLExpressionCS) iterContents[2];
- }
- CSTNode result = createImperativeIterateExpCS(
- simpleNameCS,
- (EList<VariableCS>)iterContents[0],
- (VariableCS)iterContents[1],
- bodyCS,
- conditionCS
- );
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 261: imperativeIterateExpCS ::= imperativeIteratorExpCSToken qvtErrorToken
- //
- case 261: {
-
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.KEYWORD_LITERAL,
- getTokenText(dtParser.getToken(1))
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(1)));
- CSTNode result = createImperativeIterateExpCS(
- simpleNameCS,
- ourEmptyEList,
- null,
- null,
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 262: imperativeIterContents12 ::= OclExpressionCS
- //
- case 262: {
-
- dtParser.setSym1(new Object[] {
- ourEmptyEList,
- null,
- dtParser.getSym(1)
- });
- break;
- }
-
- //
- // Rule 263: imperativeIterContents12 ::= variableDeclarationListCS | OclExpressionCS
- //
- case 263: {
-
- dtParser.setSym1(new Object[] {
- dtParser.getSym(1),
- null,
- dtParser.getSym(3)
- });
- break;
- }
-
- //
- // Rule 264: imperativeIterContents3 ::= variableDeclarationListCS ; TupleLiteralPartCS | OclExpressionCS
- //
- case 264: {
-
- dtParser.setSym1(new Object[] {
- dtParser.getSym(1),
- dtParser.getSym(3),
- dtParser.getSym(5)
- });
- break;
- }
-
- //
- // Rule 265: exclamationOpt ::= $Empty
- //
- case 265:
- dtParser.setSym1(null);
- break;
-
- //
- // Rule 267: declarator_vsep ::= IDENTIFIER |
- //
- case 267: {
-
- CSTNode result = createVariableCS(
- getTokenText(dtParser.getToken(1)),
- null,
- null
- );
- setOffsets(result, getIToken(dtParser.getToken(1)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 268: declarator_vsepOpt ::= $Empty
- //
- case 268:
- dtParser.setSym1(null);
- break;
-
- //
- // Rule 270: IterateExpCS ::= primaryExpCS exclamationOpt [ declarator_vsepOpt OclExpressionCS ]
- //
- case 270: {
-
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- if (source instanceof ImperativeIterateExpCS) {
- String opCode = isTokenOfType(getIToken(dtParser.getToken(2)), XpandParsersym.TK_EXCLAMATION_MARK) ? "collectselectOne" : "collectselect"; //$NON-NLS-1$ //$NON-NLS-2$
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.KEYWORD_LITERAL,
- opCode
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(3)), getIToken(dtParser.getToken(6)));
+ } else {
+ String opCode = isTokenOfType(getIToken(dtParser.getToken(2)), XpandParsersym.TK_EXCLAMATION_MARK) ? "selectOne" : "xselect"; //$NON-NLS-1$ //$NON-NLS-2$
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.KEYWORD_LITERAL, opCode);
+ setOffsets(simpleNameCS, getIToken(dtParser.getToken(3)), getIToken(dtParser.getToken(6)));
- ImperativeIterateExpCS result = (ImperativeIterateExpCS) source;
- result.setSimpleNameCS(simpleNameCS);
-
- VariableCS variableCS = (VariableCS) dtParser.getSym(4);
- if (variableCS != null) {
- result.setTarget(variableCS);
- }
- result.setCondition((OCLExpressionCS) dtParser.getSym(5));
-
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(6)));
- dtParser.setSym1(result);
+ CallExpCS result = createImperativeIterateExpCS(simpleNameCS, ourEmptyEList, (VariableCS) dtParser.getSym(4), null, (OCLExpressionCS) dtParser.getSym(5));
+ result.setSource(source);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(6)));
+ dtParser.setSym1(result);
+ }
+ break;
}
- else {
- String opCode = isTokenOfType(getIToken(dtParser.getToken(2)), XpandParsersym.TK_EXCLAMATION_MARK) ? "selectOne" : "xselect"; //$NON-NLS-1$ //$NON-NLS-2$
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.KEYWORD_LITERAL,
- opCode
- );
- setOffsets(simpleNameCS, getIToken(dtParser.getToken(3)), getIToken(dtParser.getToken(6)));
-
- CallExpCS result = createImperativeIterateExpCS(
- simpleNameCS,
- ourEmptyEList,
- (VariableCS) dtParser.getSym(4),
- null,
- (OCLExpressionCS) dtParser.getSym(5)
- );
- result.setSource(source);
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(6)));
+
+ //
+ // Rule 271: IterateExpCS ::= primaryExpCS ->
+ // notReservedSimpleNameCS
+ //
+ case 271: {
+
+ String opCode = "xcollect"; //$NON-NLS-1$
+ SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.KEYWORD_LITERAL, opCode);
+
+ OCLExpressionCS source = (OCLExpressionCS) dtParser.getSym(1);
+ SimpleNameCS featureNameCS = (SimpleNameCS) dtParser.getSym(3);
+ OCLExpressionCS featureCallExpCS = createFeatureCallExpCS(source, null, featureNameCS, new BasicEList(), null);
+ setOffsets(featureCallExpCS, source, featureNameCS);
+
+ ImperativeIterateExpCS result = createImperativeIterateExpCS(simpleNameCS, ourEmptyEList, null, null, null);
+ result.setSource(featureCallExpCS);
+ setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
dtParser.setSym1(result);
+ break;
}
- break;
- }
-
- //
- // Rule 271: IterateExpCS ::= primaryExpCS -> notReservedSimpleNameCS
- //
- case 271: {
-
- String opCode = "xcollect"; //$NON-NLS-1$
- SimpleNameCS simpleNameCS = createSimpleNameCS(
- SimpleTypeEnum.KEYWORD_LITERAL,
- opCode
- );
- OCLExpressionCS source = (OCLExpressionCS)dtParser.getSym(1);
- SimpleNameCS featureNameCS = (SimpleNameCS)dtParser.getSym(3);
- OCLExpressionCS featureCallExpCS = createFeatureCallExpCS(
- source,
- null,
- featureNameCS,
- new BasicEList(),
- null
- );
- setOffsets(featureCallExpCS, source, featureNameCS);
+ //
+ // Rule 272: primaryExpCS ::= break
+ //
+ case 272: {
- ImperativeIterateExpCS result = createImperativeIterateExpCS(
- simpleNameCS,
- ourEmptyEList,
- null,
- null,
- null
- );
- result.setSource(featureCallExpCS);
- setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(3)));
- dtParser.setSym1(result);
- break;
- }
-
- //
- // Rule 272: primaryExpCS ::= break
- //
- case 272: {
-
OCLExpressionCS result = createBreakCS();
setOffsets(result, getIToken(dtParser.getToken(1)));
dtParser.setSym1(result);
- break;
- }
-
+ break;
+ }
+
//
- // Rule 273: primaryExpCS ::= continue
+ // Rule 273: primaryExpCS ::= continue
//
- case 273: {
-
+ case 273: {
+
OCLExpressionCS result = createContinueCS();
setOffsets(result, getIToken(dtParser.getToken(1)));
dtParser.setSym1(result);
- break;
+ break;
+ }
+
+ //
+ // Rule 274: template ::= emptyTemplate
+ //
+ case 274: {
+
+ setResult(xpandFactory.createTemplate(Collections.EMPTY_LIST, Collections.EMPTY_LIST, Collections.EMPTY_LIST, Collections.EMPTY_LIST, getRightIToken()));
+ break;
+ }
+ //
+ // Rule 277: template ::= LG commentTextPairAny imports
+ // extensionImports defineOrAroundSeq
+ //
+ case 277: {
+
+ List imports = (List) getRhsSym(3);
+ List extensionImports = (List) getRhsSym(4);
+ List defineOrAround = (List) getRhsSym(5);
+ List<Advice> advices = new LinkedList<Advice>();
+ List<Definition> defines = new LinkedList<Definition>();
+ for (Object o : defineOrAround) {
+ if (o instanceof Definition) {
+ defines.add((Definition) o);
+ } else if (o instanceof Advice) {
+ advices.add((Advice) o);
+ } else {
+ throw new IllegalStateException();// assert false?
+ }
}
-
+ setResult(xpandFactory.createTemplate(imports, extensionImports, defines, advices, getRightIToken()));
+ break;
+ }
//
- // Rule 274: template ::= emptyTemplate
+ // Rule 278: defineOrAroundSeq ::= define TEXT commentTextPairAny
+ // defineOrAroundSuffix
//
- case 274: {
-
- setResult(xpandFactory.createTemplate(Collections.EMPTY_LIST, Collections.EMPTY_LIST, Collections.EMPTY_LIST, Collections.EMPTY_LIST, getRightIToken()));
- break;
- }
+ case 278: {
+
+ List result = new LinkedList();
+ result.add(getRhsSym(1));
+ result.addAll((List) getRhsSym(4));
+ setResult(result);
+ break;
+ }
//
- // Rule 277: template ::= LG commentTextPairAny imports extensionImports defineOrAroundSeq
+ // Rule 279: defineOrAroundSeq ::= around TEXT commentTextPairAny
+ // defineOrAroundSuffix
//
- case 277: {
-
- List imports = (List) getRhsSym(3);
- List extensionImports = (List) getRhsSym(4);
- List defineOrAround = (List) getRhsSym(5);
- List<Advice> advices = new LinkedList<Advice>();
- List<Definition> defines = new LinkedList<Definition>();
- for (Object o : defineOrAround) {
- if (o instanceof Definition) {
- defines.add((Definition) o);
- } else if (o instanceof Advice) {
- advices.add((Advice) o);
+ case 279: {
+
+ List result = new LinkedList();
+ result.add(getRhsSym(1));
+ result.addAll((List) getRhsSym(4));
+ setResult(result);
+ break;
+ }
+ //
+ // Rule 280: defineOrAroundSuffix ::= $Empty
+ //
+ case 280: {
+
+ setResult(Collections.EMPTY_LIST);
+ break;
+ }
+ //
+ // Rule 284: imports ::= $Empty
+ //
+ case 284: {
+
+ setResult(Collections.EMPTY_LIST);
+ break;
+ }
+ //
+ // Rule 285: imports ::= anImport imports
+ //
+ case 285: {
+
+ List res = new LinkedList();
+ res.add(getRhsSym(1));
+ res.addAll((List) getRhsSym(2));
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 286: anImport ::= IMPORT StringLiteralExpCS TEXT
+ // commentTextPairAny
+ //
+ case 286: {
+
+ setResult(xpandFactory.createNamespaceImport(getLeftIToken(), (StringLiteralExpCS) getRhsSym(2)));
+ break;
+ }
+ //
+ // Rule 287: extensionImports ::= $Empty
+ //
+ case 287: {
+
+ setResult(Collections.EMPTY_LIST);
+ break;
+ }
+ //
+ // Rule 288: extensionImports ::= anExtensionImport extensionImports
+ //
+ case 288: {
+
+ List res = new LinkedList();
+ res.add(getRhsSym(1));
+ res.addAll((List) getRhsSym(2));
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 289: anExtensionImport ::= EXTENSION pathNameCS TEXT
+ // commentTextPairAny
+ //
+ case 289: {
+
+ setResult(xpandFactory.createImportDeclaration(getLeftIToken(), (PathNameCS) getRhsSym(2)));
+ break;
+ }
+ //
+ // Rule 290: around ::= AROUND pointcut FOR typeCS sequence
+ // ENDAROUND
+ //
+ case 290: {
+
+ setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), Collections.<VariableCS> emptyList(), false, (TypeCS) getRhsSym(4), (List) getRhsSym(5)));
+ break;
+ }
+ //
+ // Rule 291: around ::= AROUND pointcut LPAREN parametersList RPAREN
+ // FOR typeCS sequence ENDAROUND
+ //
+ case 291: {
+
+ setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), (List<VariableCS>) getRhsSym(4), false, (TypeCS) getRhsSym(7), (List) getRhsSym(8)));
+ break;
+ }
+ //
+ // Rule 292: around ::= AROUND pointcut LPAREN parametersList COMMA
+ // MULTIPLY RPAREN FOR typeCS sequence ENDAROUND
+ //
+ case 292: {
+
+ setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), (List<VariableCS>) getRhsSym(4), true, (TypeCS) getRhsSym(9), (List) getRhsSym(10)));
+ break;
+ }
+ //
+ // Rule 293: around ::= AROUND pointcut LPAREN MULTIPLY RPAREN FOR
+ // typeCS sequence ENDAROUND
+ //
+ case 293: {
+
+ setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), Collections.<VariableCS> emptyList(), true, (TypeCS) getRhsSym(7), (List) getRhsSym(8)));
+ break;
+ }
+ //
+ // Rule 294: pointcut ::= MULTIPLY pointcutSuffix
+ //
+ case 294: {
+
+ // FIXME: may use SimpleNameCS here, though need more sophisticated
+ // code to update end position
+ // SimpleNameCS simpleNameCS =
+ // createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL,
+ // getTokenText(getRhsTokenIndex(1)));
+ // setOffsets(simpleNameCS, getLeftIToken());
+ Identifier res = xpandFactory.createIdentifier(getLeftIToken());
+ if (getRhsSym(2) != null) {
+ res = res.append((Identifier) getRhsSym(2));
+ }
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 295: pointcut ::= IDENTIFIER pointcutSuffix
+ //
+ case 295: {
+
+ Identifier res = xpandFactory.createIdentifier(getLeftIToken());
+ if (getRhsSym(2) != null) {
+ res = res.append((Identifier) getRhsSym(2));
+ }
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 296: pointcutSuffix ::= $Empty
+ //
+ case 296: {
+
+ setResult(null);
+ break;
+ }
+ //
+ // Rule 298: pointcutSuffix ::= COLONCOLON pointcutSuffix
+ //
+ case 298: {
+
+ Identifier res = xpandFactory.createIdentifier(getLeftIToken());
+ if (getRhsSym(2) != null) {
+ res = res.append((Identifier) getRhsSym(2));
+ }
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 299: define ::= DEFINE IDENTIFIER FOR typeCS sequence
+ // ENDDEFINE
+ //
+ case 299: {
+
+ setResult(xpandFactory.createDefinition(getLeftIToken(), getRightIToken(), getRhsIToken(2), Collections.<VariableCS> emptyList(), (TypeCS) getRhsSym(4), (List) getRhsSym(5)));
+ break;
+ }
+ //
+ // Rule 300: define ::= DEFINE IDENTIFIER LPAREN parametersList
+ // RPAREN FOR typeCS sequence ENDDEFINE
+ //
+ case 300: {
+
+ setResult(xpandFactory.createDefinition(getLeftIToken(), getRightIToken(), getRhsIToken(2), (List<VariableCS>) getRhsSym(4), (TypeCS) getRhsSym(7), (List) getRhsSym(8)));
+ break;
+ }
+ //
+ // Rule 301: parametersList ::= parameter
+ //
+ case 301: {
+
+ VariableCS param = (VariableCS) getRhsSym(1);
+ LinkedList res = new LinkedList();
+ res.add(param);
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 302: parametersList ::= parametersList , parameter
+ //
+ case 302: {
+
+ VariableCS param = (VariableCS) getRhsSym(3);
+ LinkedList res = new LinkedList();
+ res.addAll((List) getRhsSym(1));
+ res.add(param);
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 304: parameter ::= typeCS IDENTIFIER
+ //
+ case 304: {
+
+ VariableCS result = createVariableCS(getRhsIToken(2).toString(), (TypeCS) getRhsSym(1), null);
+ setOffsets(result, (TypeCS) getRhsSym(1), getRhsIToken(2));
+ setResult(result);
+ break;
+ }
+ //
+ // Rule 305: sequence ::= text sequenceSuffix
+ //
+ case 305: {
+
+ List res = new LinkedList();
+ res.addAll((List) getRhsSym(1));
+ res.addAll((List) getRhsSym(2));
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 306: sequenceSuffix ::= $Empty
+ //
+ case 306: {
+
+ setResult(Collections.EMPTY_LIST);
+ break;
+ }
+ //
+ // Rule 307: sequenceSuffix ::= statement text sequenceSuffix
+ //
+ case 307: {
+
+ List res = new LinkedList();
+ res.add(getRhsSym(1));
+ res.addAll((List) getRhsSym(2));
+ res.addAll((List) getRhsSym(3));
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 314: text ::= minusOpt TEXT textSuffix
+ //
+ case 314: {
+
+ List res = new LinkedList();
+ res.add(xpandFactory.createTextStatement(getRhsIToken(2), (IToken) getRhsSym(1)));
+ res.addAll((List) getRhsSym(3));
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 315: textSuffix ::= $Empty
+ //
+ case 315: {
+
+ setResult(Collections.EMPTY_LIST);
+ break;
+ }
+ //
+ // Rule 316: textSuffix ::= minusOpt TEXT textSuffix
+ //
+ case 316: {
+
+ List res = new LinkedList();
+ res.add(xpandFactory.createTextStatement(getRhsIToken(2), (IToken) getRhsSym(1)));
+ res.addAll((List) getRhsSym(3));
+ setResult(res);
+ break;
+ }
+ //
+ // Rule 317: minusOpt ::= $Empty
+ //
+ case 317: {
+
+ setResult(null);
+ break;
+ }
+ //
+ // Rule 318: minusOpt ::= MINUS
+ //
+ case 318: {
+
+ setResult(getLeftIToken());
+ break;
+ }
+ //
+ // Rule 322: errorStatement ::= ERROR OclExpressionCS
+ //
+ case 322: {
+
+ setResult(xpandFactory.createErrorStatement(getLeftIToken(), (OCLExpressionCS) getRhsSym(2)));
+ break;
+ }
+ //
+ // Rule 323: expandStatement ::= EXPAND definitionName
+ // parameterListOpt
+ //
+ case 323: {
+
+ setResult(xpandFactory.createExpandStatement(getLeftIToken(), (PathNameCS) getRhsSym(2), (List) getRhsSym(3), null, false, null));
+ break;
+ }
+ //
+ // Rule 324: expandStatement ::= EXPAND definitionName
+ // parameterListOpt FOR OclExpressionCS
+ //
+ case 324: {
+
+ setResult(xpandFactory.createExpandStatement(getLeftIToken(), (PathNameCS) getRhsSym(2), (List) getRhsSym(3), (OCLExpressionCS) getRhsSym(5), false, null));
+ break;
+ }
+ //
+ // Rule 325: expandStatement ::= EXPAND definitionName
+ // parameterListOpt FOREACH OclExpressionCS separatorOpt
+ //
+ case 325: {
+
+ setResult(xpandFactory.createExpandStatement(getLeftIToken(), (PathNameCS) getRhsSym(2), (List) getRhsSym(3), (OCLExpressionCS) getRhsSym(5), true, (OCLExpressionCS) getRhsSym(6)));
+ break;
+ }
+ //
+ // Rule 326: parameterListOpt ::= $Empty
+ //
+ case 326: {
+
+ setResult(Collections.EMPTY_LIST);
+ break;
+ }
+ //
+ // Rule 327: parameterListOpt ::= LPAREN argumentsCS RPAREN
+ //
+ case 327: {
+
+ setResult(getRhsSym(2));
+ break;
+ }
+ //
+ // Rule 329: expressionStmt ::= OclExpressionCS
+ //
+ case 329: {
+
+ // XXX OCL CST doesn't keep track of line numbers, but we use them
+ // (perhaps, might refactor to stop using?)
+ int lineNumber = getLeftIToken().getLine();
+ setResult(xpandFactory.createExpressionStatement((OCLExpressionCS) getRhsSym(1), lineNumber));
+ break;
+ }
+ //
+ // Rule 330: fileStatement ::= FILE OclExpressionCS identOpt
+ // sequence ENDFILE
+ //
+ case 330: {
+
+ setResult(xpandFactory.createFileStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(2), (Identifier) getRhsSym(3), (List) getRhsSym(4)));
+ break;
+ }
+ //
+ // Rule 331: identOpt ::= $Empty
+ //
+ case 331: {
+
+ setResult(null);
+ break;
+ }
+ //
+ // Rule 332: identOpt ::= IDENTIFIER
+ //
+ case 332: {
+
+ setResult(xpandFactory.createIdentifier(getLeftIToken()));
+ break;
+ }
+ //
+ // Rule 333: foreachStatement ::= FOREACH OclExpressionCS AS
+ // IDENTIFIER iteratorOpt separatorOpt sequence ENDFOREACH
+ //
+ case 333: {
+
+ setResult(xpandFactory.createForEachStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(2), getRhsIToken(4), (OCLExpressionCS) getRhsSym(6), (IToken) getRhsSym(5),
+ (List) getRhsSym(7)));
+ break;
+ }
+ //
+ // Rule 334: iteratorOpt ::= $Empty
+ //
+ case 334: {
+
+ setResult(null);
+ break;
+ }
+ //
+ // Rule 335: iteratorOpt ::= ITERATOR IDENTIFIER
+ //
+ case 335: {
+
+ setResult(getRightIToken());
+ break;
+ }
+ //
+ // Rule 336: separatorOpt ::= $Empty
+ //
+ case 336: {
+
+ setResult(null);
+ break;
+ }
+ //
+ // Rule 337: separatorOpt ::= SEPARATOR OclExpressionCS
+ //
+ case 337: {
+
+ setResult(getRhsSym(2));
+ break;
+ }
+ //
+ // Rule 338: ifStatement ::= IF OclExpressionCS sequence elseifAny
+ // elseOpt ENDIF
+ //
+ case 338: {
+
+ IfStatement i = xpandFactory.createIfStatement(getLeftIToken(), (OCLExpressionCS) getRhsSym(2), (List) getRhsSym(3), null);
+ IfStatement elseIf = (IfStatement) getRhsSym(4);
+ IfStatement elseStmt = (IfStatement) getRhsSym(5);
+ if (elseIf != null) {
+ i.setElseIf(elseIf);
+ IfStatement curElseIf = elseIf;
+ // get the latest one in the chain
+ while (curElseIf.getElseIf() != null) {
+ curElseIf = curElseIf.getElseIf();
+ }
+ curElseIf.setElseIf(elseStmt);
} else {
- throw new IllegalStateException();// assert false?
+ i.setElseIf(elseStmt);
}
+ setResult(i);
+ break;
}
- setResult(xpandFactory.createTemplate(imports, extensionImports, defines, advices, getRightIToken()));
- break;
- }
//
- // Rule 278: defineOrAroundSeq ::= define TEXT commentTextPairAny defineOrAroundSuffix
+ // Rule 339: elseifAny ::= $Empty
//
- case 278: {
-
- List result = new LinkedList();
- result.add(getRhsSym(1));
- result.addAll((List) getRhsSym(4));
- setResult(result);
- break;
- }
- //
- // Rule 279: defineOrAroundSeq ::= around TEXT commentTextPairAny defineOrAroundSuffix
- //
- case 279: {
-
- List result = new LinkedList();
- result.add(getRhsSym(1));
- result.addAll((List) getRhsSym(4));
- setResult(result);
- break;
- }
- //
- // Rule 280: defineOrAroundSuffix ::= $Empty
- //
- case 280: {
-
- setResult(Collections.EMPTY_LIST);
- break;
- }
- //
- // Rule 284: imports ::= $Empty
- //
- case 284: {
-
- setResult(Collections.EMPTY_LIST);
- break;
- }
- //
- // Rule 285: imports ::= anImport imports
- //
- case 285: {
-
- List res = new LinkedList();
- res.add(getRhsSym(1));
- res.addAll((List) getRhsSym(2));
- setResult(res);
- break;
- }
- //
- // Rule 286: anImport ::= IMPORT StringLiteralExpCS TEXT commentTextPairAny
- //
- case 286: {
-
- setResult(xpandFactory.createNamespaceImport(getLeftIToken(), (StringLiteralExpCS) getRhsSym(2)));
- break;
- }
- //
- // Rule 287: extensionImports ::= $Empty
- //
- case 287: {
-
- setResult(Collections.EMPTY_LIST);
- break;
- }
- //
- // Rule 288: extensionImports ::= anExtensionImport extensionImports
- //
- case 288: {
-
- List res = new LinkedList();
- res.add(getRhsSym(1));
- res.addAll((List) getRhsSym(2));
- setResult(res);
- break;
- }
- //
- // Rule 289: anExtensionImport ::= EXTENSION pathNameCS TEXT commentTextPairAny
- //
- case 289: {
-
- setResult(xpandFactory.createImportDeclaration(getLeftIToken(), (PathNameCS) getRhsSym(2)));
- break;
- }
- //
- // Rule 290: around ::= AROUND pointcut FOR typeCS sequence ENDAROUND
- //
- case 290: {
-
- setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), Collections.<VariableCS>emptyList(), false, (TypeCS) getRhsSym(4), (List) getRhsSym(5)));
- break;
- }
- //
- // Rule 291: around ::= AROUND pointcut LPAREN parametersList RPAREN FOR typeCS sequence ENDAROUND
- //
- case 291: {
-
- setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), (List<VariableCS>) getRhsSym(4), false, (TypeCS) getRhsSym(7), (List) getRhsSym(8)));
- break;
- }
- //
- // Rule 292: around ::= AROUND pointcut LPAREN parametersList COMMA MULTIPLY RPAREN FOR typeCS sequence ENDAROUND
- //
- case 292: {
-
- setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), (List<VariableCS>) getRhsSym(4), true, (TypeCS) getRhsSym(9), (List) getRhsSym(10)));
- break;
- }
- //
- // Rule 293: around ::= AROUND pointcut LPAREN MULTIPLY RPAREN FOR typeCS sequence ENDAROUND
- //
- case 293: {
-
- setResult(xpandFactory.createAround(getLeftIToken(), getRightIToken(), (Identifier) getRhsSym(2), Collections.<VariableCS>emptyList(), true, (TypeCS) getRhsSym(7), (List) getRhsSym(8)));
- break;
- }
- //
- // Rule 294: pointcut ::= MULTIPLY pointcutSuffix
- //
- case 294: {
-
-// FIXME: may use SimpleNameCS here, though need more sophisticated code to update end position
-// SimpleNameCS simpleNameCS = createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, getTokenText(getRhsTokenIndex(1)));
-// setOffsets(simpleNameCS, getLeftIToken());
- Identifier res = xpandFactory.createIdentifier(getLeftIToken());
- if (getRhsSym(2) != null) {
- res = res.append((Identifier) getRhsSym(2));
+ case 339: {
+
+ setResult(null);
+ break;
}
- setResult(res);
- break;
- }
//
- // Rule 295: pointcut ::= IDENTIFIER pointcutSuffix
+ // Rule 340: elseifAny ::= ELSEIF OclExpressionCS sequence elseifAny
//
- case 295: {
-
- Identifier res = xpandFactory.createIdentifier(getLeftIToken());
- if (getRhsSym(2) != null) {
- res = res.append((Identifier) getRhsSym(2));
+ case 340: {
+
+ IfStatement elseIf = xpandFactory.createIfStatement(getLeftIToken(), (OCLExpressionCS) getRhsSym(2), (List) getRhsSym(3), null);
+ IfStatement restElseIf = (IfStatement) getRhsSym(4);
+ elseIf.setElseIf(restElseIf);
+ setResult(elseIf);
+ break;
}
- setResult(res);
- break;
- }
//
- // Rule 296: pointcutSuffix ::= $Empty
+ // Rule 341: elseOpt ::= $Empty
//
- case 296: {
-
- setResult(null);
- break;
- }
- //
- // Rule 298: pointcutSuffix ::= COLONCOLON pointcutSuffix
- //
- case 298: {
-
- Identifier res = xpandFactory.createIdentifier(getLeftIToken());
- if (getRhsSym(2) != null) {
- res = res.append((Identifier) getRhsSym(2));
+ case 341: {
+
+ setResult(null);
+ break;
}
- setResult(res);
- break;
- }
//
- // Rule 299: define ::= DEFINE IDENTIFIER FOR typeCS sequence ENDDEFINE
+ // Rule 342: elseOpt ::= ELSE sequence
//
- case 299: {
-
- setResult(xpandFactory.createDefinition(getLeftIToken(), getRightIToken(), getRhsIToken(2), Collections.<VariableCS>emptyList(), (TypeCS) getRhsSym(4), (List) getRhsSym(5)));
- break;
- }
- //
- // Rule 300: define ::= DEFINE IDENTIFIER LPAREN parametersList RPAREN FOR typeCS sequence ENDDEFINE
- //
- case 300: {
-
- setResult(xpandFactory.createDefinition(getLeftIToken(), getRightIToken(), getRhsIToken(2), (List<VariableCS>) getRhsSym(4), (TypeCS) getRhsSym(7), (List) getRhsSym(8)));
- break;
- }
- //
- // Rule 301: parametersList ::= parameter
- //
- case 301: {
-
- VariableCS param = (VariableCS) getRhsSym(1);
- LinkedList res = new LinkedList();
- res.add(param);
- setResult(res);
- break;
- }
- //
- // Rule 302: parametersList ::= parametersList , parameter
- //
- case 302: {
-
- VariableCS param = (VariableCS) getRhsSym(3);
- LinkedList res = new LinkedList();
- res.addAll((List) getRhsSym(1));
- res.add(param);
- setResult(res);
- break;
- }
- //
- // Rule 304: parameter ::= typeCS IDENTIFIER
- //
- case 304: {
-
- VariableCS result = createVariableCS(getRhsIToken(2).toString(), (TypeCS) getRhsSym(1), null);
- setOffsets(result, (TypeCS) getRhsSym(1), getRhsIToken(2));
- setResult(result);
- break;
- }
- //
- // Rule 305: sequence ::= text sequenceSuffix
- //
- case 305: {
-
- List res = new LinkedList();
- res.addAll((List) getRhsSym(1));
- res.addAll((List) getRhsSym(2));
- setResult(res);
- break;
- }
- //
- // Rule 306: sequenceSuffix ::= $Empty
- //
- case 306: {
-
- setResult(Collections.EMPTY_LIST);
- break;
- }
- //
- // Rule 307: sequenceSuffix ::= statement text sequenceSuffix
- //
- case 307: {
-
- List res = new LinkedList();
- res.add(getRhsSym(1));
- res.addAll((List) getRhsSym(2));
- res.addAll((List) getRhsSym(3));
- setResult(res);
- break;
- }
- //
- // Rule 314: text ::= minusOpt TEXT textSuffix
- //
- case 314: {
-
- List res = new LinkedList();
- res.add(xpandFactory.createTextStatement(getRhsIToken(2), (IToken) getRhsSym(1)));
- res.addAll((List) getRhsSym(3));
- setResult(res);
- break;
- }
- //
- // Rule 315: textSuffix ::= $Empty
- //
- case 315: {
-
- setResult(Collections.EMPTY_LIST);
- break;
- }
- //
- // Rule 316: textSuffix ::= minusOpt TEXT textSuffix
- //
- case 316: {
-
- List res = new LinkedList();
- res.add(xpandFactory.createTextStatement(getRhsIToken(2), (IToken) getRhsSym(1)));
- res.addAll((List) getRhsSym(3));
- setResult(res);
- break;
- }
- //
- // Rule 317: minusOpt ::= $Empty
- //
- case 317: {
-
- setResult(null);
- break;
- }
- //
- // Rule 318: minusOpt ::= MINUS
- //
- case 318: {
-
- setResult(getLeftIToken());
- break;
- }
- //
- // Rule 322: errorStatement ::= ERROR OclExpressionCS
- //
- case 322: {
-
- setResult(xpandFactory.createErrorStatement(getLeftIToken(), (OCLExpressionCS) getRhsSym(2)));
- break;
- }
- //
- // Rule 323: expandStatement ::= EXPAND definitionName parameterListOpt
- //
- case 323: {
-
- setResult(xpandFactory.createExpandStatement(getLeftIToken(), (PathNameCS) getRhsSym(2), (List) getRhsSym(3), null, false, null));
- break;
- }
- //
- // Rule 324: expandStatement ::= EXPAND definitionName parameterListOpt FOR OclExpressionCS
- //
- case 324: {
-
- setResult(xpandFactory.createExpandStatement(getLeftIToken(), (PathNameCS) getRhsSym(2), (List) getRhsSym(3), (OCLExpressionCS) getRhsSym(5), false, null));
- break;
- }
- //
- // Rule 325: expandStatement ::= EXPAND definitionName parameterListOpt FOREACH OclExpressionCS separatorOpt
- //
- case 325: {
-
- setResult(xpandFactory.createExpandStatement(getLeftIToken(), (PathNameCS) getRhsSym(2), (List) getRhsSym(3), (OCLExpressionCS) getRhsSym(5), true, (OCLExpressionCS) getRhsSym(6)));
- break;
- }
- //
- // Rule 326: parameterListOpt ::= $Empty
- //
- case 326: {
-
- setResult(Collections.EMPTY_LIST);
- break;
- }
- //
- // Rule 327: parameterListOpt ::= LPAREN argumentsCS RPAREN
- //
- case 327: {
-
- setResult(getRhsSym(2));
- break;
- }
- //
- // Rule 329: expressionStmt ::= OclExpressionCS
- //
- case 329: {
-
- // XXX OCL CST doesn't keep track of line numbers, but we use them (perhaps, might refactor to stop using?)
- int lineNumber = getLeftIToken().getLine();
- setResult(xpandFactory.createExpressionStatement((OCLExpressionCS) getRhsSym(1), lineNumber));
- break;
- }
- //
- // Rule 330: fileStatement ::= FILE OclExpressionCS identOpt sequence ENDFILE
- //
- case 330: {
-
- setResult(xpandFactory.createFileStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(2), (Identifier) getRhsSym(3), (List) getRhsSym(4)));
- break;
- }
- //
- // Rule 331: identOpt ::= $Empty
- //
- case 331: {
-
- setResult(null);
- break;
- }
- //
- // Rule 332: identOpt ::= IDENTIFIER
- //
- case 332: {
-
- setResult(xpandFactory.createIdentifier(getLeftIToken()));
- break;
- }
- //
- // Rule 333: foreachStatement ::= FOREACH OclExpressionCS AS IDENTIFIER iteratorOpt separatorOpt sequence ENDFOREACH
- //
- case 333: {
-
- setResult(xpandFactory.createForEachStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(2), getRhsIToken(4), (OCLExpressionCS) getRhsSym(6), (IToken) getRhsSym(5), (List) getRhsSym(7)));
- break;
- }
- //
- // Rule 334: iteratorOpt ::= $Empty
- //
- case 334: {
-
- setResult(null);
- break;
- }
- //
- // Rule 335: iteratorOpt ::= ITERATOR IDENTIFIER
- //
- case 335: {
-
- setResult(getRightIToken());
- break;
- }
- //
- // Rule 336: separatorOpt ::= $Empty
- //
- case 336: {
-
- setResult(null);
- break;
- }
- //
- // Rule 337: separatorOpt ::= SEPARATOR OclExpressionCS
- //
- case 337: {
-
- setResult(getRhsSym(2));
- break;
- }
- //
- // Rule 338: ifStatement ::= IF OclExpressionCS sequence elseifAny elseOpt ENDIF
- //
- case 338: {
-
- IfStatement i = xpandFactory.createIfStatement(getLeftIToken(), (OCLExpressionCS) getRhsSym(2), (List) getRhsSym(3), null);
- IfStatement elseIf = (IfStatement) getRhsSym(4);
- IfStatement elseStmt = (IfStatement) getRhsSym(5);
- if (elseIf != null) {
- i.setElseIf(elseIf);
- IfStatement curElseIf = elseIf;
- // get the latest one in the chain
- while (curElseIf.getElseIf() != null) {
- curElseIf = curElseIf.getElseIf();
- }
- curElseIf.setElseIf(elseStmt);
- } else {
- i.setElseIf(elseStmt);
+ case 342: {
+
+ setResult(xpandFactory.createIfStatement(getLeftIToken(), null, (List) getRhsSym(2), null));
+ break;
}
- setResult(i);
- break;
- }
//
- // Rule 339: elseifAny ::= $Empty
+ // Rule 343: letStatement ::= LET OclExpressionCS AS IDENTIFIER
+ // sequence ENDLET
//
- case 339: {
-
- setResult(null);
- break;
- }
+ case 343: {
+
+ setResult(xpandFactory.createLetStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(2), getRhsIToken(4), (List) getRhsSym(5)));
+ break;
+ }
//
- // Rule 340: elseifAny ::= ELSEIF OclExpressionCS sequence elseifAny
+ // Rule 344: protectStatement ::= PROTECT CSTART OclExpressionCS
+ // CEND OclExpressionCS ID OclExpressionCS disabledOpt sequence
+ // ENDPROTECT
//
- case 340: {
-
- IfStatement elseIf = xpandFactory.createIfStatement(getLeftIToken(), (OCLExpressionCS) getRhsSym(2), (List) getRhsSym(3), null);
- IfStatement restElseIf = (IfStatement) getRhsSym(4);
- elseIf.setElseIf(restElseIf);
- setResult(elseIf);
- break;
- }
+ case 344: {
+
+ setResult(xpandFactory.createProtectStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(3), (OCLExpressionCS) getRhsSym(5), (OCLExpressionCS) getRhsSym(7),
+ (IToken) getRhsSym(8), (List) getRhsSym(9)));
+ break;
+ }
//
- // Rule 341: elseOpt ::= $Empty
+ // Rule 345: disabledOpt ::= $Empty
//
- case 341: {
-
- setResult(null);
- break;
- }
+ case 345: {
+
+ setResult(null);
+ break;
+ }
//
- // Rule 342: elseOpt ::= ELSE sequence
+ // Rule 346: disabledOpt ::= DISABLE
//
- case 342: {
-
- setResult(xpandFactory.createIfStatement(getLeftIToken(), null, (List) getRhsSym(2), null));
- break;
- }
- //
- // Rule 343: letStatement ::= LET OclExpressionCS AS IDENTIFIER sequence ENDLET
- //
- case 343: {
-
- setResult(xpandFactory.createLetStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(2), getRhsIToken(4), (List) getRhsSym(5)));
- break;
- }
- //
- // Rule 344: protectStatement ::= PROTECT CSTART OclExpressionCS CEND OclExpressionCS ID OclExpressionCS disabledOpt sequence ENDPROTECT
- //
- case 344: {
-
- setResult(xpandFactory.createProtectStatement(getLeftIToken(), getRightIToken(), (OCLExpressionCS) getRhsSym(3), (OCLExpressionCS) getRhsSym(5), (OCLExpressionCS) getRhsSym(7), (IToken) getRhsSym(8), (List) getRhsSym(9)));
- break;
- }
- //
- // Rule 345: disabledOpt ::= $Empty
- //
- case 345: {
-
- setResult(null);
- break;
- }
- //
- // Rule 346: disabledOpt ::= DISABLE
- //
- case 346: {
-
- setResult(getLeftIToken());
- break;
- }
-
- default:
- break;
+ case 346: {
+
+ setResult(getLeftIToken());
+ break;
+ }
+
+ default:
+ break;
}
return;
}
}
-