Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 146527 Details for
Bug 242153
[parser] Modification to support IMP and exploit LPG 2
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
OCL (Experimental) om LPG v2
ocl242153_try5_experimental_a.patch (text/plain), 242.44 KB, created by
Adolfo Sanchez-Barbudo Herrera
on 2009-09-04 12:51:42 EDT
(
hide
)
Description:
OCL (Experimental) om LPG v2
Filename:
MIME Type:
Creator:
Adolfo Sanchez-Barbudo Herrera
Created:
2009-09-04 12:51:42 EDT
Size:
242.44 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ocl >Index: src/org/eclipse/ocl/parser/OCLKWLexer.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLKWLexer.java,v >retrieving revision 1.7 >diff -u -r1.7 OCLKWLexer.java >--- src/org/eclipse/ocl/parser/OCLKWLexer.java 4 Sep 2009 13:40:43 -0000 1.7 >+++ src/org/eclipse/ocl/parser/OCLKWLexer.java 4 Sep 2009 16:51:42 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2007 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,10 +10,12 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* E.D.Willink - Bug 285633 static definitions >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLKWLexer.java,v 1.7 2009/09/04 13:40:43 ewillink Exp $ >+* > */ > > package org.eclipse.ocl.parser; >@@ -57,66 +59,68 @@ > final static int tokenKind[] = new int[128]; > static > { >- tokenKind['$'] = Char_DollarSign; >- >- tokenKind['a'] = Char_a; >- tokenKind['b'] = Char_b; >- tokenKind['c'] = Char_c; >- tokenKind['d'] = Char_d; >- tokenKind['e'] = Char_e; >- tokenKind['f'] = Char_f; >- tokenKind['g'] = Char_g; >- tokenKind['h'] = Char_h; >- tokenKind['i'] = Char_i; >- tokenKind['j'] = Char_j; >- tokenKind['k'] = Char_k; >- tokenKind['l'] = Char_l; >- tokenKind['m'] = Char_m; >- tokenKind['n'] = Char_n; >- tokenKind['o'] = Char_o; >- tokenKind['p'] = Char_p; >- tokenKind['q'] = Char_q; >- tokenKind['r'] = Char_r; >- tokenKind['s'] = Char_s; >- tokenKind['t'] = Char_t; >- tokenKind['u'] = Char_u; >- tokenKind['v'] = Char_v; >- tokenKind['w'] = Char_w; >- tokenKind['x'] = Char_x; >- tokenKind['y'] = Char_y; >- tokenKind['z'] = Char_z; >- >- tokenKind['A'] = Char_A; >- tokenKind['B'] = Char_B; >- tokenKind['C'] = Char_C; >- tokenKind['D'] = Char_D; >- tokenKind['E'] = Char_E; >- tokenKind['F'] = Char_F; >- tokenKind['G'] = Char_G; >- tokenKind['H'] = Char_H; >- tokenKind['I'] = Char_I; >- tokenKind['J'] = Char_J; >- tokenKind['K'] = Char_K; >- tokenKind['L'] = Char_L; >- tokenKind['M'] = Char_M; >- tokenKind['N'] = Char_N; >- tokenKind['O'] = Char_O; >- tokenKind['P'] = Char_P; >- tokenKind['Q'] = Char_Q; >- tokenKind['R'] = Char_R; >- tokenKind['S'] = Char_S; >- tokenKind['T'] = Char_T; >- tokenKind['U'] = Char_U; >- tokenKind['V'] = Char_V; >- tokenKind['W'] = Char_W; >- tokenKind['X'] = Char_X; >- tokenKind['Y'] = Char_Y; >- tokenKind['Z'] = Char_Z; >+ tokenKind['$'] = OCLKWLexersym.Char_DollarSign; >+ tokenKind['%'] = OCLKWLexersym.Char_Percent; >+ tokenKind['_'] = OCLKWLexersym.Char__; >+ >+ tokenKind['a'] = OCLKWLexersym.Char_a; >+ tokenKind['b'] = OCLKWLexersym.Char_b; >+ tokenKind['c'] = OCLKWLexersym.Char_c; >+ tokenKind['d'] = OCLKWLexersym.Char_d; >+ tokenKind['e'] = OCLKWLexersym.Char_e; >+ tokenKind['f'] = OCLKWLexersym.Char_f; >+ tokenKind['g'] = OCLKWLexersym.Char_g; >+ tokenKind['h'] = OCLKWLexersym.Char_h; >+ tokenKind['i'] = OCLKWLexersym.Char_i; >+ tokenKind['j'] = OCLKWLexersym.Char_j; >+ tokenKind['k'] = OCLKWLexersym.Char_k; >+ tokenKind['l'] = OCLKWLexersym.Char_l; >+ tokenKind['m'] = OCLKWLexersym.Char_m; >+ tokenKind['n'] = OCLKWLexersym.Char_n; >+ tokenKind['o'] = OCLKWLexersym.Char_o; >+ tokenKind['p'] = OCLKWLexersym.Char_p; >+ tokenKind['q'] = OCLKWLexersym.Char_q; >+ tokenKind['r'] = OCLKWLexersym.Char_r; >+ tokenKind['s'] = OCLKWLexersym.Char_s; >+ tokenKind['t'] = OCLKWLexersym.Char_t; >+ tokenKind['u'] = OCLKWLexersym.Char_u; >+ tokenKind['v'] = OCLKWLexersym.Char_v; >+ tokenKind['w'] = OCLKWLexersym.Char_w; >+ tokenKind['x'] = OCLKWLexersym.Char_x; >+ tokenKind['y'] = OCLKWLexersym.Char_y; >+ tokenKind['z'] = OCLKWLexersym.Char_z; >+ >+ tokenKind['A'] = OCLKWLexersym.Char_A; >+ tokenKind['B'] = OCLKWLexersym.Char_B; >+ tokenKind['C'] = OCLKWLexersym.Char_C; >+ tokenKind['D'] = OCLKWLexersym.Char_D; >+ tokenKind['E'] = OCLKWLexersym.Char_E; >+ tokenKind['F'] = OCLKWLexersym.Char_F; >+ tokenKind['G'] = OCLKWLexersym.Char_G; >+ tokenKind['H'] = OCLKWLexersym.Char_H; >+ tokenKind['I'] = OCLKWLexersym.Char_I; >+ tokenKind['J'] = OCLKWLexersym.Char_J; >+ tokenKind['K'] = OCLKWLexersym.Char_K; >+ tokenKind['L'] = OCLKWLexersym.Char_L; >+ tokenKind['M'] = OCLKWLexersym.Char_M; >+ tokenKind['N'] = OCLKWLexersym.Char_N; >+ tokenKind['O'] = OCLKWLexersym.Char_O; >+ tokenKind['P'] = OCLKWLexersym.Char_P; >+ tokenKind['Q'] = OCLKWLexersym.Char_Q; >+ tokenKind['R'] = OCLKWLexersym.Char_R; >+ tokenKind['S'] = OCLKWLexersym.Char_S; >+ tokenKind['T'] = OCLKWLexersym.Char_T; >+ tokenKind['U'] = OCLKWLexersym.Char_U; >+ tokenKind['V'] = OCLKWLexersym.Char_V; >+ tokenKind['W'] = OCLKWLexersym.Char_W; >+ tokenKind['X'] = OCLKWLexersym.Char_X; >+ tokenKind['Y'] = OCLKWLexersym.Char_Y; >+ tokenKind['Z'] = OCLKWLexersym.Char_Z; > }; > >- final int getKind(char c) >+ final int getKind(int c) > { >- return (c < 128 ? tokenKind[c] : 0); >+ return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0); > } > > >@@ -128,388 +132,451 @@ > // > // Rule 1: KeyWord ::= s e l f > // >- keywordKind[1] = (TK_self); >+ >+ keywordKind[1] = (OCLParsersym.TK_self); > > > // > // Rule 2: KeyWord ::= i n v > // >- keywordKind[2] = (TK_inv); >+ >+ keywordKind[2] = (OCLParsersym.TK_inv); > > > // > // Rule 3: KeyWord ::= p r e > // >- keywordKind[3] = (TK_pre); >+ >+ keywordKind[3] = (OCLParsersym.TK_pre); > > > // > // Rule 4: KeyWord ::= p o s t > // >- keywordKind[4] = (TK_post); >+ >+ keywordKind[4] = (OCLParsersym.TK_post); > > > // > // Rule 5: KeyWord ::= b o d y > // >- keywordKind[5] = (TK_body); >+ >+ keywordKind[5] = (OCLParsersym.TK_body); > > > // > // Rule 6: KeyWord ::= c o n t e x t > // >- keywordKind[6] = (TK_context); >+ >+ keywordKind[6] = (OCLParsersym.TK_context); > > > // > // Rule 7: KeyWord ::= p a c k a g e > // >- keywordKind[7] = (TK_package); >+ >+ keywordKind[7] = (OCLParsersym.TK_package); > > > // > // Rule 8: KeyWord ::= e n d p a c k a g e > // >- keywordKind[8] = (TK_endpackage); >+ >+ keywordKind[8] = (OCLParsersym.TK_endpackage); > > > // > // Rule 9: KeyWord ::= d e f > // >- keywordKind[9] = (TK_def); >+ >+ keywordKind[9] = (OCLParsersym.TK_def); > > > // > // Rule 10: KeyWord ::= d e r i v e > // >- keywordKind[10] = (TK_derive); >+ >+ keywordKind[10] = (OCLParsersym.TK_derive); > > > // > // Rule 11: KeyWord ::= i n i t > // >- keywordKind[11] = (TK_init); >+ >+ keywordKind[11] = (OCLParsersym.TK_init); > > > // > // Rule 12: KeyWord ::= i f > // >- keywordKind[12] = (TK_if); >+ >+ keywordKind[12] = (OCLParsersym.TK_if); > > > // > // Rule 13: KeyWord ::= t h e n > // >- keywordKind[13] = (TK_then); >+ >+ keywordKind[13] = (OCLParsersym.TK_then); > > > // > // Rule 14: KeyWord ::= e l s e > // >- keywordKind[14] = (TK_else); >+ >+ keywordKind[14] = (OCLParsersym.TK_else); > > > // > // Rule 15: KeyWord ::= e n d i f > // >- keywordKind[15] = (TK_endif); >+ >+ keywordKind[15] = (OCLParsersym.TK_endif); > > > // > // Rule 16: KeyWord ::= a n d > // >- keywordKind[16] = (TK_and); >+ >+ keywordKind[16] = (OCLParsersym.TK_and); > > > // > // Rule 17: KeyWord ::= o r > // >- keywordKind[17] = (TK_or); >+ >+ keywordKind[17] = (OCLParsersym.TK_or); > > > // > // Rule 18: KeyWord ::= x o r > // >- keywordKind[18] = (TK_xor); >+ >+ keywordKind[18] = (OCLParsersym.TK_xor); > > > // > // Rule 19: KeyWord ::= n o t > // >- keywordKind[19] = (TK_not); >+ >+ keywordKind[19] = (OCLParsersym.TK_not); > > > // > // Rule 20: KeyWord ::= i m p l i e s > // >- keywordKind[20] = (TK_implies); >+ >+ keywordKind[20] = (OCLParsersym.TK_implies); > > > // > // Rule 21: KeyWord ::= l e t > // >- keywordKind[21] = (TK_let); >+ >+ keywordKind[21] = (OCLParsersym.TK_let); > > > // > // Rule 22: KeyWord ::= i n > // >- keywordKind[22] = (TK_in); >+ >+ keywordKind[22] = (OCLParsersym.TK_in); > > > // > // Rule 23: KeyWord ::= t r u e > // >- keywordKind[23] = (TK_true); >+ >+ keywordKind[23] = (OCLParsersym.TK_true); > > > // > // Rule 24: KeyWord ::= f a l s e > // >- keywordKind[24] = (TK_false); >+ >+ keywordKind[24] = (OCLParsersym.TK_false); > > > // > // Rule 25: KeyWord ::= S e t > // >- keywordKind[25] = (TK_Set); >+ >+ keywordKind[25] = (OCLParsersym.TK_Set); > > > // > // Rule 26: KeyWord ::= B a g > // >- keywordKind[26] = (TK_Bag); >+ >+ keywordKind[26] = (OCLParsersym.TK_Bag); > > > // > // Rule 27: KeyWord ::= S e q u e n c e > // >- keywordKind[27] = (TK_Sequence); >+ >+ keywordKind[27] = (OCLParsersym.TK_Sequence); > > > // > // Rule 28: KeyWord ::= C o l l e c t i o n > // >- keywordKind[28] = (TK_Collection); >+ >+ keywordKind[28] = (OCLParsersym.TK_Collection); > > > // > // Rule 29: KeyWord ::= O r d e r e d S e t > // >- keywordKind[29] = (TK_OrderedSet); >+ >+ keywordKind[29] = (OCLParsersym.TK_OrderedSet); > > > // > // Rule 30: KeyWord ::= i t e r a t e > // >- keywordKind[30] = (TK_iterate); >+ >+ keywordKind[30] = (OCLParsersym.TK_iterate); > > > // > // Rule 31: KeyWord ::= f o r A l l > // >- keywordKind[31] = (TK_forAll); >+ >+ keywordKind[31] = (OCLParsersym.TK_forAll); > > > // > // Rule 32: KeyWord ::= e x i s t s > // >- keywordKind[32] = (TK_exists); >+ >+ keywordKind[32] = (OCLParsersym.TK_exists); > > > // > // Rule 33: KeyWord ::= i s U n i q u e > // >- keywordKind[33] = (TK_isUnique); >+ >+ keywordKind[33] = (OCLParsersym.TK_isUnique); > > > // > // Rule 34: KeyWord ::= a n y > // >- keywordKind[34] = (TK_any); >+ >+ keywordKind[34] = (OCLParsersym.TK_any); > > > // > // Rule 35: KeyWord ::= o n e > // >- keywordKind[35] = (TK_one); >+ >+ keywordKind[35] = (OCLParsersym.TK_one); > > > // > // Rule 36: KeyWord ::= c o l l e c t > // >- keywordKind[36] = (TK_collect); >+ >+ keywordKind[36] = (OCLParsersym.TK_collect); > > > // > // Rule 37: KeyWord ::= s e l e c t > // >- keywordKind[37] = (TK_select); >+ >+ keywordKind[37] = (OCLParsersym.TK_select); > > > // > // Rule 38: KeyWord ::= r e j e c t > // >- keywordKind[38] = (TK_reject); >+ >+ keywordKind[38] = (OCLParsersym.TK_reject); > > > // > // Rule 39: KeyWord ::= c o l l e c t N e s t e d > // >- keywordKind[39] = (TK_collectNested); >+ >+ keywordKind[39] = (OCLParsersym.TK_collectNested); > > > // > // Rule 40: KeyWord ::= s o r t e d B y > // >- keywordKind[40] = (TK_sortedBy); >+ >+ keywordKind[40] = (OCLParsersym.TK_sortedBy); > > > // > // Rule 41: KeyWord ::= c l o s u r e > // >- keywordKind[41] = (TK_closure); >+ >+ keywordKind[41] = (OCLParsersym.TK_closure); > > > // > // Rule 42: KeyWord ::= o c l I s K i n d O f > // >- keywordKind[42] = (TK_oclIsKindOf); >+ >+ keywordKind[42] = (OCLParsersym.TK_oclIsKindOf); > > > // > // Rule 43: KeyWord ::= o c l I s T y p e O f > // >- keywordKind[43] = (TK_oclIsTypeOf); >+ >+ keywordKind[43] = (OCLParsersym.TK_oclIsTypeOf); > > > // > // Rule 44: KeyWord ::= o c l A s T y p e > // >- keywordKind[44] = (TK_oclAsType); >+ >+ keywordKind[44] = (OCLParsersym.TK_oclAsType); > > > // > // Rule 45: KeyWord ::= o c l I s N e w > // >- keywordKind[45] = (TK_oclIsNew); >+ >+ keywordKind[45] = (OCLParsersym.TK_oclIsNew); > > > // > // Rule 46: KeyWord ::= o c l I s U n d e f i n e d > // >- keywordKind[46] = (TK_oclIsUndefined); >+ >+ keywordKind[46] = (OCLParsersym.TK_oclIsUndefined); > > > // > // Rule 47: KeyWord ::= o c l I s I n v a l i d > // >- keywordKind[47] = (TK_oclIsInvalid); >+ >+ keywordKind[47] = (OCLParsersym.TK_oclIsInvalid); > > > // > // Rule 48: KeyWord ::= o c l I s I n S t a t e > // >- keywordKind[48] = (TK_oclIsInState); >+ >+ keywordKind[48] = (OCLParsersym.TK_oclIsInState); > > > // > // Rule 49: KeyWord ::= a l l I n s t a n c e s > // >- keywordKind[49] = (TK_allInstances); >+ >+ keywordKind[49] = (OCLParsersym.TK_allInstances); > > > // > // Rule 50: KeyWord ::= S t r i n g > // >- keywordKind[50] = (TK_String); >+ >+ keywordKind[50] = (OCLParsersym.TK_String); > > > // > // Rule 51: KeyWord ::= I n t e g e r > // >- keywordKind[51] = (TK_Integer); >+ >+ keywordKind[51] = (OCLParsersym.TK_Integer); > > > // > // Rule 52: KeyWord ::= U n l i m i t e d N a t u r a l > // >- keywordKind[52] = (TK_UnlimitedNatural); >+ >+ keywordKind[52] = (OCLParsersym.TK_UnlimitedNatural); > > > // > // Rule 53: KeyWord ::= R e a l > // >- keywordKind[53] = (TK_Real); >+ >+ keywordKind[53] = (OCLParsersym.TK_Real); > > > // > // Rule 54: KeyWord ::= B o o l e a n > // >- keywordKind[54] = (TK_Boolean); >+ >+ keywordKind[54] = (OCLParsersym.TK_Boolean); > > > // > // Rule 55: KeyWord ::= T u p l e > // >- keywordKind[55] = (TK_Tuple); >+ >+ keywordKind[55] = (OCLParsersym.TK_Tuple); > > > // > // Rule 56: KeyWord ::= O c l A n y > // >- keywordKind[56] = (TK_OclAny); >+ >+ keywordKind[56] = (OCLParsersym.TK_OclAny); > > > // > // Rule 57: KeyWord ::= O c l V o i d > // >- keywordKind[57] = (TK_OclVoid); >+ >+ keywordKind[57] = (OCLParsersym.TK_OclVoid); > > > // > // Rule 58: KeyWord ::= O c l I n v a l i d > // >- keywordKind[58] = (TK_OclInvalid); >+ >+ keywordKind[58] = (OCLParsersym.TK_OclInvalid); > > > // > // Rule 59: KeyWord ::= O c l M e s s a g e > // >- keywordKind[59] = (TK_OclMessage); >+ >+ keywordKind[59] = (OCLParsersym.TK_OclMessage); > > > // > // Rule 60: KeyWord ::= n u l l > // >- keywordKind[60] = (TK_null); >+ >+ keywordKind[60] = (OCLParsersym.TK_null); > > > // > // Rule 61: KeyWord ::= i n v a l i d > // >- keywordKind[61] = (TK_invalid); >+ >+ keywordKind[61] = (OCLParsersym.TK_invalid); > > > // > // Rule 62: KeyWord ::= a t t r > // >- keywordKind[62] = (TK_attr); >+ >+ keywordKind[62] = (OCLParsersym.TK_attr); > > > // > // Rule 63: KeyWord ::= o p e r > // >- keywordKind[63] = (TK_oper); >+ >+ keywordKind[63] = (OCLParsersym.TK_oper); > > > // > // Rule 64: KeyWord ::= s t a t i c > // >- keywordKind[64] = (TK_static); >+ >+ keywordKind[64] = (OCLParsersym.TK_static); > > >- > for (int i = 0; i < keywordKind.length; i++) > { > if (keywordKind[i] == 0) >Index: src/org/eclipse/ocl/parser/AbstractOCLParser.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/AbstractOCLParser.java,v >retrieving revision 1.8 >diff -u -r1.8 AbstractOCLParser.java >--- src/org/eclipse/ocl/parser/AbstractOCLParser.java 4 Sep 2009 13:40:43 -0000 1.8 >+++ src/org/eclipse/ocl/parser/AbstractOCLParser.java 4 Sep 2009 16:51:42 -0000 >@@ -20,12 +20,12 @@ > */ > package org.eclipse.ocl.parser; > >-import lpg.lpgjavaruntime.IToken; >-import lpg.lpgjavaruntime.NullExportedSymbolsException; >-import lpg.lpgjavaruntime.NullTerminalSymbolsException; >-import lpg.lpgjavaruntime.ParseErrorCodes; >-import lpg.lpgjavaruntime.UndefinedEofSymbolException; >-import lpg.lpgjavaruntime.UnimplementedTerminalsException; >+import lpg.runtime.IToken; >+import lpg.runtime.NullExportedSymbolsException; >+import lpg.runtime.NullTerminalSymbolsException; >+import lpg.runtime.ParseErrorCodes; >+import lpg.runtime.UndefinedEofSymbolException; >+import lpg.runtime.UnimplementedTerminalsException; > > import org.eclipse.emf.common.util.EList; > import org.eclipse.ocl.cst.BooleanLiteralExpCS; >@@ -87,6 +87,7 @@ > import org.eclipse.ocl.options.ParsingOptions; > import org.eclipse.ocl.options.ProblemOption; > >+ > public abstract class AbstractOCLParser > extends AbstractParser { > >@@ -671,7 +672,7 @@ > * @param stringLiteral a string literal token with escape notation > * @return the unescaped string > * >- * @since 1.3 >+ * @since 3.0 > */ > protected String unescape(IToken stringLiteral) { > String rawString = stringLiteral.toString(); >@@ -696,7 +697,7 @@ > if (i >= n) { > reportError( > ParseErrorCodes.INVALID_CODE, >- "", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$ >+ stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), > OCLMessages.StringNotProperlyClosed_ERROR); > } > char nextCh = rawString.charAt(i); >@@ -765,7 +766,7 @@ > if (unescapedChar < 0) { > reportError( > ParseErrorCodes.INVALID_CODE, >- "", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$ >+ stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), > OCLMessages.InvalidEscapeSequence_ERROR); > } > break; >Index: src/org/eclipse/ocl/parser/OCLParserprs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLParserprs.java,v >retrieving revision 1.11 >diff -u -r1.11 OCLParserprs.java >--- src/org/eclipse/ocl/parser/OCLParserprs.java 4 Sep 2009 13:40:43 -0000 1.11 >+++ src/org/eclipse/ocl/parser/OCLParserprs.java 4 Sep 2009 16:51:43 -0000 >@@ -12,11 +12,13 @@ > * E.D.Willink - Elimination of some shift-reduce conflicts > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+* Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLParserprs.java,v 1.11 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser; >@@ -25,7 +27,113 @@ > * @noextend This interface is not intended to be extended by clients. > */ > @SuppressWarnings("nls") >-public class OCLParserprs implements lpg.lpgjavaruntime.ParseTable, OCLParsersym { >+public class OCLParserprs implements lpg.runtime.ParseTable, OCLParsersym { >+ public final static int ERROR_SYMBOL = 102; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 43; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 44; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 26; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 213; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 102; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 3457; >+ public final int getLaStateOffset() { return LA_STATE_OFFSET; } >+ >+ public final static int MAX_LA = 2; >+ public final int getMaxLa() { return MAX_LA; } >+ >+ public final static int NUM_RULES = 275; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 106; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 208; >+ public final int getNumSymbols() { return NUM_SYMBOLS; } >+ >+ public final static int SEGMENT_SIZE = 8192; >+ public final int getSegmentSize() { return SEGMENT_SIZE; } >+ >+ public final static int START_STATE = 2971; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 2; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 97; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 97; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 3181; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 3182; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = false; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLParsersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,1,0,0,0,0,1,1,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 1,1,0,0,0,0,0,0,0,1, >+ 0,0,0,1,0,0,0,0,0,0, >+ 1,1,0,0,0,0,0,1,1,0, >+ 0,1,0,0,0,0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 55,54,9,21,63,5,6,7,10,3, >+ 8,15,50,51,11,40,42,44,48,49, >+ 57,58,59,60,61,62,68,69,70,71, >+ 72,41,43,38,39,34,35,36,37,32, >+ 33,30,31,28,29,25,26,27,78,23, >+ 52,53,79,81,82,24,47,98,99,100, >+ 101,104,89,92,93,94,4,12,19,20, >+ 22,66,67,74,80,84,85,87,88,95, >+ 97,2,13,14,17,18,45,46,56,64, >+ 65,73,75,76,77,83,86,90,91,96, >+ 102,103,105,106,1,16 >+ }; >+ }; >+ public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex; >+ public final int prosthesesIndex(int index) { return prosthesesIndex[index]; } > > public interface IsKeyword { > public final static byte isKeyword[] = {0, >@@ -1206,29 +1314,29 @@ > > public interface ScopeRhs { > public final static char scopeRhs[] = {0, >- 180,1,105,88,0,12,0,180,1,105, >- 87,0,148,93,148,92,148,71,0,45, >- 0,148,92,148,71,0,44,119,45,0, >- 148,71,0,43,119,44,119,45,0,178, >- 67,0,52,119,0,154,81,105,0,16, >- 0,0,159,1,153,111,0,159,1,153, >+ 180,1,105,88,0,4,0,180,1,105, >+ 87,0,148,93,148,92,148,71,0,94, >+ 0,148,92,148,71,0,93,148,94,0, >+ 148,71,0,92,148,93,148,94,0,178, >+ 67,0,96,148,0,154,81,105,0,75, >+ 153,0,159,1,153,111,0,159,1,153, > 113,0,159,1,153,170,0,198,1,59, >- 0,155,1,107,0,155,24,2,0,7, >- 119,0,148,72,152,84,152,1,185,0, >- 152,84,152,1,185,0,18,119,12,0, >- 152,1,185,0,22,118,18,119,12,0, >+ 0,155,1,107,0,155,24,2,0,3, >+ 148,0,148,72,152,84,152,1,185,0, >+ 152,84,152,1,185,0,72,148,4,0, >+ 152,1,185,0,84,152,72,148,4,0, > 148,72,152,1,185,0,148,72,152,36, > 152,1,186,0,152,36,152,1,186,0, >- 152,1,186,0,19,118,18,119,12,0, >+ 152,1,186,0,36,152,72,148,4,0, > 148,72,152,1,186,0,148,1,186,0, >- 194,68,59,0,14,0,192,68,107,0, >+ 194,68,59,0,80,0,192,68,107,0, > 154,81,117,0,148,1,0,159,1,105, >- 69,106,0,159,1,60,0,136,0,4, >- 133,0,3,133,0,140,0,2,131,0, >- 1,131,0,142,0,9,128,0,8,128, >- 0,6,128,0,5,128,0,144,0,10, >- 126,0,7,126,0,146,0,48,124,0, >- 47,124,0,46,124,0 >+ 69,106,0,159,1,60,0,136,0,19, >+ 134,0,18,134,0,140,0,35,137,0, >+ 34,137,0,142,0,23,139,0,22,139, >+ 0,21,139,0,20,139,0,144,0,5, >+ 143,0,3,143,0,146,0,28,145,0, >+ 27,145,0,26,145,0 > }; > }; > public final static char scopeRhs[] = ScopeRhs.scopeRhs; >@@ -1450,53 +1558,6 @@ > public final static String name[] = Name.name; > public final String name(int index) { return name[index]; } > >- public final static int >- ERROR_SYMBOL = 102, >- SCOPE_UBOUND = 43, >- SCOPE_SIZE = 44, >- MAX_NAME_LENGTH = 26; >- >- public final int getErrorSymbol() { return ERROR_SYMBOL; } >- public final int getScopeUbound() { return SCOPE_UBOUND; } >- public final int getScopeSize() { return SCOPE_SIZE; } >- public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >- >- public final static int >- NUM_STATES = 213, >- NT_OFFSET = 102, >- LA_STATE_OFFSET = 3457, >- MAX_LA = 2, >- NUM_RULES = 275, >- NUM_NONTERMINALS = 106, >- NUM_SYMBOLS = 208, >- SEGMENT_SIZE = 8192, >- START_STATE = 2971, >- IDENTIFIER_SYMBOL = 2, >- EOFT_SYMBOL = 97, >- EOLT_SYMBOL = 97, >- ACCEPT_ACTION = 3181, >- ERROR_ACTION = 3182; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { > return -baseCheck[state]; > } >@@ -1510,10 +1571,16 @@ > return inSymb[originalState(state)]; > } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/OCLParser.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLParser.java,v >retrieving revision 1.12 >diff -u -r1.12 OCLParser.java >--- src/org/eclipse/ocl/parser/OCLParser.java 4 Sep 2009 13:40:43 -0000 1.12 >+++ src/org/eclipse/ocl/parser/OCLParser.java 4 Sep 2009 16:51:43 -0000 >@@ -12,11 +12,13 @@ > * E.D.Willink - Elimination of some shift-reduce conflicts > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+* Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLParser.java,v 1.12 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser; >@@ -43,15 +45,15 @@ > import org.eclipse.ocl.util.OCLStandardLibraryUtil; > import org.eclipse.ocl.utilities.PredefinedType; > >-import lpg.lpgjavaruntime.BadParseException; >-import lpg.lpgjavaruntime.BadParseSymFileException; >-import lpg.lpgjavaruntime.DeterministicParser; >-import lpg.lpgjavaruntime.DiagnoseParser; >-import lpg.lpgjavaruntime.IToken; >-import lpg.lpgjavaruntime.Monitor; >-import lpg.lpgjavaruntime.NotDeterministicParseTableException; >-import lpg.lpgjavaruntime.ParseTable; >-import lpg.lpgjavaruntime.RuleAction; >+import lpg.runtime.BadParseException; >+import lpg.runtime.BadParseSymFileException; >+import lpg.runtime.DeterministicParser; >+import lpg.runtime.DiagnoseParser; >+import lpg.runtime.IToken; >+import lpg.runtime.Monitor; >+import lpg.runtime.NotDeterministicParseTableException; >+import lpg.runtime.ParseTable; >+import lpg.runtime.RuleAction; > > import org.eclipse.ocl.Environment; > import org.eclipse.ocl.cst.DefCS; >Index: src/org/eclipse/ocl/parser/OCLKWLexerprs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLKWLexerprs.java,v >retrieving revision 1.7 >diff -u -r1.7 OCLKWLexerprs.java >--- src/org/eclipse/ocl/parser/OCLKWLexerprs.java 4 Sep 2009 13:40:43 -0000 1.7 >+++ src/org/eclipse/ocl/parser/OCLKWLexerprs.java 4 Sep 2009 16:51:42 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2007 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,15 +10,98 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* E.D.Willink - Bug 285633 static definitions >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLKWLexerprs.java,v 1.7 2009/09/04 13:40:43 ewillink Exp $ >+* > */ > > package org.eclipse.ocl.parser; > >-public class OCLKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLKWLexersym { >+public class OCLKWLexerprs implements lpg.runtime.ParseTable, OCLKWLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 260; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 56; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 392; >+ public final int getLaStateOffset() { return LA_STATE_OFFSET; } >+ >+ public final static int MAX_LA = 1; >+ public final int getMaxLa() { return MAX_LA; } >+ >+ public final static int NUM_RULES = 64; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 2; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 58; >+ public final int getNumSymbols() { return NUM_SYMBOLS; } >+ >+ public final static int SEGMENT_SIZE = 8192; >+ public final int getSegmentSize() { return SEGMENT_SIZE; } >+ >+ public final static int START_STATE = 65; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 0; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 39; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 57; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 327; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 328; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = false; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLKWLexersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 2,1 >+ }; >+ }; >+ public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex; >+ public final int prosthesesIndex(int index) { return prosthesesIndex[index]; } > > public interface IsKeyword { > public final static byte isKeyword[] = {0, >@@ -27,7 +110,7 @@ > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, >- 0,0,0,0 >+ 0,0,0,0,0,0 > }; > }; > public final static byte isKeyword[] = IsKeyword.isKeyword; >@@ -156,7 +239,8 @@ > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, >- 0,0,0,0,0,0,0,0,0,0 >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -242,56 +326,21 @@ > public final int scopeState(int index) { return 0;} > public final int inSymb(int index) { return 0;} > public final String name(int index) { return null; } >- public final int getErrorSymbol() { return 0; } >- public final int getScopeUbound() { return 0; } >- public final int getScopeSize() { return 0; } >- public final int getMaxNameLength() { return 0; } >- >- public final static int >- NUM_STATES = 260, >- NT_OFFSET = 54, >- LA_STATE_OFFSET = 392, >- MAX_LA = 1, >- NUM_RULES = 64, >- NUM_NONTERMINALS = 2, >- NUM_SYMBOLS = 56, >- SEGMENT_SIZE = 8192, >- START_STATE = 65, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 39, >- EOLT_SYMBOL = 55, >- ACCEPT_ACTION = 327, >- ERROR_ACTION = 328; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { return 0; } > public final int asi(int state) { return 0; } > public final int nasi(int state) { return 0; } > public final int inSymbol(int state) { return 0; } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/OCLKWLexersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLKWLexersym.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLKWLexersym.java >--- src/org/eclipse/ocl/parser/OCLKWLexersym.java 4 Sep 2009 13:40:43 -0000 1.6 >+++ src/org/eclipse/ocl/parser/OCLKWLexersym.java 4 Sep 2009 16:51:42 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2007 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,10 +10,12 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* E.D.Willink - Bug 285633 static definitions >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLKWLexersym.java,v 1.6 2009/09/04 13:40:43 ewillink Exp $ >+* > */ > > package org.eclipse.ocl.parser; >@@ -26,6 +28,8 @@ > public interface OCLKWLexersym { > public final static int > Char_DollarSign = 40, >+ Char_Percent = 41, >+ Char__ = 42, > Char_a = 5, > Char_b = 30, > Char_c = 11, >@@ -51,36 +55,36 @@ > Char_w = 33, > Char_x = 19, > Char_y = 16, >- Char_z = 41, >+ Char_z = 43, > Char_A = 20, > Char_B = 29, > Char_C = 34, >- Char_D = 42, >- Char_E = 43, >- Char_F = 44, >- Char_G = 45, >- Char_H = 46, >+ Char_D = 44, >+ Char_E = 45, >+ Char_F = 46, >+ Char_G = 47, >+ Char_H = 48, > Char_I = 17, >- Char_J = 47, >+ Char_J = 49, > Char_K = 35, >- Char_L = 48, >+ Char_L = 50, > Char_M = 36, > Char_N = 21, > Char_O = 22, >- Char_P = 49, >- Char_Q = 50, >+ Char_P = 51, >+ Char_Q = 52, > Char_R = 37, > Char_S = 23, > Char_T = 24, > Char_U = 25, > Char_V = 38, >- Char_W = 51, >- Char_X = 52, >- Char_Y = 53, >- Char_Z = 54, >+ Char_W = 53, >+ Char_X = 54, >+ Char_Y = 55, >+ Char_Z = 56, > Char_EOF = 39; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "e", > "t", >@@ -122,6 +126,8 @@ > "V", > "EOF", > "DollarSign", >+ "Percent", >+ "_", > "z", > "D", > "E", >@@ -138,5 +144,6 @@ > "Z" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/OCLParsersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLParsersym.java,v >retrieving revision 1.10 >diff -u -r1.10 OCLParsersym.java >--- src/org/eclipse/ocl/parser/OCLParsersym.java 4 Sep 2009 13:40:43 -0000 1.10 >+++ src/org/eclipse/ocl/parser/OCLParsersym.java 4 Sep 2009 16:51:43 -0000 >@@ -12,11 +12,13 @@ > * E.D.Willink - Elimination of some shift-reduce conflicts > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+* Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLParsersym.java,v 1.10 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser; >@@ -136,7 +138,7 @@ > TK_MULTI_LINE_COMMENT = 101, > TK_ERROR_TOKEN = 102; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "LPAREN", > "IDENTIFIER", >@@ -242,5 +244,6 @@ > "ERROR_TOKEN" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/OCLLexerprs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLLexerprs.java,v >retrieving revision 1.7 >diff -u -r1.7 OCLLexerprs.java >--- src/org/eclipse/ocl/parser/OCLLexerprs.java 4 Sep 2009 13:40:43 -0000 1.7 >+++ src/org/eclipse/ocl/parser/OCLLexerprs.java 4 Sep 2009 16:51:43 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,16 +10,112 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* - Bug 259818 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLLexerprs.java,v 1.7 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ > */ > > package org.eclipse.ocl.parser; > >-public class OCLLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLLexersym { >+public class OCLLexerprs implements lpg.runtime.ParseTable, OCLLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 50; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 103; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 824; >+ public final int getLaStateOffset() { return LA_STATE_OFFSET; } >+ >+ public final static int MAX_LA = 1; >+ public final int getMaxLa() { return MAX_LA; } >+ >+ public final static int NUM_RULES = 309; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 44; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 147; >+ public final int getNumSymbols() { return NUM_SYMBOLS; } >+ >+ public final static int SEGMENT_SIZE = 8192; >+ public final int getSegmentSize() { return SEGMENT_SIZE; } >+ >+ public final static int START_STATE = 310; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 0; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 99; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 104; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 514; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 515; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = false; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLLexersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,1,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,1,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 20,25,26,27,35,4,15,37,40,43, >+ 24,5,3,6,17,18,23,32,34,36, >+ 41,42,2,7,8,9,10,11,12,13, >+ 14,16,19,33,38,39,44,1,21,22, >+ 28,29,30,31 >+ }; >+ }; >+ public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex; >+ public final int prosthesesIndex(int index) { return prosthesesIndex[index]; } > > public interface IsKeyword { > public final static byte isKeyword[] = {0, >@@ -476,56 +572,21 @@ > public final int scopeState(int index) { return 0;} > public final int inSymb(int index) { return 0;} > public final String name(int index) { return null; } >- public final int getErrorSymbol() { return 0; } >- public final int getScopeUbound() { return 0; } >- public final int getScopeSize() { return 0; } >- public final int getMaxNameLength() { return 0; } >- >- public final static int >- NUM_STATES = 50, >- NT_OFFSET = 103, >- LA_STATE_OFFSET = 824, >- MAX_LA = 1, >- NUM_RULES = 309, >- NUM_NONTERMINALS = 44, >- NUM_SYMBOLS = 147, >- SEGMENT_SIZE = 8192, >- START_STATE = 310, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 99, >- EOLT_SYMBOL = 104, >- ACCEPT_ACTION = 514, >- ERROR_ACTION = 515; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { return 0; } > public final int asi(int state) { return 0; } > public final int nasi(int state) { return 0; } > public final int inSymbol(int state) { return 0; } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/OCLLexersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLLexersym.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLLexersym.java >--- src/org/eclipse/ocl/parser/OCLLexersym.java 4 Sep 2009 13:40:43 -0000 1.6 >+++ src/org/eclipse/ocl/parser/OCLLexersym.java 4 Sep 2009 16:51:43 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,11 +10,13 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* - Bug 259818 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLLexersym.java,v 1.6 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ > */ > > package org.eclipse.ocl.parser; >@@ -130,7 +132,7 @@ > Char_Equal = 15, > Char_EOF = 99; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "0", > "1", >@@ -237,5 +239,6 @@ > "CtlCharNotWS" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/OCLParser.g >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLParser.g,v >retrieving revision 1.5 >diff -u -r1.5 OCLParser.g >--- src/org/eclipse/ocl/parser/OCLParser.g 4 Sep 2009 13:40:43 -0000 1.5 >+++ src/org/eclipse/ocl/parser/OCLParser.g 4 Sep 2009 16:51:43 -0000 >@@ -1,7 +1,7 @@ > --/** > -- * <copyright> > -- * >--- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * Copyright (c) 2005, 2009 IBM Corporation, Open Canarias S.L. and others. > -- * All rights reserved. This program and the accompanying materials > -- * are made available under the terms of the Eclipse Public License v1.0 > -- * which accompanies this distribution, and is available at >@@ -12,6 +12,7 @@ > -- * E.D. Willink - Elimination of some shift-reduce conflicts > -- * - Bug 259818 > -- * E.D.Willink - Bug 285633 static definitions >+-- * Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > -- * > -- * </copyright> > -- * >@@ -30,27 +31,27 @@ > %options margin=4 > %options noserialize > %options package=org.eclipse.ocl.parser >-%options import_terminals=OCLLexer.g >+%options import_terminals=OCLLexer.gi > %options ast_type=CSTNode > %options programming_language=java >-%options action=("*.java", "/.", "./") >-%options ParseTable=lpg.lpgjavaruntime.ParseTable >+%options action-block=("*.java", "/.", "./") >+%options ParseTable=lpg.runtime.ParseTable > %options include_directory=".;../lpg" > >-$Start >+%Start > goal >-$End >+%End > >-$Include >- EssentialOCL.g >-$End >+%Import >+ EssentialOCL.gi >+%End > >-$Define >+%Define > $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./ > $lex_stream_class /.OCLLexer./ >-$End >+%End > >-$Globals >+%Globals > /. > import org.eclipse.ocl.Environment; > import org.eclipse.ocl.cst.DefCS; >@@ -61,9 +62,9 @@ > import org.eclipse.ocl.cst.PackageDeclarationCS; > import org.eclipse.ocl.cst.PrePostOrBodyEnum; > ./ >-$End >+%End > >-$KeyWords >+%KeyWords > context > package > >@@ -74,9 +75,9 @@ > -- > attr > oper >-$End >+%End > >-$Rules >+%Rules > -- opt = optional > -- m = multiple > >@@ -86,56 +87,56 @@ > goal -> prePostOrBodyDeclCS > goal -> initOrDerValueCS > goal -> variableCS >- goal -> $empty >+ goal -> %empty > > packageDeclarationCSm -> packageDeclarationCS > packageDeclarationCSm ::= packageDeclarationCSm packageDeclarationCS >- /.$BeginJava >+ /.$BeginCode > PackageDeclarationCS result = (PackageDeclarationCS)$getSym(2); > result.setPackageDeclarationCS((PackageDeclarationCS) $getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > packageDeclarationCS ::= package pathNameCS contextDeclCSmopt endpackage >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createPackageDeclarationCS( > (PathNameCS)$getSym(2), > (EList)$getSym(3) > ); > setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > packageDeclarationCS1 ::= contextDeclCSm >- /.$BeginJava >+ /.$BeginCode > EList contextDecls = (EList)$getSym(1); > CSTNode result = createPackageDeclarationCS(null, contextDecls); > if (!contextDecls.isEmpty()) { > setOffsets(result, (CSTNode)contextDecls.get(0), (CSTNode)contextDecls.get(contextDecls.size()-1)); > } > $setResult(result); >- $EndJava >+ $EndCode > ./ > > >- contextDeclCSmopt ::= $empty >+ contextDeclCSmopt ::= %empty > /.$EmptyListAction./ > contextDeclCSmopt -> contextDeclCSm > > contextDeclCSm ::= contextDeclCS >- /.$BeginJava >+ /.$BeginCode > EList result = new BasicEList(); > result.add($getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > contextDeclCSm ::= contextDeclCSm contextDeclCS >- /.$BeginJava >+ /.$BeginCode > EList result = (EList)$getSym(1); > result.add($getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > contextDeclCS -> classifierContextDeclCS >@@ -143,7 +144,7 @@ > contextDeclCS -> propertyContextCS > > propertyContextCS ::= context pathNameCS '::' simpleNameCS ':' typeCS initOrDerValueCSm >- /.$BeginJava >+ /.$BeginCode > EList<InitOrDerValueCS> list = (EList<InitOrDerValueCS>)$getSym(7); > CSTNode result = createPropertyContextCS( > (PathNameCS)$getSym(2), >@@ -153,41 +154,41 @@ > ); > setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > initOrDerValueCSm ::= initOrDerValueCS >- /.$BeginJava >+ /.$BeginCode > EList<InitOrDerValueCS> result = new BasicEList<InitOrDerValueCS>(); > result.add((InitOrDerValueCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > initOrDerValueCSm ::= initOrDerValueCSm initOrDerValueCS >- /.$BeginJava >+ /.$BeginCode > EList<InitOrDerValueCS> result = (EList<InitOrDerValueCS>)$getSym(1); > result.add((InitOrDerValueCS)$getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > initOrDerValueCS ::= init ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createInitValueCS((OCLExpressionCS)$getSym(3)); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > initOrDerValueCS ::= derive ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createDerValueCS((OCLExpressionCS)$getSym(3)); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > classifierContextDeclCS ::= context pathNameCS invOrDefCSm >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3); > CSTNode result = createClassifierContextDeclCS( > (PathNameCS)$getSym(2), >@@ -195,56 +196,56 @@ > ); > setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > invOrDefCSm ::= invOrDefCS >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> result = new BasicEList<InvOrDefCS>(); > result.add((InvOrDefCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > invOrDefCSm ::= invOrDefCSm invOrDefCS >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> result = (EList<InvOrDefCS>)$getSym(1); > result.add((InvOrDefCS)$getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > invOrDefCS ::= inv simpleNameCSopt ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createInvCS( > (SimpleNameCS)$getSym(2), > (OCLExpressionCS)$getSym(4) > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > defCS ::= def simpleNameCSopt ':' defExpressionCS >- /.$BeginJava >+ /.$BeginCode > DefCS result = createDefCS( > (SimpleNameCS)$getSym(2), > (DefExpressionCS)$getSym(4) > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > invOrDefCS -> defCS > invOrDefCS ::= static defCS >- /.$BeginJava >+ /.$BeginCode > DefCS result = (DefCS)$getSym(2); > result.setStatic(true); > setOffsets(result, getIToken($getToken(1)), result); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > defExpressionCS ::= typedVariableCS '=' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > VariableCS variableCS = (VariableCS)$getSym(1); > OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3); > CSTNode result = createDefExpressionCS( >@@ -254,10 +255,10 @@ > ); > setOffsets(result, variableCS, expressionCS); > $setResult(result); >- $EndJava >+ $EndCode > ./ > defExpressionCS ::= operationCS1 '=' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createDefExpressionCS( > null, > (OperationCS)$getSym(1), >@@ -265,11 +266,11 @@ > ); > setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > operationContextDeclCS ::= context operationCS2 prePostOrBodyDeclCSm >- /.$BeginJava >+ /.$BeginCode > EList prePostOrBodyDecls = (EList)$getSym(3); > CSTNode result = createOperationContextDeclCS( > (OperationCS)$getSym(2), >@@ -277,26 +278,26 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)prePostOrBodyDecls.get(prePostOrBodyDecls.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > prePostOrBodyDeclCSm ::= prePostOrBodyDeclCS >- /.$BeginJava >+ /.$BeginCode > EList result = new BasicEList(); > result.add($getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > prePostOrBodyDeclCSm ::= prePostOrBodyDeclCSm prePostOrBodyDeclCS >- /.$BeginJava >+ /.$BeginCode > EList result = (EList)$getSym(1); > result.add($getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > prePostOrBodyDeclCS ::= pre simpleNameCSopt ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createPrePostOrBodyDeclCS( > PrePostOrBodyEnum.PRE_LITERAL, > (SimpleNameCS)$getSym(2), >@@ -304,10 +305,10 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > prePostOrBodyDeclCS ::= post simpleNameCSopt ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createPrePostOrBodyDeclCS( > PrePostOrBodyEnum.POST_LITERAL, > (SimpleNameCS)$getSym(2), >@@ -315,10 +316,10 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > prePostOrBodyDeclCS ::= body simpleNameCSopt ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createPrePostOrBodyDeclCS( > PrePostOrBodyEnum.BODY_LITERAL, > (SimpleNameCS)$getSym(2), >@@ -326,6 +327,6 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ >-$End >+%End >Index: src/org/eclipse/ocl/parser/OCLLexer.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLLexer.java,v >retrieving revision 1.8 >diff -u -r1.8 OCLLexer.java >--- src/org/eclipse/ocl/parser/OCLLexer.java 4 Sep 2009 13:40:43 -0000 1.8 >+++ src/org/eclipse/ocl/parser/OCLLexer.java 4 Sep 2009 16:51:43 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,16 +10,18 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* - Bug 259818 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLLexer.java,v 1.8 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ > */ > > package org.eclipse.ocl.parser; > >-import lpg.lpgjavaruntime.*; >+import lpg.runtime.*; > import org.eclipse.ocl.lpg.AbstractLexer; > import org.eclipse.ocl.lpg.AbstractParser; > import org.eclipse.ocl.Environment; >@@ -52,7 +54,7 @@ > > public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) { > this(environment, chars, "OCL", ECLIPSE_TAB_VALUE); >- kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER); > } > > public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab) { >@@ -81,7 +83,7 @@ > { > super.initialize(content, filename); > if (kwLexer == null) >- kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER); > else > kwLexer.setInputChars(getInputChars()); > } >@@ -92,7 +94,7 @@ > @Override > public void setInputChars(char[] inputChars) { > super.setInputChars(inputChars); >- kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER); > } > > @Override >@@ -108,12 +110,12 @@ > lexParser.parseCharacters(monitor); // Lex the input characters > > int i = getStreamIndex(); >- parser.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token >+ parser.makeToken(i, i, OCLParsersym.TK_EOF_TOKEN); // and end with the end of file token > parser.setStreamLength(parser.getSize()); > > return; > } >- >+ > final void makeToken(int kind) > { > int startOffset = getLeftSpan(), >@@ -126,7 +128,7 @@ > { > int startOffset = getLeftSpan(), > endOffset = getRightSpan(); >- super.getPrsStream().makeAdjunct(startOffset, endOffset, kind); >+ super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind); > } > > final void skipToken() >@@ -317,7 +319,7 @@ > // Rule 2: Token ::= EscapedSQ > // > case 2: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -325,7 +327,7 @@ > // Rule 3: Token ::= SingleQuote SLNotSQ SingleQuote > // > case 3: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -333,7 +335,7 @@ > // Rule 4: Token ::= Acute SLNotSQOpt Acute > // > case 4: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -341,7 +343,7 @@ > // Rule 5: Token ::= BackQuote SLNotSQOpt Acute > // > case 5: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -349,7 +351,7 @@ > // Rule 6: Token ::= IntegerLiteral > // > case 6: { >- makeToken(TK_INTEGER_LITERAL); >+ makeToken(OCLParsersym.TK_INTEGER_LITERAL); > break; > } > >@@ -357,7 +359,7 @@ > // Rule 7: Token ::= RealLiteral > // > case 7: { >- makeToken(TK_REAL_LITERAL); >+ makeToken(OCLParsersym.TK_REAL_LITERAL); > break; > } > >@@ -365,7 +367,7 @@ > // Rule 8: Token ::= NumericOperation > // > case 8: { >- makeToken(TK_NUMERIC_OPERATION); >+ makeToken(OCLParsersym.TK_NUMERIC_OPERATION); > break; > } > >@@ -373,7 +375,7 @@ > // Rule 9: Token ::= IntegerRangeStart > // > case 9: { >- makeToken(TK_INTEGER_RANGE_START); >+ makeToken(OCLParsersym.TK_INTEGER_RANGE_START); > break; > } > >@@ -381,7 +383,7 @@ > // Rule 10: Token ::= SLC > // > case 10: { >- makeComment(TK_SINGLE_LINE_COMMENT); >+ makeComment(OCLParsersym.TK_SINGLE_LINE_COMMENT); > break; > } > >@@ -389,7 +391,7 @@ > // Rule 11: Token ::= / * Inside Stars / > // > case 11: { >- makeComment(TK_MULTI_LINE_COMMENT); >+ makeComment(OCLParsersym.TK_MULTI_LINE_COMMENT); > break; > } > >@@ -405,7 +407,7 @@ > // Rule 13: Token ::= + > // > case 13: { >- makeToken(TK_PLUS); >+ makeToken(OCLParsersym.TK_PLUS); > break; > } > >@@ -413,7 +415,7 @@ > // Rule 14: Token ::= - > // > case 14: { >- makeToken(TK_MINUS); >+ makeToken(OCLParsersym.TK_MINUS); > break; > } > >@@ -421,7 +423,7 @@ > // Rule 15: Token ::= * > // > case 15: { >- makeToken(TK_MULTIPLY); >+ makeToken(OCLParsersym.TK_MULTIPLY); > break; > } > >@@ -429,7 +431,7 @@ > // Rule 16: Token ::= / > // > case 16: { >- makeToken(TK_DIVIDE); >+ makeToken(OCLParsersym.TK_DIVIDE); > break; > } > >@@ -437,7 +439,7 @@ > // Rule 17: Token ::= ( > // > case 17: { >- makeToken(TK_LPAREN); >+ makeToken(OCLParsersym.TK_LPAREN); > break; > } > >@@ -445,7 +447,7 @@ > // Rule 18: Token ::= ) > // > case 18: { >- makeToken(TK_RPAREN); >+ makeToken(OCLParsersym.TK_RPAREN); > break; > } > >@@ -453,7 +455,7 @@ > // Rule 19: Token ::= > > // > case 19: { >- makeToken(TK_GREATER); >+ makeToken(OCLParsersym.TK_GREATER); > break; > } > >@@ -461,7 +463,7 @@ > // Rule 20: Token ::= < > // > case 20: { >- makeToken(TK_LESS); >+ makeToken(OCLParsersym.TK_LESS); > break; > } > >@@ -469,7 +471,7 @@ > // Rule 21: Token ::= = > // > case 21: { >- makeToken(TK_EQUAL); >+ makeToken(OCLParsersym.TK_EQUAL); > break; > } > >@@ -477,7 +479,7 @@ > // Rule 22: Token ::= > = > // > case 22: { >- makeToken(TK_GREATER_EQUAL); >+ makeToken(OCLParsersym.TK_GREATER_EQUAL); > break; > } > >@@ -485,7 +487,7 @@ > // Rule 23: Token ::= < = > // > case 23: { >- makeToken(TK_LESS_EQUAL); >+ makeToken(OCLParsersym.TK_LESS_EQUAL); > break; > } > >@@ -493,7 +495,7 @@ > // Rule 24: Token ::= < > > // > case 24: { >- makeToken(TK_NOT_EQUAL); >+ makeToken(OCLParsersym.TK_NOT_EQUAL); > break; > } > >@@ -501,7 +503,7 @@ > // Rule 25: Token ::= [ > // > case 25: { >- makeToken(TK_LBRACKET); >+ makeToken(OCLParsersym.TK_LBRACKET); > break; > } > >@@ -509,7 +511,7 @@ > // Rule 26: Token ::= ] > // > case 26: { >- makeToken(TK_RBRACKET); >+ makeToken(OCLParsersym.TK_RBRACKET); > break; > } > >@@ -517,7 +519,7 @@ > // Rule 27: Token ::= { > // > case 27: { >- makeToken(TK_LBRACE); >+ makeToken(OCLParsersym.TK_LBRACE); > break; > } > >@@ -525,7 +527,7 @@ > // Rule 28: Token ::= } > // > case 28: { >- makeToken(TK_RBRACE); >+ makeToken(OCLParsersym.TK_RBRACE); > break; > } > >@@ -533,7 +535,7 @@ > // Rule 29: Token ::= - > > // > case 29: { >- makeToken(TK_ARROW); >+ makeToken(OCLParsersym.TK_ARROW); > break; > } > >@@ -541,7 +543,7 @@ > // Rule 30: Token ::= | > // > case 30: { >- makeToken(TK_BAR); >+ makeToken(OCLParsersym.TK_BAR); > break; > } > >@@ -549,7 +551,7 @@ > // Rule 31: Token ::= , > // > case 31: { >- makeToken(TK_COMMA); >+ makeToken(OCLParsersym.TK_COMMA); > break; > } > >@@ -557,7 +559,7 @@ > // Rule 32: Token ::= : > // > case 32: { >- makeToken(TK_COLON); >+ makeToken(OCLParsersym.TK_COLON); > break; > } > >@@ -565,7 +567,7 @@ > // Rule 33: Token ::= : : > // > case 33: { >- makeToken(TK_COLONCOLON); >+ makeToken(OCLParsersym.TK_COLONCOLON); > break; > } > >@@ -573,7 +575,7 @@ > // Rule 34: Token ::= ; > // > case 34: { >- makeToken(TK_SEMICOLON); >+ makeToken(OCLParsersym.TK_SEMICOLON); > break; > } > >@@ -581,7 +583,7 @@ > // Rule 35: Token ::= . > // > case 35: { >- makeToken(TK_DOT); >+ makeToken(OCLParsersym.TK_DOT); > break; > } > >@@ -589,7 +591,7 @@ > // Rule 36: Token ::= . . > // > case 36: { >- makeToken(TK_DOTDOT); >+ makeToken(OCLParsersym.TK_DOTDOT); > break; > } > >@@ -597,7 +599,7 @@ > // Rule 37: Token ::= @ p r e > // > case 37: { >- makeToken(TK_ATPRE); >+ makeToken(OCLParsersym.TK_ATPRE); > break; > } > >@@ -605,7 +607,7 @@ > // Rule 38: Token ::= ^ > // > case 38: { >- makeToken(TK_CARET); >+ makeToken(OCLParsersym.TK_CARET); > break; > } > >@@ -613,7 +615,7 @@ > // Rule 39: Token ::= ^ ^ > // > case 39: { >- makeToken(TK_CARETCARET); >+ makeToken(OCLParsersym.TK_CARETCARET); > break; > } > >@@ -621,7 +623,7 @@ > // Rule 40: Token ::= ? > // > case 40: { >- makeToken(TK_QUESTIONMARK); >+ makeToken(OCLParsersym.TK_QUESTIONMARK); > break; > } > >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLBacktrackingKWLexerprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java 4 Sep 2009 13:40:44 -0000 1.6 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java 4 Sep 2009 16:51:44 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2007 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,15 +10,98 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* E.D.Willink - Bug 285633 static definitions >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingKWLexerprs.java,v 1.6 2009/09/04 13:40:44 ewillink Exp $ >+* > */ > > package org.eclipse.ocl.parser.backtracking; > >-public class OCLBacktrackingKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingKWLexersym { >+public class OCLBacktrackingKWLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingKWLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 260; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 56; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 392; >+ public final int getLaStateOffset() { return LA_STATE_OFFSET; } >+ >+ public final static int MAX_LA = 1; >+ public final int getMaxLa() { return MAX_LA; } >+ >+ public final static int NUM_RULES = 64; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 2; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 58; >+ public final int getNumSymbols() { return NUM_SYMBOLS; } >+ >+ public final static int SEGMENT_SIZE = 8192; >+ public final int getSegmentSize() { return SEGMENT_SIZE; } >+ >+ public final static int START_STATE = 65; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 0; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 39; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 57; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 327; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 328; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = false; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLBacktrackingKWLexersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 2,1 >+ }; >+ }; >+ public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex; >+ public final int prosthesesIndex(int index) { return prosthesesIndex[index]; } > > public interface IsKeyword { > public final static byte isKeyword[] = {0, >@@ -27,7 +110,7 @@ > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, >- 0,0,0,0 >+ 0,0,0,0,0,0 > }; > }; > public final static byte isKeyword[] = IsKeyword.isKeyword; >@@ -156,7 +239,8 @@ > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, >- 0,0,0,0,0,0,0,0,0,0 >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -242,56 +326,21 @@ > public final int scopeState(int index) { return 0;} > public final int inSymb(int index) { return 0;} > public final String name(int index) { return null; } >- public final int getErrorSymbol() { return 0; } >- public final int getScopeUbound() { return 0; } >- public final int getScopeSize() { return 0; } >- public final int getMaxNameLength() { return 0; } >- >- public final static int >- NUM_STATES = 260, >- NT_OFFSET = 54, >- LA_STATE_OFFSET = 392, >- MAX_LA = 1, >- NUM_RULES = 64, >- NUM_NONTERMINALS = 2, >- NUM_SYMBOLS = 56, >- SEGMENT_SIZE = 8192, >- START_STATE = 65, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 39, >- EOLT_SYMBOL = 55, >- ACCEPT_ACTION = 327, >- ERROR_ACTION = 328; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { return 0; } > public final int asi(int state) { return 0; } > public final int nasi(int state) { return 0; } > public final int inSymbol(int state) { return 0; } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLBacktrackingKWLexer.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java 4 Sep 2009 13:40:44 -0000 1.6 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java 4 Sep 2009 16:51:44 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2007 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,10 +10,12 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* E.D.Willink - Bug 285633 static definitions >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingKWLexer.java,v 1.6 2009/09/04 13:40:44 ewillink Exp $ >+* > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -57,66 +59,68 @@ > final static int tokenKind[] = new int[128]; > static > { >- tokenKind['$'] = Char_DollarSign; >- >- tokenKind['a'] = Char_a; >- tokenKind['b'] = Char_b; >- tokenKind['c'] = Char_c; >- tokenKind['d'] = Char_d; >- tokenKind['e'] = Char_e; >- tokenKind['f'] = Char_f; >- tokenKind['g'] = Char_g; >- tokenKind['h'] = Char_h; >- tokenKind['i'] = Char_i; >- tokenKind['j'] = Char_j; >- tokenKind['k'] = Char_k; >- tokenKind['l'] = Char_l; >- tokenKind['m'] = Char_m; >- tokenKind['n'] = Char_n; >- tokenKind['o'] = Char_o; >- tokenKind['p'] = Char_p; >- tokenKind['q'] = Char_q; >- tokenKind['r'] = Char_r; >- tokenKind['s'] = Char_s; >- tokenKind['t'] = Char_t; >- tokenKind['u'] = Char_u; >- tokenKind['v'] = Char_v; >- tokenKind['w'] = Char_w; >- tokenKind['x'] = Char_x; >- tokenKind['y'] = Char_y; >- tokenKind['z'] = Char_z; >- >- tokenKind['A'] = Char_A; >- tokenKind['B'] = Char_B; >- tokenKind['C'] = Char_C; >- tokenKind['D'] = Char_D; >- tokenKind['E'] = Char_E; >- tokenKind['F'] = Char_F; >- tokenKind['G'] = Char_G; >- tokenKind['H'] = Char_H; >- tokenKind['I'] = Char_I; >- tokenKind['J'] = Char_J; >- tokenKind['K'] = Char_K; >- tokenKind['L'] = Char_L; >- tokenKind['M'] = Char_M; >- tokenKind['N'] = Char_N; >- tokenKind['O'] = Char_O; >- tokenKind['P'] = Char_P; >- tokenKind['Q'] = Char_Q; >- tokenKind['R'] = Char_R; >- tokenKind['S'] = Char_S; >- tokenKind['T'] = Char_T; >- tokenKind['U'] = Char_U; >- tokenKind['V'] = Char_V; >- tokenKind['W'] = Char_W; >- tokenKind['X'] = Char_X; >- tokenKind['Y'] = Char_Y; >- tokenKind['Z'] = Char_Z; >+ tokenKind['$'] = OCLBacktrackingKWLexersym.Char_DollarSign; >+ tokenKind['%'] = OCLBacktrackingKWLexersym.Char_Percent; >+ tokenKind['_'] = OCLBacktrackingKWLexersym.Char__; >+ >+ tokenKind['a'] = OCLBacktrackingKWLexersym.Char_a; >+ tokenKind['b'] = OCLBacktrackingKWLexersym.Char_b; >+ tokenKind['c'] = OCLBacktrackingKWLexersym.Char_c; >+ tokenKind['d'] = OCLBacktrackingKWLexersym.Char_d; >+ tokenKind['e'] = OCLBacktrackingKWLexersym.Char_e; >+ tokenKind['f'] = OCLBacktrackingKWLexersym.Char_f; >+ tokenKind['g'] = OCLBacktrackingKWLexersym.Char_g; >+ tokenKind['h'] = OCLBacktrackingKWLexersym.Char_h; >+ tokenKind['i'] = OCLBacktrackingKWLexersym.Char_i; >+ tokenKind['j'] = OCLBacktrackingKWLexersym.Char_j; >+ tokenKind['k'] = OCLBacktrackingKWLexersym.Char_k; >+ tokenKind['l'] = OCLBacktrackingKWLexersym.Char_l; >+ tokenKind['m'] = OCLBacktrackingKWLexersym.Char_m; >+ tokenKind['n'] = OCLBacktrackingKWLexersym.Char_n; >+ tokenKind['o'] = OCLBacktrackingKWLexersym.Char_o; >+ tokenKind['p'] = OCLBacktrackingKWLexersym.Char_p; >+ tokenKind['q'] = OCLBacktrackingKWLexersym.Char_q; >+ tokenKind['r'] = OCLBacktrackingKWLexersym.Char_r; >+ tokenKind['s'] = OCLBacktrackingKWLexersym.Char_s; >+ tokenKind['t'] = OCLBacktrackingKWLexersym.Char_t; >+ tokenKind['u'] = OCLBacktrackingKWLexersym.Char_u; >+ tokenKind['v'] = OCLBacktrackingKWLexersym.Char_v; >+ tokenKind['w'] = OCLBacktrackingKWLexersym.Char_w; >+ tokenKind['x'] = OCLBacktrackingKWLexersym.Char_x; >+ tokenKind['y'] = OCLBacktrackingKWLexersym.Char_y; >+ tokenKind['z'] = OCLBacktrackingKWLexersym.Char_z; >+ >+ tokenKind['A'] = OCLBacktrackingKWLexersym.Char_A; >+ tokenKind['B'] = OCLBacktrackingKWLexersym.Char_B; >+ tokenKind['C'] = OCLBacktrackingKWLexersym.Char_C; >+ tokenKind['D'] = OCLBacktrackingKWLexersym.Char_D; >+ tokenKind['E'] = OCLBacktrackingKWLexersym.Char_E; >+ tokenKind['F'] = OCLBacktrackingKWLexersym.Char_F; >+ tokenKind['G'] = OCLBacktrackingKWLexersym.Char_G; >+ tokenKind['H'] = OCLBacktrackingKWLexersym.Char_H; >+ tokenKind['I'] = OCLBacktrackingKWLexersym.Char_I; >+ tokenKind['J'] = OCLBacktrackingKWLexersym.Char_J; >+ tokenKind['K'] = OCLBacktrackingKWLexersym.Char_K; >+ tokenKind['L'] = OCLBacktrackingKWLexersym.Char_L; >+ tokenKind['M'] = OCLBacktrackingKWLexersym.Char_M; >+ tokenKind['N'] = OCLBacktrackingKWLexersym.Char_N; >+ tokenKind['O'] = OCLBacktrackingKWLexersym.Char_O; >+ tokenKind['P'] = OCLBacktrackingKWLexersym.Char_P; >+ tokenKind['Q'] = OCLBacktrackingKWLexersym.Char_Q; >+ tokenKind['R'] = OCLBacktrackingKWLexersym.Char_R; >+ tokenKind['S'] = OCLBacktrackingKWLexersym.Char_S; >+ tokenKind['T'] = OCLBacktrackingKWLexersym.Char_T; >+ tokenKind['U'] = OCLBacktrackingKWLexersym.Char_U; >+ tokenKind['V'] = OCLBacktrackingKWLexersym.Char_V; >+ tokenKind['W'] = OCLBacktrackingKWLexersym.Char_W; >+ tokenKind['X'] = OCLBacktrackingKWLexersym.Char_X; >+ tokenKind['Y'] = OCLBacktrackingKWLexersym.Char_Y; >+ tokenKind['Z'] = OCLBacktrackingKWLexersym.Char_Z; > }; > >- final int getKind(char c) >+ final int getKind(int c) > { >- return (c < 128 ? tokenKind[c] : 0); >+ return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0); > } > > >@@ -128,388 +132,451 @@ > // > // Rule 1: KeyWord ::= s e l f > // >- keywordKind[1] = (TK_self); >+ >+ keywordKind[1] = (OCLBacktrackingParsersym.TK_self); > > > // > // Rule 2: KeyWord ::= i n v > // >- keywordKind[2] = (TK_inv); >+ >+ keywordKind[2] = (OCLBacktrackingParsersym.TK_inv); > > > // > // Rule 3: KeyWord ::= p r e > // >- keywordKind[3] = (TK_pre); >+ >+ keywordKind[3] = (OCLBacktrackingParsersym.TK_pre); > > > // > // Rule 4: KeyWord ::= p o s t > // >- keywordKind[4] = (TK_post); >+ >+ keywordKind[4] = (OCLBacktrackingParsersym.TK_post); > > > // > // Rule 5: KeyWord ::= b o d y > // >- keywordKind[5] = (TK_body); >+ >+ keywordKind[5] = (OCLBacktrackingParsersym.TK_body); > > > // > // Rule 6: KeyWord ::= c o n t e x t > // >- keywordKind[6] = (TK_context); >+ >+ keywordKind[6] = (OCLBacktrackingParsersym.TK_context); > > > // > // Rule 7: KeyWord ::= p a c k a g e > // >- keywordKind[7] = (TK_package); >+ >+ keywordKind[7] = (OCLBacktrackingParsersym.TK_package); > > > // > // Rule 8: KeyWord ::= e n d p a c k a g e > // >- keywordKind[8] = (TK_endpackage); >+ >+ keywordKind[8] = (OCLBacktrackingParsersym.TK_endpackage); > > > // > // Rule 9: KeyWord ::= d e f > // >- keywordKind[9] = (TK_def); >+ >+ keywordKind[9] = (OCLBacktrackingParsersym.TK_def); > > > // > // Rule 10: KeyWord ::= d e r i v e > // >- keywordKind[10] = (TK_derive); >+ >+ keywordKind[10] = (OCLBacktrackingParsersym.TK_derive); > > > // > // Rule 11: KeyWord ::= i n i t > // >- keywordKind[11] = (TK_init); >+ >+ keywordKind[11] = (OCLBacktrackingParsersym.TK_init); > > > // > // Rule 12: KeyWord ::= i f > // >- keywordKind[12] = (TK_if); >+ >+ keywordKind[12] = (OCLBacktrackingParsersym.TK_if); > > > // > // Rule 13: KeyWord ::= t h e n > // >- keywordKind[13] = (TK_then); >+ >+ keywordKind[13] = (OCLBacktrackingParsersym.TK_then); > > > // > // Rule 14: KeyWord ::= e l s e > // >- keywordKind[14] = (TK_else); >+ >+ keywordKind[14] = (OCLBacktrackingParsersym.TK_else); > > > // > // Rule 15: KeyWord ::= e n d i f > // >- keywordKind[15] = (TK_endif); >+ >+ keywordKind[15] = (OCLBacktrackingParsersym.TK_endif); > > > // > // Rule 16: KeyWord ::= a n d > // >- keywordKind[16] = (TK_and); >+ >+ keywordKind[16] = (OCLBacktrackingParsersym.TK_and); > > > // > // Rule 17: KeyWord ::= o r > // >- keywordKind[17] = (TK_or); >+ >+ keywordKind[17] = (OCLBacktrackingParsersym.TK_or); > > > // > // Rule 18: KeyWord ::= x o r > // >- keywordKind[18] = (TK_xor); >+ >+ keywordKind[18] = (OCLBacktrackingParsersym.TK_xor); > > > // > // Rule 19: KeyWord ::= n o t > // >- keywordKind[19] = (TK_not); >+ >+ keywordKind[19] = (OCLBacktrackingParsersym.TK_not); > > > // > // Rule 20: KeyWord ::= i m p l i e s > // >- keywordKind[20] = (TK_implies); >+ >+ keywordKind[20] = (OCLBacktrackingParsersym.TK_implies); > > > // > // Rule 21: KeyWord ::= l e t > // >- keywordKind[21] = (TK_let); >+ >+ keywordKind[21] = (OCLBacktrackingParsersym.TK_let); > > > // > // Rule 22: KeyWord ::= i n > // >- keywordKind[22] = (TK_in); >+ >+ keywordKind[22] = (OCLBacktrackingParsersym.TK_in); > > > // > // Rule 23: KeyWord ::= t r u e > // >- keywordKind[23] = (TK_true); >+ >+ keywordKind[23] = (OCLBacktrackingParsersym.TK_true); > > > // > // Rule 24: KeyWord ::= f a l s e > // >- keywordKind[24] = (TK_false); >+ >+ keywordKind[24] = (OCLBacktrackingParsersym.TK_false); > > > // > // Rule 25: KeyWord ::= S e t > // >- keywordKind[25] = (TK_Set); >+ >+ keywordKind[25] = (OCLBacktrackingParsersym.TK_Set); > > > // > // Rule 26: KeyWord ::= B a g > // >- keywordKind[26] = (TK_Bag); >+ >+ keywordKind[26] = (OCLBacktrackingParsersym.TK_Bag); > > > // > // Rule 27: KeyWord ::= S e q u e n c e > // >- keywordKind[27] = (TK_Sequence); >+ >+ keywordKind[27] = (OCLBacktrackingParsersym.TK_Sequence); > > > // > // Rule 28: KeyWord ::= C o l l e c t i o n > // >- keywordKind[28] = (TK_Collection); >+ >+ keywordKind[28] = (OCLBacktrackingParsersym.TK_Collection); > > > // > // Rule 29: KeyWord ::= O r d e r e d S e t > // >- keywordKind[29] = (TK_OrderedSet); >+ >+ keywordKind[29] = (OCLBacktrackingParsersym.TK_OrderedSet); > > > // > // Rule 30: KeyWord ::= i t e r a t e > // >- keywordKind[30] = (TK_iterate); >+ >+ keywordKind[30] = (OCLBacktrackingParsersym.TK_iterate); > > > // > // Rule 31: KeyWord ::= f o r A l l > // >- keywordKind[31] = (TK_forAll); >+ >+ keywordKind[31] = (OCLBacktrackingParsersym.TK_forAll); > > > // > // Rule 32: KeyWord ::= e x i s t s > // >- keywordKind[32] = (TK_exists); >+ >+ keywordKind[32] = (OCLBacktrackingParsersym.TK_exists); > > > // > // Rule 33: KeyWord ::= i s U n i q u e > // >- keywordKind[33] = (TK_isUnique); >+ >+ keywordKind[33] = (OCLBacktrackingParsersym.TK_isUnique); > > > // > // Rule 34: KeyWord ::= a n y > // >- keywordKind[34] = (TK_any); >+ >+ keywordKind[34] = (OCLBacktrackingParsersym.TK_any); > > > // > // Rule 35: KeyWord ::= o n e > // >- keywordKind[35] = (TK_one); >+ >+ keywordKind[35] = (OCLBacktrackingParsersym.TK_one); > > > // > // Rule 36: KeyWord ::= c o l l e c t > // >- keywordKind[36] = (TK_collect); >+ >+ keywordKind[36] = (OCLBacktrackingParsersym.TK_collect); > > > // > // Rule 37: KeyWord ::= s e l e c t > // >- keywordKind[37] = (TK_select); >+ >+ keywordKind[37] = (OCLBacktrackingParsersym.TK_select); > > > // > // Rule 38: KeyWord ::= r e j e c t > // >- keywordKind[38] = (TK_reject); >+ >+ keywordKind[38] = (OCLBacktrackingParsersym.TK_reject); > > > // > // Rule 39: KeyWord ::= c o l l e c t N e s t e d > // >- keywordKind[39] = (TK_collectNested); >+ >+ keywordKind[39] = (OCLBacktrackingParsersym.TK_collectNested); > > > // > // Rule 40: KeyWord ::= s o r t e d B y > // >- keywordKind[40] = (TK_sortedBy); >+ >+ keywordKind[40] = (OCLBacktrackingParsersym.TK_sortedBy); > > > // > // Rule 41: KeyWord ::= c l o s u r e > // >- keywordKind[41] = (TK_closure); >+ >+ keywordKind[41] = (OCLBacktrackingParsersym.TK_closure); > > > // > // Rule 42: KeyWord ::= o c l I s K i n d O f > // >- keywordKind[42] = (TK_oclIsKindOf); >+ >+ keywordKind[42] = (OCLBacktrackingParsersym.TK_oclIsKindOf); > > > // > // Rule 43: KeyWord ::= o c l I s T y p e O f > // >- keywordKind[43] = (TK_oclIsTypeOf); >+ >+ keywordKind[43] = (OCLBacktrackingParsersym.TK_oclIsTypeOf); > > > // > // Rule 44: KeyWord ::= o c l A s T y p e > // >- keywordKind[44] = (TK_oclAsType); >+ >+ keywordKind[44] = (OCLBacktrackingParsersym.TK_oclAsType); > > > // > // Rule 45: KeyWord ::= o c l I s N e w > // >- keywordKind[45] = (TK_oclIsNew); >+ >+ keywordKind[45] = (OCLBacktrackingParsersym.TK_oclIsNew); > > > // > // Rule 46: KeyWord ::= o c l I s U n d e f i n e d > // >- keywordKind[46] = (TK_oclIsUndefined); >+ >+ keywordKind[46] = (OCLBacktrackingParsersym.TK_oclIsUndefined); > > > // > // Rule 47: KeyWord ::= o c l I s I n v a l i d > // >- keywordKind[47] = (TK_oclIsInvalid); >+ >+ keywordKind[47] = (OCLBacktrackingParsersym.TK_oclIsInvalid); > > > // > // Rule 48: KeyWord ::= o c l I s I n S t a t e > // >- keywordKind[48] = (TK_oclIsInState); >+ >+ keywordKind[48] = (OCLBacktrackingParsersym.TK_oclIsInState); > > > // > // Rule 49: KeyWord ::= a l l I n s t a n c e s > // >- keywordKind[49] = (TK_allInstances); >+ >+ keywordKind[49] = (OCLBacktrackingParsersym.TK_allInstances); > > > // > // Rule 50: KeyWord ::= S t r i n g > // >- keywordKind[50] = (TK_String); >+ >+ keywordKind[50] = (OCLBacktrackingParsersym.TK_String); > > > // > // Rule 51: KeyWord ::= I n t e g e r > // >- keywordKind[51] = (TK_Integer); >+ >+ keywordKind[51] = (OCLBacktrackingParsersym.TK_Integer); > > > // > // Rule 52: KeyWord ::= U n l i m i t e d N a t u r a l > // >- keywordKind[52] = (TK_UnlimitedNatural); >+ >+ keywordKind[52] = (OCLBacktrackingParsersym.TK_UnlimitedNatural); > > > // > // Rule 53: KeyWord ::= R e a l > // >- keywordKind[53] = (TK_Real); >+ >+ keywordKind[53] = (OCLBacktrackingParsersym.TK_Real); > > > // > // Rule 54: KeyWord ::= B o o l e a n > // >- keywordKind[54] = (TK_Boolean); >+ >+ keywordKind[54] = (OCLBacktrackingParsersym.TK_Boolean); > > > // > // Rule 55: KeyWord ::= T u p l e > // >- keywordKind[55] = (TK_Tuple); >+ >+ keywordKind[55] = (OCLBacktrackingParsersym.TK_Tuple); > > > // > // Rule 56: KeyWord ::= O c l A n y > // >- keywordKind[56] = (TK_OclAny); >+ >+ keywordKind[56] = (OCLBacktrackingParsersym.TK_OclAny); > > > // > // Rule 57: KeyWord ::= O c l V o i d > // >- keywordKind[57] = (TK_OclVoid); >+ >+ keywordKind[57] = (OCLBacktrackingParsersym.TK_OclVoid); > > > // > // Rule 58: KeyWord ::= O c l I n v a l i d > // >- keywordKind[58] = (TK_OclInvalid); >+ >+ keywordKind[58] = (OCLBacktrackingParsersym.TK_OclInvalid); > > > // > // Rule 59: KeyWord ::= O c l M e s s a g e > // >- keywordKind[59] = (TK_OclMessage); >+ >+ keywordKind[59] = (OCLBacktrackingParsersym.TK_OclMessage); > > > // > // Rule 60: KeyWord ::= n u l l > // >- keywordKind[60] = (TK_null); >+ >+ keywordKind[60] = (OCLBacktrackingParsersym.TK_null); > > > // > // Rule 61: KeyWord ::= i n v a l i d > // >- keywordKind[61] = (TK_invalid); >+ >+ keywordKind[61] = (OCLBacktrackingParsersym.TK_invalid); > > > // > // Rule 62: KeyWord ::= a t t r > // >- keywordKind[62] = (TK_attr); >+ >+ keywordKind[62] = (OCLBacktrackingParsersym.TK_attr); > > > // > // Rule 63: KeyWord ::= o p e r > // >- keywordKind[63] = (TK_oper); >+ >+ keywordKind[63] = (OCLBacktrackingParsersym.TK_oper); > > > // > // Rule 64: KeyWord ::= s t a t i c > // >- keywordKind[64] = (TK_static); >+ >+ keywordKind[64] = (OCLBacktrackingParsersym.TK_static); > > >- > for (int i = 0; i < keywordKind.length; i++) > { > if (keywordKind[i] == 0) >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java,v >retrieving revision 1.5 >diff -u -r1.5 OCLBacktrackingLexer.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java 4 Sep 2009 13:40:44 -0000 1.5 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java 4 Sep 2009 16:51:44 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,16 +10,18 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* - Bug 259818 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingLexer.java,v 1.5 2009/09/04 13:40:44 ewillink Exp $ >+* $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; > >-import lpg.lpgjavaruntime.*; >+import lpg.runtime.*; > import org.eclipse.ocl.lpg.AbstractLexer; > import org.eclipse.ocl.lpg.AbstractParser; > import org.eclipse.ocl.Environment; >@@ -52,7 +54,7 @@ > > public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) { > this(environment, chars, "OCL", ECLIPSE_TAB_VALUE); >- kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER); > } > > public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab) { >@@ -81,7 +83,7 @@ > { > super.initialize(content, filename); > if (kwLexer == null) >- kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER); > else > kwLexer.setInputChars(getInputChars()); > } >@@ -92,7 +94,7 @@ > @Override > public void setInputChars(char[] inputChars) { > super.setInputChars(inputChars); >- kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER); > } > > @Override >@@ -108,12 +110,12 @@ > lexParser.parseCharacters(monitor); // Lex the input characters > > int i = getStreamIndex(); >- parser.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token >+ parser.makeToken(i, i, OCLBacktrackingParsersym.TK_EOF_TOKEN); // and end with the end of file token > parser.setStreamLength(parser.getSize()); > > return; > } >- >+ > final void makeToken(int kind) > { > int startOffset = getLeftSpan(), >@@ -126,7 +128,7 @@ > { > int startOffset = getLeftSpan(), > endOffset = getRightSpan(); >- super.getPrsStream().makeAdjunct(startOffset, endOffset, kind); >+ super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind); > } > > final void skipToken() >@@ -317,7 +319,7 @@ > // Rule 2: Token ::= EscapedSQ > // > case 2: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -325,7 +327,7 @@ > // Rule 3: Token ::= SingleQuote SLNotSQ SingleQuote > // > case 3: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -333,7 +335,7 @@ > // Rule 4: Token ::= Acute SLNotSQOpt Acute > // > case 4: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -341,7 +343,7 @@ > // Rule 5: Token ::= BackQuote SLNotSQOpt Acute > // > case 5: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -349,7 +351,7 @@ > // Rule 6: Token ::= IntegerLiteral > // > case 6: { >- makeToken(TK_INTEGER_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_INTEGER_LITERAL); > break; > } > >@@ -357,7 +359,7 @@ > // Rule 7: Token ::= RealLiteral > // > case 7: { >- makeToken(TK_REAL_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_REAL_LITERAL); > break; > } > >@@ -365,7 +367,7 @@ > // Rule 8: Token ::= NumericOperation > // > case 8: { >- makeToken(TK_NUMERIC_OPERATION); >+ makeToken(OCLBacktrackingParsersym.TK_NUMERIC_OPERATION); > break; > } > >@@ -373,7 +375,7 @@ > // Rule 9: Token ::= IntegerRangeStart > // > case 9: { >- makeToken(TK_INTEGER_RANGE_START); >+ makeToken(OCLBacktrackingParsersym.TK_INTEGER_RANGE_START); > break; > } > >@@ -381,7 +383,7 @@ > // Rule 10: Token ::= SLC > // > case 10: { >- makeComment(TK_SINGLE_LINE_COMMENT); >+ makeComment(OCLBacktrackingParsersym.TK_SINGLE_LINE_COMMENT); > break; > } > >@@ -389,7 +391,7 @@ > // Rule 11: Token ::= / * Inside Stars / > // > case 11: { >- makeComment(TK_MULTI_LINE_COMMENT); >+ makeComment(OCLBacktrackingParsersym.TK_MULTI_LINE_COMMENT); > break; > } > >@@ -405,7 +407,7 @@ > // Rule 13: Token ::= + > // > case 13: { >- makeToken(TK_PLUS); >+ makeToken(OCLBacktrackingParsersym.TK_PLUS); > break; > } > >@@ -413,7 +415,7 @@ > // Rule 14: Token ::= - > // > case 14: { >- makeToken(TK_MINUS); >+ makeToken(OCLBacktrackingParsersym.TK_MINUS); > break; > } > >@@ -421,7 +423,7 @@ > // Rule 15: Token ::= * > // > case 15: { >- makeToken(TK_MULTIPLY); >+ makeToken(OCLBacktrackingParsersym.TK_MULTIPLY); > break; > } > >@@ -429,7 +431,7 @@ > // Rule 16: Token ::= / > // > case 16: { >- makeToken(TK_DIVIDE); >+ makeToken(OCLBacktrackingParsersym.TK_DIVIDE); > break; > } > >@@ -437,7 +439,7 @@ > // Rule 17: Token ::= ( > // > case 17: { >- makeToken(TK_LPAREN); >+ makeToken(OCLBacktrackingParsersym.TK_LPAREN); > break; > } > >@@ -445,7 +447,7 @@ > // Rule 18: Token ::= ) > // > case 18: { >- makeToken(TK_RPAREN); >+ makeToken(OCLBacktrackingParsersym.TK_RPAREN); > break; > } > >@@ -453,7 +455,7 @@ > // Rule 19: Token ::= > > // > case 19: { >- makeToken(TK_GREATER); >+ makeToken(OCLBacktrackingParsersym.TK_GREATER); > break; > } > >@@ -461,7 +463,7 @@ > // Rule 20: Token ::= < > // > case 20: { >- makeToken(TK_LESS); >+ makeToken(OCLBacktrackingParsersym.TK_LESS); > break; > } > >@@ -469,7 +471,7 @@ > // Rule 21: Token ::= = > // > case 21: { >- makeToken(TK_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_EQUAL); > break; > } > >@@ -477,7 +479,7 @@ > // Rule 22: Token ::= > = > // > case 22: { >- makeToken(TK_GREATER_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_GREATER_EQUAL); > break; > } > >@@ -485,7 +487,7 @@ > // Rule 23: Token ::= < = > // > case 23: { >- makeToken(TK_LESS_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_LESS_EQUAL); > break; > } > >@@ -493,7 +495,7 @@ > // Rule 24: Token ::= < > > // > case 24: { >- makeToken(TK_NOT_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_NOT_EQUAL); > break; > } > >@@ -501,7 +503,7 @@ > // Rule 25: Token ::= [ > // > case 25: { >- makeToken(TK_LBRACKET); >+ makeToken(OCLBacktrackingParsersym.TK_LBRACKET); > break; > } > >@@ -509,7 +511,7 @@ > // Rule 26: Token ::= ] > // > case 26: { >- makeToken(TK_RBRACKET); >+ makeToken(OCLBacktrackingParsersym.TK_RBRACKET); > break; > } > >@@ -517,7 +519,7 @@ > // Rule 27: Token ::= { > // > case 27: { >- makeToken(TK_LBRACE); >+ makeToken(OCLBacktrackingParsersym.TK_LBRACE); > break; > } > >@@ -525,7 +527,7 @@ > // Rule 28: Token ::= } > // > case 28: { >- makeToken(TK_RBRACE); >+ makeToken(OCLBacktrackingParsersym.TK_RBRACE); > break; > } > >@@ -533,7 +535,7 @@ > // Rule 29: Token ::= - > > // > case 29: { >- makeToken(TK_ARROW); >+ makeToken(OCLBacktrackingParsersym.TK_ARROW); > break; > } > >@@ -541,7 +543,7 @@ > // Rule 30: Token ::= | > // > case 30: { >- makeToken(TK_BAR); >+ makeToken(OCLBacktrackingParsersym.TK_BAR); > break; > } > >@@ -549,7 +551,7 @@ > // Rule 31: Token ::= , > // > case 31: { >- makeToken(TK_COMMA); >+ makeToken(OCLBacktrackingParsersym.TK_COMMA); > break; > } > >@@ -557,7 +559,7 @@ > // Rule 32: Token ::= : > // > case 32: { >- makeToken(TK_COLON); >+ makeToken(OCLBacktrackingParsersym.TK_COLON); > break; > } > >@@ -565,7 +567,7 @@ > // Rule 33: Token ::= : : > // > case 33: { >- makeToken(TK_COLONCOLON); >+ makeToken(OCLBacktrackingParsersym.TK_COLONCOLON); > break; > } > >@@ -573,7 +575,7 @@ > // Rule 34: Token ::= ; > // > case 34: { >- makeToken(TK_SEMICOLON); >+ makeToken(OCLBacktrackingParsersym.TK_SEMICOLON); > break; > } > >@@ -581,7 +583,7 @@ > // Rule 35: Token ::= . > // > case 35: { >- makeToken(TK_DOT); >+ makeToken(OCLBacktrackingParsersym.TK_DOT); > break; > } > >@@ -589,7 +591,7 @@ > // Rule 36: Token ::= . . > // > case 36: { >- makeToken(TK_DOTDOT); >+ makeToken(OCLBacktrackingParsersym.TK_DOTDOT); > break; > } > >@@ -597,7 +599,7 @@ > // Rule 37: Token ::= @ p r e > // > case 37: { >- makeToken(TK_ATPRE); >+ makeToken(OCLBacktrackingParsersym.TK_ATPRE); > break; > } > >@@ -605,7 +607,7 @@ > // Rule 38: Token ::= ^ > // > case 38: { >- makeToken(TK_CARET); >+ makeToken(OCLBacktrackingParsersym.TK_CARET); > break; > } > >@@ -613,7 +615,7 @@ > // Rule 39: Token ::= ^ ^ > // > case 39: { >- makeToken(TK_CARETCARET); >+ makeToken(OCLBacktrackingParsersym.TK_CARETCARET); > break; > } > >@@ -621,7 +623,7 @@ > // Rule 40: Token ::= ? > // > case 40: { >- makeToken(TK_QUESTIONMARK); >+ makeToken(OCLBacktrackingParsersym.TK_QUESTIONMARK); > break; > } > >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java,v >retrieving revision 1.5 >diff -u -r1.5 OCLBacktrackingKWLexersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java 4 Sep 2009 13:40:44 -0000 1.5 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java 4 Sep 2009 16:51:44 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2007 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,10 +10,12 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* E.D.Willink - Bug 285633 static definitions >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingKWLexersym.java,v 1.5 2009/09/04 13:40:44 ewillink Exp $ >+* > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -30,6 +32,8 @@ > public interface OCLBacktrackingKWLexersym { > public final static int > Char_DollarSign = 40, >+ Char_Percent = 41, >+ Char__ = 42, > Char_a = 5, > Char_b = 30, > Char_c = 11, >@@ -55,36 +59,36 @@ > Char_w = 33, > Char_x = 19, > Char_y = 16, >- Char_z = 41, >+ Char_z = 43, > Char_A = 20, > Char_B = 29, > Char_C = 34, >- Char_D = 42, >- Char_E = 43, >- Char_F = 44, >- Char_G = 45, >- Char_H = 46, >+ Char_D = 44, >+ Char_E = 45, >+ Char_F = 46, >+ Char_G = 47, >+ Char_H = 48, > Char_I = 17, >- Char_J = 47, >+ Char_J = 49, > Char_K = 35, >- Char_L = 48, >+ Char_L = 50, > Char_M = 36, > Char_N = 21, > Char_O = 22, >- Char_P = 49, >- Char_Q = 50, >+ Char_P = 51, >+ Char_Q = 52, > Char_R = 37, > Char_S = 23, > Char_T = 24, > Char_U = 25, > Char_V = 38, >- Char_W = 51, >- Char_X = 52, >- Char_Y = 53, >- Char_Z = 54, >+ Char_W = 53, >+ Char_X = 54, >+ Char_Y = 55, >+ Char_Z = 56, > Char_EOF = 39; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "e", > "t", >@@ -126,6 +130,8 @@ > "V", > "EOF", > "DollarSign", >+ "Percent", >+ "_", > "z", > "D", > "E", >@@ -142,5 +148,6 @@ > "Z" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLBacktrackingParserprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java 4 Sep 2009 13:40:44 -0000 1.6 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java 4 Sep 2009 16:51:45 -0000 >@@ -12,11 +12,13 @@ > * E.D.Willink - Elimination of some shift-reduce conflicts > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+* Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingParserprs.java,v 1.6 2009/09/04 13:40:44 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -29,7 +31,115 @@ > * @since 1.3 > */ > @SuppressWarnings("nls") >-public class OCLBacktrackingParserprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingParsersym { >+public class OCLBacktrackingParserprs implements lpg.runtime.ParseTable, OCLBacktrackingParsersym { >+ public final static int ERROR_SYMBOL = 1; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 58; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 59; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 26; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 241; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 102; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 3935; >+ public final int getLaStateOffset() { return LA_STATE_OFFSET; } >+ >+ public final static int MAX_LA = 2; >+ public final int getMaxLa() { return MAX_LA; } >+ >+ public final static int NUM_RULES = 331; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 111; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 213; >+ public final int getNumSymbols() { return NUM_SYMBOLS; } >+ >+ public final static int SEGMENT_SIZE = 8192; >+ public final int getSegmentSize() { return SEGMENT_SIZE; } >+ >+ public final static int START_STATE = 3323; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 4; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 79; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 79; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 3603; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 3604; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = true; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLBacktrackingParsersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,1,0,0,0,1,0,0, >+ 0,1,0,0,0,0,0,0,0,0, >+ 0,0,0,0,1,1,0,1,0,0, >+ 0,0,0,0,1,1,0,0,0,1, >+ 0,0,0,0,0,0,1,0,0,0, >+ 0,0,1,0,0,1,0,0,0,0, >+ 0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 55,54,9,21,110,63,5,6,7,10, >+ 3,8,15,50,51,11,40,42,44,48, >+ 49,57,58,59,60,61,62,68,69,70, >+ 71,72,41,43,38,39,34,35,36,37, >+ 32,33,30,31,28,29,25,26,27,78, >+ 23,52,53,107,111,47,79,81,82,24, >+ 109,98,99,100,101,104,89,92,93,94, >+ 4,12,19,20,22,56,66,67,74,80, >+ 84,85,86,87,88,95,97,2,13,14, >+ 17,18,45,46,64,65,73,75,76,77, >+ 83,90,91,96,102,103,105,106,108,1, >+ 16 >+ }; >+ }; >+ public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex; >+ public final int prosthesesIndex(int index) { return prosthesesIndex[index]; } > > public interface IsKeyword { > public final static byte isKeyword[] = {0, >@@ -1583,33 +1693,33 @@ > > public interface ScopeRhs { > public final static char scopeRhs[] = {0, >- 155,95,118,0,103,0,155,95,105,0, >+ 155,95,118,0,1,0,155,95,105,0, > 149,2,0,149,69,0,149,91,149,69, >- 0,43,119,103,0,149,92,149,91,149, >- 69,0,44,119,103,0,43,119,44,119, >- 103,0,158,2,163,114,0,12,0,158, >+ 0,91,149,1,0,149,92,149,91,149, >+ 69,0,92,149,1,0,91,149,92,149, >+ 1,0,158,2,163,114,0,3,0,158, > 2,163,112,0,158,2,163,174,0,158, > 2,157,84,106,0,159,2,108,0,186, >- 2,105,90,0,186,2,105,89,0,45, >- 0,44,119,45,0,43,119,44,119,45, >- 0,183,68,0,52,119,0,16,0,0, >+ 2,105,90,0,186,2,105,89,0,85, >+ 0,92,149,85,0,91,149,92,149,85, >+ 0,183,68,0,83,149,0,80,154,0, > 158,2,154,112,0,158,2,154,114,0, > 158,2,154,174,0,203,2,52,0,159, >- 32,4,0,7,119,0,149,70,153,81, >+ 32,4,0,5,149,0,149,70,153,81, > 153,2,191,0,153,81,153,2,191,0, >- 18,119,12,0,153,2,191,0,22,118, >- 18,119,12,0,149,70,153,2,191,0, >+ 70,149,3,0,153,2,191,0,81,153, >+ 70,149,3,0,149,70,153,2,191,0, > 149,70,153,31,153,2,192,0,153,31, >- 153,2,192,0,153,2,192,0,19,118, >- 18,119,12,0,149,70,153,2,192,0, >- 149,2,192,0,199,94,52,0,14,0, >+ 153,2,192,0,153,2,192,0,31,153, >+ 70,149,3,0,149,70,153,2,192,0, >+ 149,2,192,0,199,94,52,0,74,0, > 197,94,108,0,158,2,105,84,106,0, >- 158,2,61,0,137,0,4,133,0,3, >- 133,0,141,0,2,131,0,1,131,0, >- 143,0,9,128,0,8,128,0,6,128, >- 0,5,128,0,145,0,10,126,0,7, >- 126,0,147,0,48,124,0,47,124,0, >- 46,124,0 >+ 158,2,61,0,137,0,20,135,0,19, >+ 135,0,141,0,29,138,0,28,138,0, >+ 143,0,24,140,0,23,140,0,22,140, >+ 0,21,140,0,145,0,7,144,0,5, >+ 144,0,147,0,27,146,0,26,146,0, >+ 25,146,0 > }; > }; > public final static char scopeRhs[] = ScopeRhs.scopeRhs; >@@ -1839,53 +1949,6 @@ > public final static String name[] = Name.name; > public final String name(int index) { return name[index]; } > >- public final static int >- ERROR_SYMBOL = 1, >- SCOPE_UBOUND = 58, >- SCOPE_SIZE = 59, >- MAX_NAME_LENGTH = 26; >- >- public final int getErrorSymbol() { return ERROR_SYMBOL; } >- public final int getScopeUbound() { return SCOPE_UBOUND; } >- public final int getScopeSize() { return SCOPE_SIZE; } >- public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >- >- public final static int >- NUM_STATES = 241, >- NT_OFFSET = 102, >- LA_STATE_OFFSET = 3935, >- MAX_LA = 2, >- NUM_RULES = 331, >- NUM_NONTERMINALS = 111, >- NUM_SYMBOLS = 213, >- SEGMENT_SIZE = 8192, >- START_STATE = 3323, >- IDENTIFIER_SYMBOL = 4, >- EOFT_SYMBOL = 79, >- EOLT_SYMBOL = 79, >- ACCEPT_ACTION = 3603, >- ERROR_ACTION = 3604; >- >- public final static boolean BACKTRACK = true; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { > return -baseCheck[state]; > } >@@ -1899,10 +1962,16 @@ > return inSymb[originalState(state)]; > } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java,v >retrieving revision 1.7 >diff -u -r1.7 OCLBacktrackingParser.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java 4 Sep 2009 13:40:44 -0000 1.7 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java 4 Sep 2009 16:51:44 -0000 >@@ -12,11 +12,13 @@ > * E.D.Willink - Elimination of some shift-reduce conflicts > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+* Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingParser.java,v 1.7 2009/09/04 13:40:44 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -43,15 +45,15 @@ > import org.eclipse.ocl.util.OCLStandardLibraryUtil; > import org.eclipse.ocl.utilities.PredefinedType; > >-import lpg.lpgjavaruntime.BadParseException; >-import lpg.lpgjavaruntime.BadParseSymFileException; >-import lpg.lpgjavaruntime.BacktrackingParser; >-import lpg.lpgjavaruntime.DiagnoseParser; >-import lpg.lpgjavaruntime.IToken; >-import lpg.lpgjavaruntime.Monitor; >-import lpg.lpgjavaruntime.NotBacktrackParseTableException; >-import lpg.lpgjavaruntime.ParseTable; >-import lpg.lpgjavaruntime.RuleAction; >+import lpg.runtime.BadParseException; >+import lpg.runtime.BadParseSymFileException; >+import lpg.runtime.BacktrackingParser; >+import lpg.runtime.DiagnoseParser; >+import lpg.runtime.IToken; >+import lpg.runtime.Monitor; >+import lpg.runtime.NotBacktrackParseTableException; >+import lpg.runtime.ParseTable; >+import lpg.runtime.RuleAction; > > import org.eclipse.ocl.Environment; > import org.eclipse.ocl.cst.DefCS; >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLBacktrackingParsersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java 4 Sep 2009 13:40:43 -0000 1.6 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java 4 Sep 2009 16:51:45 -0000 >@@ -12,11 +12,13 @@ > * E.D.Willink - Elimination of some shift-reduce conflicts > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+* Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingParsersym.java,v 1.6 2009/09/04 13:40:43 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -135,7 +137,7 @@ > TK_MULTI_LINE_COMMENT = 102, > TK_ERROR_TOKEN = 1; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "ERROR_TOKEN", > "LPAREN", >@@ -241,5 +243,6 @@ > "MULTI_LINE_COMMENT" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java,v >retrieving revision 1.6 >diff -u -r1.6 OCLBacktrackingLexerprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java 4 Sep 2009 13:40:44 -0000 1.6 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java 4 Sep 2009 16:51:44 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,16 +10,112 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* - Bug 259818 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingLexerprs.java,v 1.6 2009/09/04 13:40:44 ewillink Exp $ >+* $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; > >-public class OCLBacktrackingLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingLexersym { >+public class OCLBacktrackingLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 50; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 103; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 824; >+ public final int getLaStateOffset() { return LA_STATE_OFFSET; } >+ >+ public final static int MAX_LA = 1; >+ public final int getMaxLa() { return MAX_LA; } >+ >+ public final static int NUM_RULES = 309; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 44; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 147; >+ public final int getNumSymbols() { return NUM_SYMBOLS; } >+ >+ public final static int SEGMENT_SIZE = 8192; >+ public final int getSegmentSize() { return SEGMENT_SIZE; } >+ >+ public final static int START_STATE = 310; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 0; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 99; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 104; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 514; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 515; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = false; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLBacktrackingLexersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,1,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,1,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 20,25,26,27,35,4,15,37,40,43, >+ 24,5,3,6,17,18,23,32,34,36, >+ 41,42,2,7,8,9,10,11,12,13, >+ 14,16,19,33,38,39,44,1,21,22, >+ 28,29,30,31 >+ }; >+ }; >+ public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex; >+ public final int prosthesesIndex(int index) { return prosthesesIndex[index]; } > > public interface IsKeyword { > public final static byte isKeyword[] = {0, >@@ -476,56 +572,21 @@ > public final int scopeState(int index) { return 0;} > public final int inSymb(int index) { return 0;} > public final String name(int index) { return null; } >- public final int getErrorSymbol() { return 0; } >- public final int getScopeUbound() { return 0; } >- public final int getScopeSize() { return 0; } >- public final int getMaxNameLength() { return 0; } >- >- public final static int >- NUM_STATES = 50, >- NT_OFFSET = 103, >- LA_STATE_OFFSET = 824, >- MAX_LA = 1, >- NUM_RULES = 309, >- NUM_NONTERMINALS = 44, >- NUM_SYMBOLS = 147, >- SEGMENT_SIZE = 8192, >- START_STATE = 310, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 99, >- EOLT_SYMBOL = 104, >- ACCEPT_ACTION = 514, >- ERROR_ACTION = 515; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { return 0; } > public final int asi(int state) { return 0; } > public final int nasi(int state) { return 0; } > public final int inSymbol(int state) { return 0; } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g,v >retrieving revision 1.1 >diff -u -r1.1 OCLBacktrackingParser.g >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g 4 Sep 2009 16:51:44 -0000 >@@ -9,6 +9,7 @@ > -- * > -- * Contributors: > -- * E.D. Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > -- * > -- * </copyright> > -- * >@@ -33,27 +34,28 @@ > %options backtrack > %options noserialize > %options package=org.eclipse.ocl.parser.backtracking >-%options import_terminals=OCLBacktrackingLexer.g >+%options import_terminals=OCLBacktrackingLexer.gi > %options ast_type=CSTNode > %options programming_language=java >-%options action=("*.java", "/.", "./") >-%options ParseTable=lpg.lpgjavaruntime.ParseTable >+%options action-block=("*.java", "/.", "./") >+%options ParseTable=lpg.runtime.ParseTable > %options include_directory=".;..;../../lpg" > >-$Include >- OCLParserErrors.g >-$End >+%Import >+ OCLParserErrors.gi >+%End > >-$Globals >+%Globals > /. > import org.eclipse.ocl.parser.AbstractOCLParser; > ./ >-$End >+%End > >-$Define >+%Define > $lex_stream_class /.OCLBacktrackingLexer./ > $prs_parser_class /.BacktrackingParser./ > $prs_parser_exception /.NotBacktrackParseTableException./ > $prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./ > $prs_parse_args /.error_repair_count./ >-$End >+%End >+ >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java,v >retrieving revision 1.5 >diff -u -r1.5 OCLBacktrackingLexersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java 4 Sep 2009 13:40:44 -0000 1.5 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java 4 Sep 2009 16:51:44 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,11 +10,13 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* - Bug 259818 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingLexersym.java,v 1.5 2009/09/04 13:40:44 ewillink Exp $ >+* $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -134,7 +136,7 @@ > Char_Equal = 15, > Char_EOF = 99; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "0", > "1", >@@ -241,5 +243,6 @@ > "CtlCharNotWS" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi >diff -N src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,35 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * IBM - Initial API and implementation >+-- * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLBacktrackingKWLexer.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- The OCL Backtracking KeyWord Lexer, which is nominally identical to the >+-- normal KeyWord Lexer, however the extra ERROR_TOKEN symbol makes it difficult >+-- to share reliably. >+-- >+ >+%options slr >+%options fp=OCLBacktrackingKWLexer,prefix=Char_ >+%options noserialize >+%options package=org.eclipse.ocl.parser.backtracking >+%options template=../../lpg/KeywordTemplateD.gi >+%options export_terminals=("OCLBacktrackingParsersym.java", "TK_") >+%options include_directory="..;../../lpg" >+ >+%Import >+ OCLKWLexer.gi >+%End >Index: src/org/eclipse/ocl/parser/backtracking/OCLParserErrors.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/backtracking/OCLParserErrors.gi >diff -N src/org/eclipse/ocl/parser/backtracking/OCLParserErrors.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/backtracking/OCLParserErrors.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,191 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008 Eclipse.org and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * E.D. Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLParserErrors.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- Additional ERROR_TOKEN rules for The OCL Parser >+-- >+ >+%Import >+ OCLParser.g >+%End >+ >+%Import >+ EssentialOCLErrors.gi >+%End >+ >+%Rules >+ >+ classifierContextDeclCS ::= context pathNameCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_INV_OR_DEF); >+ CSTNode result = createClassifierContextDeclCS( >+ (PathNameCS)$getSym(2), >+ new BasicEList<InvOrDefCS>() >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ defExpressionCS ::= typedVariableCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_EQUALS); >+ VariableCS variableCS = (VariableCS)$getSym(1); >+ CSTNode result = createDefExpressionCS( >+ variableCS, >+ null, >+ null >+ ); >+ setOffsets(result, variableCS, getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ defExpressionCS ::= IDENTIFIER ERROR_Colon >+ /.$BeginCode >+ VariableCS variableCS = createVariableCS( >+ getTokenText($getToken(1)), >+ null, >+ null >+ ); >+ setOffsets(variableCS, getIToken($getToken(1)), getIToken($getToken(2))); >+ CSTNode result = createDefExpressionCS( >+ variableCS, >+ null, >+ null >+ ); >+ setOffsets(result, variableCS, getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ initOrDerValueCS ::= init ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createInitValueCS(null); >+ setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ initOrDerValueCS ::= derive ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createDerValueCS(null); >+ setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ invOrDefCS ::= inv simpleNameCS ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createInvCS( >+ (SimpleNameCS)$getSym(2), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ invOrDefCS ::= def simpleNameCS ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createDefCS( >+ (SimpleNameCS)$getSym(2), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ packageDeclarationCS ::= package pathNameCS contextDeclCSmopt ERROR_Empty endpackage >+ /.$BeginCode >+ CSTNode result = createPackageDeclarationCS( >+ (PathNameCS)$getSym(2), >+ (EList)$getSym(3) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ packageDeclarationCS ::= package pathNameCS contextDeclCSmopt ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_ENDPACKAGE); >+ CSTNode result = createPackageDeclarationCS( >+ (PathNameCS)$getSym(2), >+ (EList)$getSym(3) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ packageDeclarationCS ::= package ERROR_PathNameCS >+ /.$BeginCode >+ CSTNode result = createPackageDeclarationCS( >+ (PathNameCS)$getSym(2), >+ new BasicEList() >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ prePostOrBodyDeclCS ::= pre simpleNameCS ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createPrePostOrBodyDeclCS( >+ PrePostOrBodyEnum.PRE_LITERAL, >+ (SimpleNameCS)$getSym(2), >+ createInvalidLiteralExpCS(getTokenText($getToken(3))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ prePostOrBodyDeclCS ::= post simpleNameCS ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createPrePostOrBodyDeclCS( >+ PrePostOrBodyEnum.POST_LITERAL, >+ (SimpleNameCS)$getSym(2), >+ createInvalidLiteralExpCS(getTokenText($getToken(3))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ prePostOrBodyDeclCS ::= body simpleNameCS ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createPrePostOrBodyDeclCS( >+ PrePostOrBodyEnum.BODY_LITERAL, >+ (SimpleNameCS)$getSym(2), >+ createInvalidLiteralExpCS(getTokenText($getToken(3))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ propertyContextCS ::= context pathNameCS '::' ERROR_SimpleNameCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(4); >+ CSTNode result = createPropertyContextCS( >+ (PathNameCS)$getSym(2), >+ simpleNameCS, >+ null, >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+%End >Index: src/org/eclipse/ocl/parser/OCLKWLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/OCLKWLexer.gi >diff -N src/org/eclipse/ocl/parser/OCLKWLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/OCLKWLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,562 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLKWLexer.g,v 1.1 2007/10/11 23:05:00 cdamus Exp $ >+-- */ >+-- >+-- The OCL KeyWord Lexer >+-- >+ >+%options slr >+%options fp=OCLKWLexer,prefix=Char_ >+%options noserialize >+%options package=org.eclipse.ocl.parser >+%options template=../lpg/KeywordTemplateD.gi >+%options export_terminals=("OCLParsersym.java", "TK_") >+%options include_directory="../lpg" >+ >+%Define >+ >+ -- >+ -- Definition of macros used in the template >+ -- >+ $action_class /.$file_prefix./ >+ $eof_char /.Char_EOF./ >+ $copyright_contributions /.*./ >+ >+%End >+ >+%Notice >+ /./** >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+ * E.D.Willink - Bug 285633 static definitions >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+$copyright_contributions >+ * </copyright> >+ * >+ * >+ */ >+ ./ >+%End >+ >+%Globals >+ /../ >+%End >+ >+%Import >+ KWLexerMap.gi >+%End >+ >+%Export >+ self >+ inv >+ pre >+ post >+ context >+ package >+ endpackage >+ def >+ if >+ then >+ else >+ endif >+ and >+ or >+ xor >+ not >+ implies >+ let >+ in >+ true >+ false >+ >+ -- >+ -- the following appear to have been omitted from the list of >+ -- OCL reserved words in Section 7.4.9. They will be treated >+ -- as unreserved for compliance. They are reserved as from >+ -- OCL 2.1 RTF 09-05-02 >+ -- >+ body >+ derive >+ init >+ null >+ invalid >+-- return -- don't need a keyword for LPG purposes >+ >+ -- >+ -- the following are not used in the OCL concrete syntax, but >+ -- are defined as reserved words in the OCL 2.0 Spec 7.4.9 >+ -- and were removed in the OCL 2.1 RTF 09-05-02. >+ -- >+ attr >+ oper >+ >+ -- >+ -- the following were introduced in the OCL 2.1 RTF 09-05-02. >+ -- >+ static >+ >+ -- >+ -- the remainder of the LPG keywords are defined as such for the >+ -- purpose of constructing the CST grammar. They are not OCL >+ -- reserved words >+ -- >+ Set >+ Bag >+ Sequence >+ Collection >+ OrderedSet >+ >+ iterate >+ forAll >+ exists >+ isUnique >+ any >+ one >+ >+ collect >+ select >+ reject >+ collectNested >+ sortedBy >+ >+ -- >+ -- the following is an MDT-OCL extension prototyping OMG Issue 13944. >+ -- >+ closure >+ >+ oclIsKindOf >+ oclIsTypeOf >+ oclAsType >+ oclIsNew >+ oclIsUndefined >+ oclIsInvalid >+ oclIsInState >+ allInstances >+ >+ String >+ Integer >+ UnlimitedNatural >+ Real >+ Boolean >+ Tuple >+ OclAny >+ OclVoid >+ OclInvalid >+ OclMessage >+%End >+ >+%Start >+ KeyWord >+%End >+ >+%Rules >+ >+-- The Goal for the parser is a single Keyword >+ >+ KeyWord ::= >+ s e l f >+ /.$BeginAction >+ $setResult($_self); >+ $EndAction >+ ./ >+ >+ | i n v >+ /.$BeginAction >+ $setResult($_inv); >+ $EndAction >+ ./ >+ >+ | p r e >+ /.$BeginAction >+ $setResult($_pre); >+ $EndAction >+ ./ >+ >+ | p o s t >+ /.$BeginAction >+ $setResult($_post); >+ $EndAction >+ ./ >+ >+ | b o d y >+ /.$BeginAction >+ $setResult($_body); >+ $EndAction >+ ./ >+ >+ | c o n t e x t >+ /.$BeginAction >+ $setResult($_context); >+ $EndAction >+ ./ >+ >+ | p a c k a g e >+ /.$BeginAction >+ $setResult($_package); >+ $EndAction >+ ./ >+ >+ | e n d p a c k a g e >+ /.$BeginAction >+ $setResult($_endpackage); >+ $EndAction >+ ./ >+ >+ | d e f >+ /.$BeginAction >+ $setResult($_def); >+ $EndAction >+ ./ >+ >+ | d e r i v e >+ /.$BeginAction >+ $setResult($_derive); >+ $EndAction >+ ./ >+ >+ | i n i t >+ /.$BeginAction >+ $setResult($_init); >+ $EndAction >+ ./ >+ >+ | i f >+ /.$BeginAction >+ $setResult($_if); >+ $EndAction >+ ./ >+ >+ | t h e n >+ /.$BeginAction >+ $setResult($_then); >+ $EndAction >+ ./ >+ >+ | e l s e >+ /.$BeginAction >+ $setResult($_else); >+ $EndAction >+ ./ >+ >+ | e n d i f >+ /.$BeginAction >+ $setResult($_endif); >+ $EndAction >+ ./ >+ >+ | a n d >+ /.$BeginAction >+ $setResult($_and); >+ $EndAction >+ ./ >+ >+ | o r >+ /.$BeginAction >+ $setResult($_or); >+ $EndAction >+ ./ >+ >+ | x o r >+ /.$BeginAction >+ $setResult($_xor); >+ $EndAction >+ ./ >+ >+ | n o t >+ /.$BeginAction >+ $setResult($_not); >+ $EndAction >+ ./ >+ >+ | i m p l i e s >+ /.$BeginAction >+ $setResult($_implies); >+ $EndAction >+ ./ >+ >+ | l e t >+ /.$BeginAction >+ $setResult($_let); >+ $EndAction >+ ./ >+ >+ | i n >+ /.$BeginAction >+ $setResult($_in); >+ $EndAction >+ ./ >+ >+ | t r u e >+ /.$BeginAction >+ $setResult($_true); >+ $EndAction >+ ./ >+ >+ | f a l s e >+ /.$BeginAction >+ $setResult($_false); >+ $EndAction >+ ./ >+ >+ | S e t >+ /.$BeginAction >+ $setResult($_Set); >+ $EndAction >+ ./ >+ >+ | B a g >+ /.$BeginAction >+ $setResult($_Bag); >+ $EndAction >+ ./ >+ >+ | S e q u e n c e >+ /.$BeginAction >+ $setResult($_Sequence); >+ $EndAction >+ ./ >+ >+ | C o l l e c t i o n >+ /.$BeginAction >+ $setResult($_Collection); >+ $EndAction >+ ./ >+ >+ | O r d e r e d S e t >+ /.$BeginAction >+ $setResult($_OrderedSet); >+ $EndAction >+ ./ >+ >+ | i t e r a t e >+ /.$BeginAction >+ $setResult($_iterate); >+ $EndAction >+ ./ >+ >+ | f o r A l l >+ /.$BeginAction >+ $setResult($_forAll); >+ $EndAction >+ ./ >+ >+ | e x i s t s >+ /.$BeginAction >+ $setResult($_exists); >+ $EndAction >+ ./ >+ >+ | i s U n i q u e >+ /.$BeginAction >+ $setResult($_isUnique); >+ $EndAction >+ ./ >+ >+ | a n y >+ /.$BeginAction >+ $setResult($_any); >+ $EndAction >+ ./ >+ >+ | o n e >+ /.$BeginAction >+ $setResult($_one); >+ $EndAction >+ ./ >+ >+ | c o l l e c t >+ /.$BeginAction >+ $setResult($_collect); >+ $EndAction >+ ./ >+ >+ | s e l e c t >+ /.$BeginAction >+ $setResult($_select); >+ $EndAction >+ ./ >+ >+ | r e j e c t >+ /.$BeginAction >+ $setResult($_reject); >+ $EndAction >+ ./ >+ >+ | c o l l e c t N e s t e d >+ /.$BeginAction >+ $setResult($_collectNested); >+ $EndAction >+ ./ >+ >+ | s o r t e d B y >+ /.$BeginAction >+ $setResult($_sortedBy); >+ $EndAction >+ ./ >+ >+ | c l o s u r e >+ /.$BeginAction >+ $setResult($_closure); >+ $EndAction >+ ./ >+ >+ | o c l I s K i n d O f >+ /.$BeginAction >+ $setResult($_oclIsKindOf); >+ $EndAction >+ ./ >+ >+ | o c l I s T y p e O f >+ /.$BeginAction >+ $setResult($_oclIsTypeOf); >+ $EndAction >+ ./ >+ >+ | o c l A s T y p e >+ /.$BeginAction >+ $setResult($_oclAsType); >+ $EndAction >+ ./ >+ >+ | o c l I s N e w >+ /.$BeginAction >+ $setResult($_oclIsNew); >+ $EndAction >+ ./ >+ >+ | o c l I s U n d e f i n e d >+ /.$BeginAction >+ $setResult($_oclIsUndefined); >+ $EndAction >+ ./ >+ >+ | o c l I s I n v a l i d >+ /.$BeginAction >+ $setResult($_oclIsInvalid); >+ $EndAction >+ ./ >+ >+ | o c l I s I n S t a t e >+ /.$BeginAction >+ $setResult($_oclIsInState); >+ $EndAction >+ ./ >+ >+ | a l l I n s t a n c e s >+ /.$BeginAction >+ $setResult($_allInstances); >+ $EndAction >+ ./ >+ >+ | S t r i n g >+ /.$BeginAction >+ $setResult($_String); >+ $EndAction >+ ./ >+ >+ | I n t e g e r >+ /.$BeginAction >+ $setResult($_Integer); >+ $EndAction >+ ./ >+ >+ | U n l i m i t e d N a t u r a l >+ /.$BeginAction >+ $setResult($_UnlimitedNatural); >+ $EndAction >+ ./ >+ >+ | R e a l >+ /.$BeginAction >+ $setResult($_Real); >+ $EndAction >+ ./ >+ >+ | B o o l e a n >+ /.$BeginAction >+ $setResult($_Boolean); >+ $EndAction >+ ./ >+ >+ | T u p l e >+ /.$BeginAction >+ $setResult($_Tuple); >+ $EndAction >+ ./ >+ >+ | O c l A n y >+ /.$BeginAction >+ $setResult($_OclAny); >+ $EndAction >+ ./ >+ >+ | O c l V o i d >+ /.$BeginAction >+ $setResult($_OclVoid); >+ $EndAction >+ ./ >+ >+ | O c l I n v a l i d >+ /.$BeginAction >+ $setResult($_OclInvalid); >+ $EndAction >+ ./ >+ >+ | O c l M e s s a g e >+ /.$BeginAction >+ $setResult($_OclMessage); >+ $EndAction >+ ./ >+ >+ | n u l l >+ /.$BeginAction >+ $setResult($_null); >+ $EndAction >+ ./ >+ >+ | i n v a l i d >+ /.$BeginAction >+ $setResult($_invalid); >+ $EndAction >+ ./ >+ >+ | a t t r >+ /.$BeginAction >+ $setResult($_attr); >+ $EndAction >+ ./ >+ >+ | o p e r >+ /.$BeginAction >+ $setResult($_oper); >+ $EndAction >+ ./ >+ >+ | s t a t i c >+ /.$BeginAction >+ $setResult($_static); >+ $EndAction >+ ./ >+%End >Index: src/org/eclipse/ocl/parser/EssentialOCL.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/EssentialOCL.gi >diff -N src/org/eclipse/ocl/parser/EssentialOCL.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/EssentialOCL.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1726 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: EssentialOCL.gi,v 1.7 2009/03/05 14:12:14 cdamus Exp $ >+-- */ >+-- >+-- The EssentialOCL Parser >+-- >+ >+ >+%Define >+ >+ -- Definition of macros used in the parser template >+ -- >+ $prs_stream_class /.AbstractOCLParser./ >+ $prs_parser_class /.DeterministicParser./ >+ $prs_parser_exception /.NotDeterministicParseTableException./ >+ $prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -NOBACKTRACK option")./ >+ $prs_parse_args /../ >+ $lex_stream_class /.AbstractLexer./ >+ $action_class /.$file_prefix./ >+ $copyright_contributions /.*./ >+ >+ -- package namespace of the LPG Runtime API >+ $lpg_ns /.lpg.runtime./ >+ >+ $NewCase >+ /. $Header >+ case $rule_number:./ >+ >+ -- From bt/dtParserTemplateD.g >+ ------------------------------------------------------ >+ $Header >+ /. >+ // >+ // Rule $rule_number: $rule_text >+ //./ >+ >+ $BeginAction >+ /. $Header >+ case $rule_number: {./ >+ >+ $EndAction >+ /. break; >+ }./ >+ >+ $BeginJava >+ /../ >+ >+ $EndJava >+ /../ >+ >+ $BeginCode >+ /.$BeginAction >+ $symbol_declarations./ >+ >+ $EndCode /.$EndAction./ >+ >+ $NoAction >+ /. $Header >+ case $rule_number: >+ break;./ >+ >+ $NullAction >+ /. $Header >+ case $rule_number: >+ $setResult(null); >+ break;./ >+ >+ $EmptyListAction >+ /. $Header >+ case $rule_number: >+ $setResult(new BasicEList()); >+ break;./ >+ >+ $BeginActions >+ /. >+ @SuppressWarnings("unchecked") >+ public void ruleAction(int ruleNumber) >+ { >+ switch (ruleNumber) { >+ ./ >+ >+ $EndActions >+ /. >+ default: >+ break; >+ } >+ return; >+ }./ >+ >+ $additional_interfaces /../ >+ $action_class /.$file_prefix./ >+ $setSym1 /.dtParser.setSym1./ >+ $setResult /.dtParser.setSym1./ >+ $getSym /.dtParser.getSym./ >+ $getToken /.dtParser.getToken./ >+ $getIToken /.getIToken./ >+ $getLeftSpan /.dtParser.getFirstToken./ >+ $getRightSpan /.dtParser.getLastToken./ >+ $prs_stream /.prsStream./ >+ >+ -- modified to include throwing exceptions >+ $parserCore >+ /. >+ public class $action_class extends $prs_stream_class implements RuleAction$additional_interfaces >+ { >+ protected static ParseTable prs = new $prs_type(); >+ private $prs_parser_class dtParser; >+ >+ public $action_class($lex_stream_class lexer) { >+ super(lexer); >+ } >+ >+ public int getEOFTokenKind() { return $prs_type.EOFT_SYMBOL; } >+ >+ public $environment_class getOCLEnvironment() { >+ return getLexer().getOCLEnvironment(); >+ } >+ >+ @Override >+ public $lex_stream_class getLexer() { >+ return ($lex_stream_class)super.getLexer(); >+ } >+ >+ public String getTokenKindName(int kind) { return $sym_type.orderedTerminalSymbols[kind]; } >+ >+ @Override >+ public String[] orderedTerminalSymbols() { return $sym_type.orderedTerminalSymbols; } >+ >+ @SuppressWarnings("nls") >+ @Override >+ public $ast_type parseTokensToCST(Monitor monitor, int error_repair_count) { >+ ParseTable prsTable = new $prs_type(); >+ >+ try { >+ dtParser = new $prs_parser_class(monitor, this, prsTable, this); >+ } >+ catch ($prs_parser_exception e) { >+ $prs_parser_throw; >+ } >+ catch (BadParseSymFileException e) { >+ throw new RuntimeException("****Error: Bad Parser Symbol File -- $sym_type.java. Regenerate $prs_type.java"); >+ } >+ >+ try { >+ return ($ast_type) dtParser.parse($prs_parse_args); >+ } >+ catch (BadParseException e) { >+ reset(e.error_token); // point to error token >+ >+ DiagnoseParser diagnoseParser = new DiagnoseParser(this, prsTable); >+ diagnoseParser.diagnose(e.error_token); >+ } >+ >+ return null; >+ } >+ >+ /** >+ * Initializes a concrete-syntax node's start and end offsets from the >+ * current token in the parser stream. >+ * >+ * @param cstNode a concrete-syntax node >+ * >+ * @since 1.2 >+ */ >+ protected void setOffsets(CSTNode cstNode) { >+ IToken firstToken = getIToken($getToken(1)); >+ cstNode.setStartToken(firstToken); >+ cstNode.setEndToken(firstToken); >+ cstNode.setStartOffset(firstToken.getStartOffset()); >+ cstNode.setEndOffset(firstToken.getEndOffset()-1); >+ } >+ ./ >+%End >+ >+%Notice >+ /./** >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Elimination of some shift-reduce conflicts >+ * E.D.Willink - Remove unnecessary warning suppression >+ * E.D.Willink - Bugs 225493, 243976, 259818, 282882, 287993 >+ * Zeligsoft - Bug 243976 >+ * Borland - Bug 242880 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+$copyright_contributions >+ * </copyright> >+ * >+ * $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ >+ */ >+ ./ >+%End >+ >+%Globals >+ /.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.CollectionTypeIdentifierEnum; >+ import org.eclipse.ocl.cst.DotOrArrowEnum; >+ import org.eclipse.ocl.cst.IntegerLiteralExpCS; >+ import org.eclipse.ocl.cst.IsMarkedPreCS; >+ import org.eclipse.ocl.cst.MessageExpCS; >+ import org.eclipse.ocl.cst.OCLExpressionCS; >+ import org.eclipse.ocl.cst.OCLMessageArgCS; >+ 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.StateExpCS; >+ import org.eclipse.ocl.cst.StringLiteralExpCS; >+ import org.eclipse.ocl.cst.TypeCS; >+ import org.eclipse.ocl.cst.VariableCS; >+ import org.eclipse.ocl.util.OCLStandardLibraryUtil; >+ import org.eclipse.ocl.utilities.PredefinedType; >+ >+ import $lpg_ns.BadParseException; >+ import $lpg_ns.BadParseSymFileException; >+ import $lpg_ns.$prs_parser_class; >+ import $lpg_ns.DiagnoseParser; >+ import $lpg_ns.IToken; >+ import $lpg_ns.Monitor; >+ import $lpg_ns.$prs_parser_exception; >+ import $lpg_ns.ParseTable; >+ import $lpg_ns.RuleAction; >+ ./ >+%End >+ >+%KeyWords >+ self >+ inv >+ pre >+ post >+ endpackage >+ def >+ if >+ then >+ else >+ endif >+ and >+ or >+ xor >+ not >+ implies >+ let >+ in >+ true >+ false >+ >+ -- >+ -- the following appear to have been omitted from the list of >+ -- OCL reserved words in Section 7.4.9. They will be treated >+ -- as unreserved for compliance >+ -- >+ body >+ derive >+ init >+ null >+ invalid >+-- return -- don't need a keyword for LPG purposes >+ >+ -- >+ -- the remainder of the LPG keywords are defined as such for the >+ -- purpose of constructing the CST grammar. They are not OCL >+ -- reserved words >+ -- >+ Set >+ Bag >+ Sequence >+ Collection >+ OrderedSet >+ >+ iterate >+ forAll >+ exists >+ isUnique >+ any >+ one >+ >+ collect >+ select >+ reject >+ collectNested >+ sortedBy >+ >+ closure >+ >+ oclIsKindOf >+ oclIsTypeOf >+ oclAsType >+ oclIsNew >+ oclIsUndefined >+ oclIsInvalid >+ oclIsInState >+ allInstances >+ >+ String >+ Integer >+ UnlimitedNatural >+ Real >+ Boolean >+ Tuple >+ OclAny >+ OclVoid >+ OclInvalid >+ OclMessage >+%End >+ >+%Identifier >+ IDENTIFIER >+%End >+ >+%Terminals >+ >+ NUMERIC_OPERATION >+ >+ STRING_LITERAL >+ INTEGER_LITERAL >+ REAL_LITERAL >+ >+ PLUS ::= '+' >+ MINUS ::= '-' >+ MULTIPLY ::= '*' >+ DIVIDE ::= '/' >+ >+ GREATER ::= '>' >+ LESS ::= '<' >+ EQUAL ::= '=' >+ GREATER_EQUAL ::= '>=' >+ LESS_EQUAL ::= '<=' >+ NOT_EQUAL ::= '<>' >+ >+ LPAREN ::= '(' >+ RPAREN ::= ')' >+ LBRACE ::= '{' >+ RBRACE ::= '}' >+ LBRACKET ::= '[' >+ RBRACKET ::= ']' >+ >+ ARROW ::= '->' >+ BAR ::= '|' >+ COMMA ::= ',' >+ COLON ::= ':' >+ COLONCOLON ::= '::' >+ SEMICOLON ::= ';' >+ DOT ::= '.' >+ DOTDOT ::= '..' >+ ATPRE ::= '@pre' >+ >+ CARET ::= '^' >+ CARETCARET ::= '^^' >+ QUESTIONMARK ::= '?' >+ >+%End >+ >+%EOF >+ EOF_TOKEN >+%End >+ >+%ERROR >+ ERROR_TOKEN >+%End >+ >+--$EOL >+-- SEMICOLON >+--$End >+ >+--$Start >+-- goal >+--$End >+ >+%Headers >+ /.$parserCore >+ >+ ./ >+%End >+ >+%Rules >+ /.$BeginActions./ >+ >+ -- opt = optional >+ -- m = multiple >+ >+ -- >+ -- Define a group of names that we define as keywords for the purpose >+ -- of constructing an LPG grammar, but that are not reserved by OCL >+ -- and are commonly used in models such as the UML metamodel, itself >+ -- >+ >+ binaryIdentifier -> oclIsUndefined >+ binaryIdentifier -> oclIsInvalid >+ binaryIdentifier -> oclIsNew >+ binaryIdentifier -> oclAsType >+ binaryIdentifier -> oclIsKindOf >+ binaryIdentifier -> oclIsTypeOf >+ binaryIdentifier -> EQUAL >+ binaryIdentifier -> NOT_EQUAL >+ binaryIdentifier -> PLUS >+ binaryIdentifier -> MULTIPLY >+ binaryIdentifier -> DIVIDE >+ binaryIdentifier -> GREATER >+ binaryIdentifier -> LESS >+ binaryIdentifier -> GREATER_EQUAL >+ binaryIdentifier -> LESS_EQUAL >+ binaryIdentifier -> and >+ binaryIdentifier -> or >+ binaryIdentifier -> xor >+ >+ unaryIdentifier -> MINUS >+ unaryIdentifier -> not >+ >+ iteratorIdentifier -> forAll >+ iteratorIdentifier -> exists >+ iteratorIdentifier -> isUnique >+ iteratorIdentifier -> any >+ iteratorIdentifier -> one >+ iteratorIdentifier -> collect >+ iteratorIdentifier -> select >+ iteratorIdentifier -> reject >+ iteratorIdentifier -> collectNested >+ iteratorIdentifier -> sortedBy >+ iteratorIdentifier -> closure >+ >+ keywordAsIdentifier1 -> iterate >+ keywordAsIdentifier1 -> iteratorIdentifier >+ keywordAsIdentifier1 -> allInstances >+ keywordAsIdentifier1 -> body >+ keywordAsIdentifier1 -> derive >+ keywordAsIdentifier1 -> init >+ keywordAsIdentifier1 -> Set >+ keywordAsIdentifier1 -> Bag >+ keywordAsIdentifier1 -> Sequence >+ keywordAsIdentifier1 -> Collection >+ keywordAsIdentifier1 -> OrderedSet >+ -------- >+ keywordAsIdentifier -> keywordAsIdentifier1 >+ keywordAsIdentifier -> null >+ >+ binaryName -> simpleNameCS >+ binaryName ::= binaryIdentifier >+ /.$NewCase./ >+ keywordAsName ::= keywordAsIdentifier >+ /.$NewCase./ >+ keywordAsName1 ::= keywordAsIdentifier1 >+ /.$NewCase./ >+ unaryName ::= unaryIdentifier >+ /.$BeginCode >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.IDENTIFIER_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ iterateName ::= iterate >+ /.$NewCase./ >+ iteratorName ::= iteratorIdentifier >+ /.$NewCase./ >+ oclIsInStateName ::= oclIsInState >+ /.$BeginCode >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.KEYWORD_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ -- >+ -- the 'operationCS' non-terminal is not referenced in this grammar >+ -- >+ operationCS -> operationCS1 >+ operationCS -> operationCS2 >+ operationCS1 ::= IDENTIFIER '(' parametersCSopt ')' ':' typeCSopt >+ /.$BeginCode >+ CSTNode result = createOperationCS( >+ getTokenText($getToken(1)), >+ (EList)$getSym(3), >+ (TypeCS)$getSym(6) >+ ); >+ if ($getSym(6) != null) { >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(6)); >+ } else { >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' simpleNameCS '(' parametersCSopt ')' ':' typeCSopt >+ /.$BeginCode >+ CSTNode result = createOperationCS( >+ (PathNameCS)$getSym(1), >+ (SimpleNameCS)$getSym(3), >+ (EList)$getSym(5), >+ (TypeCS)$getSym(8) >+ ); >+ if ($getSym(8) != null) { >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(8)); >+ } else { >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(7))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ >+ parametersCSopt ::= %empty >+ /.$EmptyListAction./ >+ parametersCSopt -> parametersCS >+ parametersCS ::= variableCS >+ /.$BeginCode >+ EList result = new BasicEList(); >+ result.add($getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ parametersCS ::= parametersCS ',' variableCS >+ /.$BeginCode >+ EList result = (EList)$getSym(1); >+ result.add($getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ simpleNameCSopt ::= %empty >+ /.$NullAction./ >+ simpleNameCSopt -> simpleNameCS >+ >+ oclExpressionCS -> impliesExpCS >+ oclExpressionCS -> impliesWithLet >+ >+ impliesExpCS -> andOrXorExpCS >+ impliesWithLet -> andOrXorWithLet >+ impliesExpCS ::= impliesExpCS implies andOrXorExpCS >+ /.$NewCase./ >+ impliesWithLet ::= impliesExpCS implies andOrXorWithLet >+ /.$NewCase./ >+ >+ andOrXorExpCS -> equalityExpCS >+ andOrXorWithLet -> equalityWithLet >+ andOrXorExpCS ::= andOrXorExpCS and equalityExpCS >+ /.$NewCase./ >+ andOrXorExpCS ::= andOrXorExpCS or equalityExpCS >+ /.$NewCase./ >+ andOrXorExpCS ::= andOrXorExpCS xor equalityExpCS >+ /.$NewCase./ >+ andOrXorWithLet ::= andOrXorExpCS and equalityWithLet >+ /.$NewCase./ >+ andOrXorWithLet ::= andOrXorExpCS or equalityWithLet >+ /.$NewCase./ >+ andOrXorWithLet ::= andOrXorExpCS xor equalityWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ getTokenText($getToken(2)) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ equalityExpCS -> relationalExpCS >+ equalityWithLet -> relationalWithLet >+ equalityExpCS ::= equalityExpCS '=' relationalExpCS >+ /.$NewCase./ >+ equalityWithLet ::= equalityExpCS '=' relationalWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.EQUAL) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ equalityExpCS ::= equalityExpCS '<>' relationalExpCS >+ /.$NewCase./ >+ equalityWithLet ::= equalityExpCS '<>' relationalWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.NOT_EQUAL) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ relationalExpCS -> ifExpCSPrec >+ -- Note that ifExp already embeds let, so we needn't deal with it here >+ relationalWithLet -> additiveWithLet >+ relationalExpCS ::= relationalExpCS '>' ifExpCSPrec >+ /.$NewCase./ >+ relationalWithLet ::= relationalExpCS '>' additiveWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.GREATER_THAN) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ relationalExpCS ::= relationalExpCS '<' ifExpCSPrec >+ /.$NewCase./ >+ relationalWithLet ::= relationalExpCS '<' additiveWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.LESS_THAN) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ relationalExpCS ::= relationalExpCS '>=' ifExpCSPrec >+ /.$NewCase./ >+ relationalWithLet ::= relationalExpCS '>=' additiveWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.GREATER_THAN_EQUAL) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ relationalExpCS ::= relationalExpCS '<=' ifExpCSPrec >+ /.$NewCase./ >+ relationalWithLet ::= relationalExpCS '<=' additiveWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.LESS_THAN_EQUAL) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ ifExpCSPrec -> additiveExpCS >+ ifExpCSPrec -> ifExpCS >+ >+ additiveExpCS -> multiplicativeExpCS >+ additiveWithLet -> multiplicativeWithLet >+ additiveExpCS ::= additiveExpCS '+' multiplicativeExpCS >+ /.$NewCase./ >+ additiveWithLet ::= additiveExpCS '+' multiplicativeWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.PLUS) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ additiveExpCS ::= additiveExpCS '-' multiplicativeExpCS >+ /.$NewCase./ >+ additiveWithLet ::= additiveExpCS '-' multiplicativeWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.MINUS) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ multiplicativeExpCS -> unaryExpCS >+ multiplicativeWithLet -> unaryWithLet >+ multiplicativeExpCS ::= multiplicativeExpCS '*' unaryExpCS >+ /.$NewCase./ >+ multiplicativeWithLet ::= multiplicativeExpCS '*' unaryWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.TIMES) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ multiplicativeExpCS ::= multiplicativeExpCS '/' unaryExpCS >+ /.$NewCase./ >+ multiplicativeWithLet ::= multiplicativeExpCS '/' unaryWithLet >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.DIVIDE) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ EList args = new BasicEList(); >+ args.add($getSym(3)); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(1), >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ unaryExpCS -> dotArrowExpCS >+ unaryWithLet -> letExpCS >+ unaryExpCS ::= '-' unaryExpCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ OCLStandardLibraryUtil.getOperationName(PredefinedType.MINUS) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(1))); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(2), >+ simpleNameCS, >+ new BasicEList() >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(2)); >+ $setResult(result); >+ $EndCode >+ ./ >+ unaryExpCS ::= not unaryExpCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(1))); >+ CSTNode result = createOperationCallExpCS( >+ (OCLExpressionCS)$getSym(2), >+ simpleNameCS, >+ new BasicEList() >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(2)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ dotArrowExpCS -> oclExpCS >+ dotArrowExpCS ::= dotArrowExpCS callExpCS >+ /.$BeginCode >+ CallExpCS result = (CallExpCS)$getSym(2); >+ result.setSource((OCLExpressionCS)$getSym(1)); >+ setOffsets(result, (CSTNode)$getSym(1), result); >+ $setResult(result); >+ $EndCode >+ ./ >+ dotArrowExpCS ::= dotArrowExpCS messageExpCS >+ /.$BeginCode >+ MessageExpCS result = (MessageExpCS)$getSym(2); >+ result.setTarget((OCLExpressionCS)$getSym(1)); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(2)); >+ $setResult(result); >+ $EndCode >+ ./ >+ dotArrowExpCS ::= NUMERIC_OPERATION '(' argumentsCSopt ')' >+ /.$BeginCode >+ // NUMERIC_OPERATION -> Integer '.' Identifier >+ String text = getTokenText(dtParser.getToken(1)); >+ int index = text.indexOf('.'); >+ String integer = text.substring(0, index); >+ String simpleName = text.substring(index + 1); >+ >+ // create the IntegerLiteralExpCS >+ IToken numericToken = getIToken($getToken(1)); >+ int startOffset = numericToken.getStartOffset(); >+ int endOffset = startOffset + integer.length() - 1; // inclusive >+ >+ IntegerLiteralExpCS integerLiteralExpCS = createIntegerLiteralExpCS(integer); >+ integerLiteralExpCS.setStartOffset(startOffset); >+ integerLiteralExpCS.setEndOffset(endOffset); >+ integerLiteralExpCS.setStartToken(numericToken); >+ integerLiteralExpCS.setEndToken(numericToken); >+ >+ startOffset = endOffset + 2; // end of integerLiteral + 1('.') + 1(start of simpleName) >+ endOffset = getIToken($getToken(1)).getEndOffset(); >+ >+ // create the SimpleNameCS >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.IDENTIFIER_LITERAL, >+ simpleName >+ ); >+ simpleNameCS.setStartOffset(startOffset); >+ simpleNameCS.setEndOffset(endOffset); >+ simpleNameCS.setStartToken(numericToken); >+ simpleNameCS.setEndToken(numericToken); >+ >+ // create the OperationCallExpCS >+ CSTNode result = createOperationCallExpCS( >+ integerLiteralExpCS, >+ simpleNameCS, >+ (EList)$getSym(3) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ -- static operation call (@pre is not permitted in this context) >+ dotArrowExpCS ::= pathNameCS '::' simpleNameCS '(' argumentsCSopt ')' >+ /.$BeginCode >+ OperationCallExpCS result = createOperationCallExpCS( >+ (PathNameCS)$getSym(1), >+ (SimpleNameCS)$getSym(3), >+ (EList)$getSym(5) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(6))); >+ result.setAccessor(DotOrArrowEnum.DOT_LITERAL); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ >+ oclExpCS -> variableExpCS >+ oclExpCS -> literalExpCS >+ oclExpCS -> operationCallExpCS >+ oclExpCS -> keywordOperationCallExpCS >+ >+ oclExpCS ::= '(' oclExpressionCS ')' >+ /.$BeginCode >+ CSTNode result = (CSTNode)$getSym(2); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ variableExpCS ::= simpleNameCS isMarkedPreCS >+ /.$NewCase./ >+ variableExpCS ::= keywordAsName1 isMarkedPreCS >+ /.$BeginCode >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2); >+ CSTNode result = createVariableExpCS( >+ (SimpleNameCS)$getSym(1), >+ new BasicEList(), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(2)); >+ } else { >+ setOffsets(result, (CSTNode)$getSym(1)); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ variableExpCS ::= simpleNameCS '[' argumentsCS ']' isMarkedPreCS >+ /.$NewCase./ >+ variableExpCS ::= keywordAsName1 '[' argumentsCS ']' isMarkedPreCS >+ /.$BeginCode >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(5); >+ CSTNode result = createVariableExpCS( >+ (SimpleNameCS)$getSym(1), >+ (EList)$getSym(3), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(5)); >+ } else { >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ >+ simpleNameCS -> primitiveTypeCS >+ simpleNameCS ::= self >+ /.$BeginCode >+ CSTNode result = createSimpleNameCS( >+ SimpleTypeEnum.SELF_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ simpleNameCS -> simpleIdentifierCS >+ simpleIdentifierCS ::= IDENTIFIER >+ /.$BeginCode >+ CSTNode result = createSimpleNameCS( >+ SimpleTypeEnum.IDENTIFIER_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ primitiveTypeCS ::= Integer >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.INTEGER_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= UnlimitedNatural >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.UNLIMITED_NATURAL_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= String >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= Real >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.REAL_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= Boolean >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.BOOLEAN_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= OclAny >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_ANY_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= OclVoid >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_VOID_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= OclInvalid >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_INVALID_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= OclMessage >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_MESSAGE_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ pathNameCS ::= simpleIdentifierCS >+ /.$BeginCode >+ SimpleNameCS simpleName = (SimpleNameCS)$getSym(1); >+ PathNameCS result = createPathNameCS(simpleName); >+ setOffsets(result, simpleName); >+ $setResult(result); >+ $EndCode >+ ./ >+ pathNameCS ::= pathNameCS '::' simpleNameCS >+ /.$BeginCode >+ PathNameCS result = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleName = (SimpleNameCS)$getSym(3); >+ result = extendPathNameCS(result, simpleName); >+ setOffsets(result, result, simpleName); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ pathNameCSOpt ::= %empty >+ /.$BeginCode >+ CSTNode result = createPathNameCS(); >+ $setResult(result); >+ $EndCode >+ ./ >+ pathNameCSOpt -> pathNameCS >+ >+ literalExpCS -> enumLiteralExpCS >+ literalExpCS -> collectionLiteralExpCS >+ literalExpCS -> tupleLiteralExpCS >+ literalExpCS -> primitiveLiteralExpCS >+ literalExpCS -> nullLiteralExpCS >+ literalExpCS -> invalidLiteralExpCS >+ >+ -- also covers the case of static attribute call, in which >+ -- case @pre is not allowed anyway >+ enumLiteralExpCS ::= pathNameCS '::' keywordAsName >+ /.$NewCase./ >+ enumLiteralExpCS ::= pathNameCS '::' simpleNameCS >+ /.$BeginCode >+ CSTNode result = createEnumLiteralExpCS( >+ (PathNameCS)$getSym(1), >+ (SimpleNameCS)$getSym(3) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ collectionLiteralExpCS ::= collectionTypeIdentifierCS '{' collectionLiteralPartsCSopt '}' >+ /.$BeginCode >+ Object[] objs = (Object[])$getSym(1); >+ CSTNode result = createCollectionLiteralExpCS( >+ (CollectionTypeIdentifierEnum)objs[1], >+ (EList)$getSym(3) >+ ); >+ setOffsets(result, (IToken)objs[0], getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ collectionTypeIdentifierCS ::= Set >+ /.$BeginCode >+ $setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.SET_LITERAL}); >+ $EndCode >+ ./ >+ collectionTypeIdentifierCS ::= Bag >+ /.$BeginCode >+ $setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.BAG_LITERAL}); >+ $EndCode >+ ./ >+ collectionTypeIdentifierCS ::= Sequence >+ /.$BeginCode >+ $setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.SEQUENCE_LITERAL}); >+ $EndCode >+ ./ >+ collectionTypeIdentifierCS ::= Collection >+ /.$BeginCode >+ $setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.COLLECTION_LITERAL}); >+ $EndCode >+ ./ >+ collectionTypeIdentifierCS ::= OrderedSet >+ /.$BeginCode >+ $setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.ORDERED_SET_LITERAL}); >+ $EndCode >+ ./ >+ >+ collectionLiteralPartsCSopt ::= %empty >+ /.$EmptyListAction./ >+ collectionLiteralPartsCSopt -> collectionLiteralPartsCS >+ >+ collectionLiteralPartsCS ::= collectionLiteralPartCS >+ /.$BeginCode >+ EList result = new BasicEList(); >+ result.add($getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ collectionLiteralPartsCS ::= collectionLiteralPartsCS ',' collectionLiteralPartCS >+ /.$BeginCode >+ EList result = (EList)$getSym(1); >+ result.add($getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ collectionLiteralPartCS -> collectionRangeCS >+ collectionLiteralPartCS ::= oclExpressionCS >+ /.$BeginCode >+ CSTNode result = createCollectionLiteralPartCS( >+ (OCLExpressionCS)$getSym(1) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ collectionRangeCS ::= '-' INTEGER_RANGE_START oclExpressionCS >+ /.$BeginCode >+ OCLExpressionCS rangeStart = createRangeStart( >+ getTokenText($getToken(2)), true); >+ CSTNode result = createCollectionRangeCS( >+ rangeStart, >+ (OCLExpressionCS)$getSym(3) >+ ); >+ setOffsets(result, rangeStart, (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ collectionRangeCS ::= INTEGER_RANGE_START oclExpressionCS >+ /.$BeginCode >+ OCLExpressionCS rangeStart = createRangeStart( >+ getTokenText($getToken(1)), false); >+ CSTNode result = createCollectionRangeCS( >+ rangeStart, >+ (OCLExpressionCS)$getSym(2) >+ ); >+ setOffsets(result, rangeStart, (CSTNode)$getSym(2)); >+ $setResult(result); >+ $EndCode >+ ./ >+ collectionRangeCS ::= oclExpressionCS '..' oclExpressionCS >+ /.$BeginCode >+ CSTNode result = createCollectionRangeCS( >+ (OCLExpressionCS)$getSym(1), >+ (OCLExpressionCS)$getSym(3) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ primitiveLiteralExpCS -> integerLiteralExpCS >+ primitiveLiteralExpCS -> unlimitedNaturalLiteralExpCS >+ primitiveLiteralExpCS -> realLiteralExpCS >+ primitiveLiteralExpCS -> stringLiteralExpCS >+ primitiveLiteralExpCS -> booleanLiteralExpCS >+ >+ tupleLiteralExpCS ::= Tuple '{' variableListCS2 '}' >+ /.$BeginCode >+ CSTNode result = createTupleLiteralExpCS((EList)$getSym(3)); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ integerLiteralExpCS ::= INTEGER_LITERAL >+ /.$BeginCode >+ CSTNode result = createIntegerLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ unlimitedNaturalLiteralExpCS ::= '*' >+ /.$BeginCode >+ CSTNode result = createUnlimitedNaturalLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ realLiteralExpCS ::= REAL_LITERAL >+ /.$BeginCode >+ CSTNode result = createRealLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ stringLiteralExpCS ::= STRING_LITERAL >+ /.$BeginCode >+ IToken literalToken = getIToken($getToken(1)); >+ StringLiteralExpCS result = createStringLiteralExpCS(literalToken.toString()); >+ result.setUnescapedStringSymbol(unescape(literalToken)); >+ setOffsets(result, literalToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ booleanLiteralExpCS ::= true >+ /.$BeginCode >+ CSTNode result = createBooleanLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ booleanLiteralExpCS ::= false >+ /.$BeginCode >+ CSTNode result = createBooleanLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ nullLiteralExpCS ::= null >+ /.$BeginCode >+ CSTNode result = createNullLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ invalidLiteralExpCS ::= invalid >+ /.$BeginCode >+ CSTNode result = createInvalidLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ >+ callExpCS ::= '->' featureCallExpCS >+ /.$NewCase./ >+ callExpCS ::= '->' loopExpCS >+ /.$BeginCode >+ CallExpCS result = (CallExpCS)$getSym(2); >+ result.setAccessor(DotOrArrowEnum.ARROW_LITERAL); >+ $setResult(result); >+ $EndCode >+ ./ >+ callExpCS ::= '.' keywordOperationCallExpCS >+ /.$NewCase./ >+ callExpCS ::= '.' featureCallExpCS >+ /.$BeginCode >+ CallExpCS result = (CallExpCS)$getSym(2); >+ result.setAccessor(DotOrArrowEnum.DOT_LITERAL); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ loopExpCS -> iteratorExpCS >+ loopExpCS -> iterateExpCS >+ >+ iteratorExpCS ::= iteratorName '(' oclExpressionCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createIteratorExpCS( >+ simpleNameCS, >+ null, >+ null, >+ (OCLExpressionCS)$getSym(3) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ iteratorExpCS ::= iteratorName '(' variableCS '|' oclExpressionCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createIteratorExpCS( >+ simpleNameCS, >+ (VariableCS)$getSym(3), >+ null, >+ (OCLExpressionCS)$getSym(5) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(6))); >+ $setResult(result); >+ $EndCode >+ ./ >+ iteratorExpCS ::= iteratorName '(' variableCS ',' variableCS '|' oclExpressionCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createIteratorExpCS( >+ simpleNameCS, >+ (VariableCS)$getSym(3), >+ (VariableCS)$getSym(5), >+ (OCLExpressionCS)$getSym(7) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(8))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ iterateExpCS ::= iterateName '(' variableCS '|' oclExpressionCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createIterateExpCS( >+ simpleNameCS, >+ (VariableCS)$getSym(3), >+ null, >+ (OCLExpressionCS)$getSym(5) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(6))); >+ $setResult(result); >+ $EndCode >+ ./ >+ iterateExpCS ::= iterateName '(' variableCS ';' variableCS '|' oclExpressionCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createIterateExpCS( >+ simpleNameCS, >+ (VariableCS)$getSym(3), >+ (VariableCS)$getSym(5), >+ (OCLExpressionCS)$getSym(7) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(8))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ variableCS ::= IDENTIFIER >+ /.$BeginCode >+ CSTNode result = createVariableCS( >+ getTokenText($getToken(1)), >+ null, >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ typedVariableCS ::= IDENTIFIER ':' typeCS >+ /.$BeginCode >+ CSTNode result = createVariableCS( >+ getTokenText($getToken(1)), >+ (TypeCS)$getSym(3), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ variableCS -> typedVariableCS >+ variableCS ::= IDENTIFIER ':' typeCS '=' oclExpressionCS >+ /.$BeginCode >+ CSTNode result = createVariableCS( >+ getTokenText($getToken(1)), >+ (TypeCS)$getSym(3), >+ (OCLExpressionCS)$getSym(5) >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(5)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ -- this form of variable declaration is only used in tuple literals >+ variableCS2 ::= IDENTIFIER '=' oclExpressionCS >+ /.$BeginCode >+ CSTNode result = createVariableCS( >+ getTokenText($getToken(1)), >+ null, >+ (OCLExpressionCS)$getSym(3) >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ typeCSopt ::= %empty >+ /.$NullAction./ >+ typeCSopt -> typeCS >+ >+ -- the order of these rules is important! Try to match primitives >+ -- first, then tuples (more complex), and finally collections. >+ -- Looking for type names in the Ecore model is a last resort >+ typeCS -> primitiveTypeCS >+ typeCS -> tupleTypeCS >+ typeCS -> collectionTypeCS >+ typeCS -> pathNameCS >+ >+ collectionTypeCS ::= collectionTypeIdentifierCS '(' typeCS ')' >+ /.$BeginCode >+ Object[] objs = (Object[])$getSym(1); >+ CSTNode result = createCollectionTypeCS( >+ (CollectionTypeIdentifierEnum)objs[1], >+ (TypeCS)$getSym(3) >+ ); >+ setOffsets(result, (IToken)objs[0], getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ tupleTypeCS ::= Tuple '(' variableListCSopt ')' >+ /.$BeginCode >+ CSTNode result = createTupleTypeCS((EList)$getSym(3)); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ >+ variableListCSopt ::= %empty >+ /.$EmptyListAction./ >+ variableListCSopt -> variableListCS >+ variableListCS ::= variableCS >+ /.$BeginCode >+ EList result = new BasicEList(); >+ result.add($getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ variableListCS ::= variableListCS ',' variableCS >+ /.$BeginCode >+ EList result = (EList)$getSym(1); >+ result.add($getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ -- this form of variable declaration list is only used in tuple literals >+ variableListCS2 ::= variableCS2 >+ /.$NewCase./ >+ variableListCS2 ::= variableCS >+ /.$BeginCode >+ EList result = new BasicEList(); >+ result.add($getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ variableListCS2 ::= variableListCS2 ',' variableCS2 >+ /.$NewCase./ >+ variableListCS2 ::= variableListCS2 ',' variableCS >+ /.$BeginCode >+ EList result = (EList)$getSym(1); >+ result.add($getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ -- covers attributeCallExpCS and navigationCallExpCS >+ featureCallExpCS -> attrOrNavCallExpCS >+ >+ featureCallExpCS -> operationCallExpCS >+ featureCallExpCS ::= unaryName isMarkedPreCS '(' argumentsCSopt ')' >+ /.$NewCase./ >+ -- even though these operations do not use @pre or do not accept multiple arguments >+ -- in order to get better error reporting, the rule signature must comply with >+ -- the full rule of an operationCallExpCS >+ -- the alternative would be to remove these as keywords, but then the parser >+ -- would accept variable declarations where the var can be named "oclIsNew" for example >+ operationCallExpCS ::= binaryName isMarkedPreCS '(' argumentsCSopt ')' >+ /.$NewCase./ >+ keywordOperationCallExpCS ::= keywordAsName isMarkedPreCS '(' argumentsCSopt ')' >+ /.$BeginCode >+ CSTNode result = createOperationCallExpCS( >+ (SimpleNameCS)$getSym(1), >+ (IsMarkedPreCS)$getSym(2), >+ (EList)$getSym(4) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ stateExpCS ::= pathNameCSOpt >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ StateExpCS result = createStateExpCS(pathNameCS); >+ setOffsets(result, pathNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ -- FIXME StateExpCS creates a needless irregularity; unwrap its content as an argument list >+ operationCallExpCS ::= oclIsInStateName isMarkedPreCS '(' stateExpCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createOperationCallExpCS( >+ simpleNameCS, >+ (IsMarkedPreCS)$getSym(2), >+ (StateExpCS)$getSym(4) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ attrOrNavCallExpCS ::= simpleNameCS isMarkedPreCS >+ /.$NewCase./ >+ attrOrNavCallExpCS ::= keywordAsName isMarkedPreCS >+ /.$BeginCode >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2); >+ CSTNode result = createFeatureCallExpCS( >+ (SimpleNameCS)$getSym(1), >+ new BasicEList(), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(2)); >+ } else { >+ setOffsets(result, (CSTNode)$getSym(1)); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ attrOrNavCallExpCS ::= simpleNameCS '[' argumentsCS ']' isMarkedPreCS >+ /.$BeginCode >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(5); >+ CSTNode result = createFeatureCallExpCS( >+ (SimpleNameCS)$getSym(1), >+ (EList)$getSym(3), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(5)); >+ } else { >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ isMarkedPreCS ::= %empty >+ /.$BeginCode >+ $setResult(null); >+ $EndCode >+ ./ >+ isMarkedPreCS ::= '@pre' >+ /.$BeginCode >+ CSTNode result = createIsMarkedPreCS(); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ argumentsCSopt ::= %empty >+ /.$EmptyListAction./ >+ argumentsCSopt -> argumentsCS >+ >+ argumentsCS ::= oclExpressionCS >+ /.$BeginCode >+ EList result = new BasicEList(); >+ result.add($getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ argumentsCS ::= argumentsCS ',' oclExpressionCS >+ /.$BeginCode >+ EList result = (EList)$getSym(1); >+ result.add($getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ letExpCS ::= let variableListCS in oclExpressionCS >+ /.$BeginCode >+ CSTNode result = createLetExpCS( >+ (EList)$getSym(2), >+ (OCLExpressionCS)$getSym(4) >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ ifExpCS ::= if oclExpressionCS then oclExpressionCS else oclExpressionCS endif >+ /.$BeginCode >+ CSTNode result = createIfExpCS( >+ (OCLExpressionCS)$getSym(2), >+ (OCLExpressionCS)$getSym(4), >+ (OCLExpressionCS)$getSym(6) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ messageExpCS ::= '^' simpleNameCS '(' oclMessageArgumentsCSopt ')' >+ /.$NewCase./ >+ messageExpCS ::= '^^' simpleNameCS '(' oclMessageArgumentsCSopt ')' >+ /.$BeginCode >+ CSTNode result = createMessageExpCS( >+ getIToken($getToken(1)).getKind() == $sym_type.TK_CARET, >+ (SimpleNameCS)$getSym(2), >+ (EList<OCLMessageArgCS>)$getSym(4) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ oclMessageArgumentsCSopt ::= %empty >+ /.$EmptyListAction./ >+ oclMessageArgumentsCSopt -> oclMessageArgumentsCS >+ >+ oclMessageArgumentsCS ::= oclMessageArgCS >+ /.$BeginCode >+ EList result = new BasicEList(); >+ result.add($getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ oclMessageArgumentsCS ::= oclMessageArgumentsCS ',' oclMessageArgCS >+ /.$BeginCode >+ EList result = (EList)$getSym(1); >+ result.add($getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ oclMessageArgCS ::= oclExpressionCS >+ /.$BeginCode >+ CSTNode result = createOCLMessageArgCS( >+ null, >+ (OCLExpressionCS)$getSym(1) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ oclMessageArgCS ::= '?' >+ /.$BeginCode >+ CSTNode result = createOCLMessageArgCS( >+ null, >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ oclMessageArgCS ::= '?' ':' typeCS >+ /.$BeginCode >+ CSTNode result = createOCLMessageArgCS( >+ (TypeCS)$getSym(3), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+%End >+ >+%Trailers >+ /. >+ $EndActions >+ } >+ ./ >+%End >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.gi >diff -N src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,42 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008, 2009 Eclipse.org, Open Canarias S.L., and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * IBM - Initial API and implementation >+-- * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLBacktrackingLexer.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- The OCL Backtracking Lexer, which is nominally identical to the >+-- normal Lexer, however the extra ERROR_TOKEN symbol makes it difficult >+-- to share reliably. >+-- >+ >+%options escape=$ >+%options la=2 >+%options fp=OCLBacktrackingLexer,prefix=Char_ >+%options single-productions >+%options noserialize >+%options package=org.eclipse.ocl.parser.backtracking >+%options template=../../lpg/LexerTemplateD.gi >+%options filter=OCLBacktrackingKWLexer.gi >+%options export_terminals=("OCLBacktrackingParsersym.java", "TK_") >+%options include_directory="..;../../lpg" >+ >+%Import >+ OCLLexer.gi >+%End >+ >+%Define >+ $kw_lexer_class /.OCLBacktrackingKWLexer./ >+%End >Index: src/org/eclipse/ocl/parser/backtracking/EssentialOCLErrors.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/backtracking/EssentialOCLErrors.gi >diff -N src/org/eclipse/ocl/parser/backtracking/EssentialOCLErrors.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/backtracking/EssentialOCLErrors.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,417 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008, 2009 Eclipse.org and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * E.D.Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: EssentialOCLErrors.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- Additional ERROR_TOKEN rules for The EssentialOCL Backtracking Parser >+-- >+ >+%Rules >+ ERROR_Colon ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_COLON); >+ $EndCode >+ ./ >+ ERROR_Empty ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.EXTRA_TOKENS); >+ $EndCode >+ ./ >+ ERROR_IsMarkedPreCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_AT_PRE); >+ $setResult(null); >+ $EndCode >+ ./ >+ >+ ERROR_PathNameCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_PATH_NAME); >+ CSTNode result = createPathNameCS(createSimpleNameCS(SimpleTypeEnum.IDENTIFIER_LITERAL, getTokenText($getToken(1)))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ ERROR_SimpleNameCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_SIMPLE_NAME); >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.IDENTIFIER_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ attrOrNavCallExpCS ::= simpleNameCS '[' argumentsCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RBRACK); >+ CSTNode result = createFeatureCallExpCS( >+ (SimpleNameCS)$getSym(1), >+ (EList)$getSym(3), >+ null >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ collectionTypeCS ::= collectionTypeIdentifierCS '(' typeCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RPAREN); >+ Object[] objs = (Object[])$getSym(1); >+ CSTNode result = createCollectionTypeCS( >+ (CollectionTypeIdentifierEnum)objs[1], >+ (TypeCS)$getSym(3) >+ ); >+ setOffsets(result, (IToken)objs[0], getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ collectionTypeCS ::= collectionTypeIdentifierCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_LPAREN); >+ Object[] objs = (Object[])$getSym(1); >+ CSTNode result = createCollectionTypeCS( >+ (CollectionTypeIdentifierEnum)objs[1], >+ null >+ ); >+ setOffsets(result, (IToken)objs[0], getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ dotArrowExpCS ::= pathNameCS '::' ERROR_SimpleNameCS '(' argumentsCSopt ')' >+ /.$BeginCode >+ OperationCallExpCS result = createOperationCallExpCS( >+ (PathNameCS)$getSym(1), >+ (SimpleNameCS)$getSym(3), >+ (EList)$getSym(5) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(6))); >+ result.setAccessor(DotOrArrowEnum.DOT_LITERAL); >+ $setResult(result); >+ $EndCode >+ ./ >+-- FIXME dotArrowExpCS ::= NUMERIC_OPERATION ERROR_SimpleNameCS >+ >+ enumLiteralExpCS ::= pathNameCS '::' ERROR_SimpleNameCS >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ CSTNode result = createEnumLiteralExpCS( >+ pathNameCS, >+ simpleNameCS >+ ); >+ setOffsets(result, pathNameCS, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ featureCallExpCS ::= unaryName ERROR_IsMarkedPreCS '(' argumentsCSopt ')' >+ /.$NewCase./ >+ keywordOperationCallExpCS ::= keywordAsName ERROR_IsMarkedPreCS '(' argumentsCSopt ')' >+ /.$NewCase./ >+ operationCallExpCS ::= binaryName ERROR_IsMarkedPreCS '(' argumentsCSopt ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createOperationCallExpCS( >+ simpleNameCS, >+ (IsMarkedPreCS)$getSym(2), >+ (EList)$getSym(4) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCallExpCS ::= oclIsInStateName ERROR_IsMarkedPreCS '(' stateExpCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ CSTNode result = createOperationCallExpCS( >+ simpleNameCS, >+ (IsMarkedPreCS)$getSym(2), >+ (StateExpCS)$getSym(4) >+ ); >+ setOffsets(result, simpleNameCS, getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ ifExpCS ::= if oclExpressionCS then oclExpressionCS else oclExpressionCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_ENDIF); >+ CSTNode result = createIfExpCS( >+ (OCLExpressionCS)$getSym(2), >+ (OCLExpressionCS)$getSym(4), >+ (OCLExpressionCS)$getSym(6) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ ifExpCS ::= if oclExpressionCS then oclExpressionCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(5), OCLParserErrors.MISSING_ELSE_ENDIF); >+ CSTNode result = createIfExpCS( >+ (OCLExpressionCS)$getSym(2), >+ (OCLExpressionCS)$getSym(4), >+ createInvalidLiteralExpCS(getTokenText($getToken(5))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ ifExpCS ::= if oclExpressionCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_THEN_ELSE_ENDIF); >+ CSTNode result = createIfExpCS( >+ (OCLExpressionCS)$getSym(2), >+ createInvalidLiteralExpCS(getTokenText($getToken(3))), >+ createInvalidLiteralExpCS(getTokenText($getToken(3))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ ifExpCS ::= if ERROR_TOKEN endif >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_THEN_ELSE); >+ CSTNode result = createIfExpCS( >+ createInvalidLiteralExpCS(getTokenText($getToken(2))), >+ createInvalidLiteralExpCS(getTokenText($getToken(2))), >+ createInvalidLiteralExpCS(getTokenText($getToken(2))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ messageExpCS ::= '^' simpleNameCS ERROR_TOKEN >+ /.$NewCase./ >+ messageExpCS ::= '^^' simpleNameCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_MESSAGE_ARGUMENTS); >+ CSTNode result = createMessageExpCS( >+ getIToken($getToken(1)).getKind() == $sym_type.TK_CARET, >+ (SimpleNameCS)$getSym(2), >+ new BasicEList<OCLMessageArgCS>() >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ messageExpCS ::= '^' ERROR_SimpleNameCS >+ /.$NewCase./ >+ messageExpCS ::= '^^' ERROR_SimpleNameCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(2); >+ CSTNode result = createMessageExpCS( >+ getIToken($getToken(1)).getKind() == $sym_type.TK_CARET, >+ simpleNameCS, >+ new BasicEList<OCLMessageArgCS>() >+ ); >+ setOffsets(result, getIToken($getToken(1)), simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ oclExpCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_EXPR); >+ CSTNode result = createInvalidLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ oclExpCS ::= '(' oclExpressionCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_RPAREN); >+ CSTNode result = (CSTNode)$getSym(2); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ operationCS1 ::= IDENTIFIER '(' parametersCSopt ')' ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createOperationCS( >+ getTokenText($getToken(1)), >+ (EList)$getSym(3), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS1 ::= IDENTIFIER '(' parametersCSopt ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RPAREN); >+ CSTNode result = createOperationCS( >+ getTokenText($getToken(1)), >+ (EList)$getSym(3), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS1 ::= IDENTIFIER ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_LPAREN); >+ CSTNode result = createOperationCS( >+ getTokenText($getToken(1)), >+ new BasicEList(), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS1 ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_IDENTIFIER); >+ CSTNode result = createOperationCS( >+ getTokenText($getToken(1)), >+ new BasicEList(), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' simpleNameCS '(' parametersCSopt ')' ERROR_Colon >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ CSTNode result = createOperationCS( >+ pathNameCS, >+ (SimpleNameCS)$getSym(3), >+ (EList)$getSym(5), >+ (TypeCS)$getSym(8) >+ ); >+ setOffsets(result, pathNameCS, getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' simpleNameCS '(' parametersCSopt ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(6), OCLParserErrors.MISSING_RPAREN); >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ CSTNode result = createOperationCS( >+ pathNameCS, >+ (SimpleNameCS)$getSym(3), >+ (EList)$getSym(5), >+ null >+ ); >+ setOffsets(result, pathNameCS, getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' simpleNameCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_LPAREN); >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ CSTNode result = createOperationCS( >+ pathNameCS, >+ (SimpleNameCS)$getSym(3), >+ new BasicEList(), >+ null >+ ); >+ setOffsets(result, pathNameCS, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' ERROR_SimpleNameCS >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ CSTNode result = createOperationCS( >+ pathNameCS, >+ simpleNameCS, >+ new BasicEList(), >+ null >+ ); >+ setOffsets(result, pathNameCS, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ parametersCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_PARAMETERS); >+ EList result = new BasicEList(); >+ $setResult(result); >+ $EndCode >+ ./ >+ parametersCS ::= parametersCS ',' ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_PARAMETER); >+ $EndCode >+ ./ >+ >+ pathNameCS -> ERROR_PathNameCS >+ >+ simpleNameCSopt -> ERROR_SimpleNameCS >+ >+ tupleLiteralExpCS ::= Tuple ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_LBRACE); >+ CSTNode result = createTupleLiteralExpCS((EList)$getSym(3)); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ variableCS ::= IDENTIFIER ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_VARIABLE_TYPE); >+ CSTNode result = createVariableCS( >+ getTokenText($getToken(1)), >+ null, >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ variableExpCS ::= simpleNameCS '[' argumentsCS ERROR_TOKEN >+ /.$NewCase./ >+ variableExpCS ::= keywordAsName1 '[' argumentsCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RBRACK); >+ CSTNode result = createVariableExpCS( >+ (SimpleNameCS)$getSym(1), >+ (EList)$getSym(3), >+ null >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ variableListCS ::= ERROR_TOKEN >+ /.$NewCase./ >+ variableListCS2 ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_VARIABLES); >+ EList result = new BasicEList(); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+%End >Index: src/org/eclipse/ocl/parser/OCLLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/OCLLexer.gi >diff -N src/org/eclipse/ocl/parser/OCLLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/OCLLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,613 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- *f >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLLexer.g,v 1.2 2009/02/12 00:04:09 cdamus Exp $ >+-- */ >+-- >+-- The OCL Lexer >+-- >+ >+%options escape=$ >+%options la=2 >+%options fp=OCLLexer,prefix=Char_ >+%options single-productions >+%options noserialize >+%options package=org.eclipse.ocl.parser >+%options template=../lpg/LexerTemplateD.gi >+%options filter=OCLKWLexer.gi >+%options export_terminals=("OCLParsersym.java", "TK_") >+%options include_directory="../lpg" >+ >+%Define >+ >+ -- >+ -- Definition of macros used in the template >+ -- >+ $action_class /.$file_prefix./ >+ $eof_token /.$_EOF_TOKEN./ >+ $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./ >+ $adapt_environment /.OCLUtil.getAdapter(environment, BasicEnvironment.class)./ >+ $environment_import /.org.eclipse.ocl.Environment./ >+ >+ -- >+ -- Definition of macro used in the included file LexerBasicMap.g >+ -- >+ $kw_lexer_class /.OCLKWLexer./ >+ $copyright_contributions /.*./ >+ >+%End >+ >+%Notice >+ /./** >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp. and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+ * - Bug 259818 >+ * Borland - Bug 242880 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+ $copyright_contributions >+ * </copyright> >+ * >+ * $Id: OCLLexer.g,v 1.3 2009/08/28 20:43:11 ewillink Exp $ >+ */ >+ ./ >+%End >+ >+%Import >+ LexerBasicMap.gi >+%End >+ >+%Globals >+ /.import $environment_import; >+ import org.eclipse.ocl.lpg.BasicEnvironment; >+ import org.eclipse.ocl.util.OCLUtil; >+ ./ >+%End >+ >+%Export >+ >+ IDENTIFIER >+ STRING_LITERAL >+ INTEGER_LITERAL >+ REAL_LITERAL >+ NUMERIC_OPERATION >+ INTEGER_RANGE_START >+ >+ PLUS >+ MINUS >+ MULTIPLY >+ DIVIDE >+ >+ GREATER >+ LESS >+ EQUAL >+ GREATER_EQUAL >+ LESS_EQUAL >+ NOT_EQUAL >+ >+ LPAREN >+ RPAREN >+ LBRACE >+ RBRACE >+ LBRACKET >+ RBRACKET >+ >+ ARROW >+ BAR >+ COMMA >+ COLON >+ COLONCOLON >+ SEMICOLON >+ DOT >+ DOTDOT >+ ATPRE >+ >+ CARET >+ CARETCARET >+ QUESTIONMARK >+ >+ SINGLE_LINE_COMMENT >+ MULTI_LINE_COMMENT >+ >+%End >+ >+%Terminals >+ CtlCharNotWS >+ >+ LF CR HT FF >+ >+ a b c d e f g h i j k l m n o p q r s t u v w x y z >+ _ >+ >+ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z >+ >+ 0 1 2 3 4 5 6 7 8 9 >+ >+ AfterASCIINotAcute >+ Space ::= ' ' >+ LF ::= NewLine >+ CR ::= Return >+ HT ::= HorizontalTab >+ FF ::= FormFeed >+ DoubleQuote ::= '"' >+ SingleQuote ::= "'" >+ Percent ::= '%' >+ VerticalBar ::= '|' >+ Exclamation ::= '!' >+ AtSign ::= '@' >+ BackQuote ::= '`' >+ Acute ::= 'ยด' >+ Tilde ::= '~' >+ Sharp ::= '#' >+ DollarSign ::= '$' >+ Ampersand ::= '&' >+ Caret ::= '^' >+ Colon ::= ':' >+ SemiColon ::= ';' >+ BackSlash ::= '\' >+ LeftBrace ::= '{' >+ RightBrace ::= '}' >+ LeftBracket ::= '[' >+ RightBracket ::= ']' >+ QuestionMark ::= '?' >+ Comma ::= ',' >+ Dot ::= '.' >+ LessThan ::= '<' >+ GreaterThan ::= '>' >+ Plus ::= '+' >+ Minus ::= '-' >+ Slash ::= '/' >+ Star ::= '*' >+ LeftParen ::= '(' >+ RightParen ::= ')' >+ Equal ::= '=' >+ >+%End >+ >+%Start >+ Token >+%End >+ >+%Rules >+ >+ --------------------- Rules for Scanned Tokens -------------------------------- >+ -- The lexer creates an array list of tokens which is defined in the PrsStream class. >+ -- A token has three attributes: a start offset, an end offset and a kind. >+ -- >+ -- Only rules that produce complete tokens have actions to create token objects. >+ -- When making a token, calls to the methods, $getToken(1) and $getRightSpan(), >+ -- provide the offsets (i.e. the span) of a rule's right hand side (rhs) and thus of the token. >+ -- For a rule of the form A ::= A1 A2 ... An, the start offset of the rhs of A is given by >+ -- $getToken(1) or by $getLeftSpan() and the end offset by $getRightSpan(). >+ -- >+ -- Regarding rules for parsing in general, note that for a rhs symbol Ai, the >+ -- method $getToken(i) returns the location of the leftmost character derived from Ai. >+ -- The method $getLeftSpan(i) returns the same location unless Ai produces %empty in which case >+ -- it returns the location of the last character derived before reducing Ai to %empty. >+ -- The method $getRightSpan(i) returns the location of the rightmost character derived from Ai >+ -- unless Ai produces %empty in which case it returns the location of the last character >+ -- derived before reducing Ai to %empty. >+ -------------------------------------------------------------------------------- >+ Token ::= Identifier >+ /.$BeginAction >+ checkForKeyWord(); >+ $EndAction >+ ./ >+ >+ -- an empty String literal looks just like an escaped single-quote >+ Token ::= EscapedSQ >+ /.$BeginAction >+ makeToken($_STRING_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= SingleQuote SLNotSQ SingleQuote >+ /.$BeginAction >+ makeToken($_STRING_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= Acute SLNotSQOpt Acute >+ /.$BeginAction >+ makeToken($_STRING_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= BackQuote SLNotSQOpt Acute >+ /.$BeginAction >+ makeToken($_STRING_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= IntegerLiteral >+ /.$BeginAction >+ makeToken($_INTEGER_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= RealLiteral >+ /.$BeginAction >+ makeToken($_REAL_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= NumericOperation >+ /.$BeginAction >+ makeToken($_NUMERIC_OPERATION); >+ $EndAction >+ ./ >+ >+ Token ::= IntegerRangeStart >+ /.$BeginAction >+ makeToken($_INTEGER_RANGE_START); >+ $EndAction >+ ./ >+ >+ Token ::= SLC >+ /.$BeginAction >+ makeComment($_SINGLE_LINE_COMMENT); >+ $EndAction >+ ./ >+ >+ Token ::= '/' '*' Inside Stars '/' >+ /.$BeginAction >+ makeComment($_MULTI_LINE_COMMENT); >+ $EndAction >+ ./ >+ >+ Token ::= WS -- White Space is scanned but not added to output vector >+ /.$BeginAction >+ skipToken(); >+ $EndAction >+ ./ >+ >+ Token ::= '+' >+ /.$BeginAction >+ makeToken($_PLUS); >+ $EndAction >+ ./ >+ >+ Token ::= '-' >+ /.$BeginAction >+ makeToken($_MINUS); >+ $EndAction >+ ./ >+ >+ Token ::= '*' >+ /.$BeginAction >+ makeToken($_MULTIPLY); >+ $EndAction >+ ./ >+ >+ Token ::= '/' >+ /.$BeginAction >+ makeToken($_DIVIDE); >+ $EndAction >+ ./ >+ >+ Token ::= '(' >+ /.$BeginAction >+ makeToken($_LPAREN); >+ $EndAction >+ ./ >+ >+ Token ::= ')' >+ /.$BeginAction >+ makeToken($_RPAREN); >+ $EndAction >+ ./ >+ >+ Token ::= '>' >+ /.$BeginAction >+ makeToken($_GREATER); >+ $EndAction >+ ./ >+ >+ Token ::= '<' >+ /.$BeginAction >+ makeToken($_LESS); >+ $EndAction >+ ./ >+ >+ Token ::= '=' >+ /.$BeginAction >+ makeToken($_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '>' '=' >+ /.$BeginAction >+ makeToken($_GREATER_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '<' '=' >+ /.$BeginAction >+ makeToken($_LESS_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '<' '>' >+ /.$BeginAction >+ makeToken($_NOT_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '[' >+ /.$BeginAction >+ makeToken($_LBRACKET); >+ $EndAction >+ ./ >+ >+ Token ::= ']' >+ /.$BeginAction >+ makeToken($_RBRACKET); >+ $EndAction >+ ./ >+ >+ Token ::= '{' >+ /.$BeginAction >+ makeToken($_LBRACE); >+ $EndAction >+ ./ >+ >+ Token ::= '}' >+ /.$BeginAction >+ makeToken($_RBRACE); >+ $EndAction >+ ./ >+ >+ Token ::= '-' '>' >+ /.$BeginAction >+ makeToken($_ARROW); >+ $EndAction >+ ./ >+ >+ Token ::= '|' >+ /.$BeginAction >+ makeToken($_BAR); >+ $EndAction >+ ./ >+ >+ Token ::= ',' >+ /.$BeginAction >+ makeToken($_COMMA); >+ $EndAction >+ ./ >+ >+ Token ::= ':' >+ /.$BeginAction >+ makeToken($_COLON); >+ $EndAction >+ ./ >+ >+ Token ::= ':' ':' >+ /.$BeginAction >+ makeToken($_COLONCOLON); >+ $EndAction >+ ./ >+ >+ Token ::= ';' >+ /.$BeginAction >+ makeToken($_SEMICOLON); >+ $EndAction >+ ./ >+ >+ Token ::= '.' >+ /.$BeginAction >+ makeToken($_DOT); >+ $EndAction >+ ./ >+ >+ Token ::= '.' '.' >+ /.$BeginAction >+ makeToken($_DOTDOT); >+ $EndAction >+ ./ >+ >+ Token ::= '@' p r e >+ /.$BeginAction >+ makeToken($_ATPRE); >+ $EndAction >+ ./ >+ >+ >+ Token ::= '^' >+ /.$BeginAction >+ makeToken($_CARET); >+ $EndAction >+ ./ >+ >+ Token ::= '^' '^' >+ /.$BeginAction >+ makeToken($_CARETCARET); >+ $EndAction >+ ./ >+ >+ Token ::= '?' >+ /.$BeginAction >+ makeToken($_QUESTIONMARK); >+ $EndAction >+ ./ >+ >+ >+ IntegerLiteral -> Integer >+ -- | '0' LetterXx HexDigits >+ >+ RealLiteral -> Decimal >+ | Decimal Exponent >+ | Integer Exponent >+ >+ Inside ::= Inside Stars NotSlashOrStar >+ | Inside '/' >+ | Inside NotSlashOrStar >+ | %empty >+ >+ Stars -> '*' >+ | Stars '*' >+ >+ SLC -> '-' '-' >+ | SLC NotEol >+ >+ Integer -> Digit >+ | Integer Digit >+ >+ HexDigits -> HexDigit >+ | HexDigits HexDigit >+ >+ Decimal -> Integer '.' Integer >+ >+ Exponent -> LetterEe Integer >+ | LetterEe '-' Integer >+ | LetterEe '+' Integer >+ >+ WSChar -> Space >+ | LF >+ | CR >+ | HT >+ | FF >+ >+ Letter -> LowerCaseLetter >+ | UpperCaseLetter >+ | _ >+ | AfterASCIINotAcute >+ >+ LowerCaseLetter -> a | b | c | d | e | f | g | h | i | j | k | l | m | >+ n | o | p | q | r | s | t | u | v | w | x | y | z >+ >+ UpperCaseLetter -> A | B | C | D | E | F | G | H | I | J | K | L | M | >+ N | O | P | Q | R | S | T | U | V | W | X | Y | Z >+ >+ Digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 >+ >+ OctalDigit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 >+ >+ a..fA..F -> a | b | c | d | e | f | A | B | C | D | E | F >+ >+ HexDigit -> Digit >+ | a..fA..F >+ >+ OctalDigits3 -> OctalDigit >+ | OctalDigit OctalDigit >+ | OctalDigit OctalDigit OctalDigit >+ >+ LetterEe -> 'E' >+ | 'e' >+ >+ LetterXx -> 'X' >+ | 'x' >+ >+ WS -> WSChar >+ | WS WSChar >+ >+ Identifier -> Letter >+ | Identifier Letter >+ | Identifier Digit >+ | Identifier DollarSign >+ | QuotedName >+ >+ SpecialNotStar -> '+' | '-' | '/' | '(' | ')' | '"' | '!' | '@' | '`' | '~' | >+ '%' | '&' | '^' | ':' | ';' | "'" | '\' | '|' | '{' | '}' | >+ '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign >+ >+ SpecialNotSlash -> '+' | '-' | -- exclude the star as well >+ '(' | ')' | '"' | '!' | '@' | '`' | '~' | >+ '%' | '&' | '^' | ':' | ';' | "'" | '\' | '|' | '{' | '}' | >+ '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign >+ >+ SpecialNotSQNotDQ -> '+' | '-' | '/' | '(' | ')' | '*' | '!' | '@' | '`' | '~' | >+ '%' | '&' | '^' | ':' | ';' | '|' | '{' | '}' | >+ '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign >+ >+ >+ SpecialNotDQ -> SpecialNotSQNotDQ | "'" >+ SpecialNotSQ -> SpecialNotSQNotDQ | '"' >+ >+ EscapedSymbols -> NotSQNotDQ | '"' | "'" | '\' >+ BackslashEscapedSymbol -> '\' EscapedSymbols >+ >+ NotSlashOrStar -> Letter >+ | Digit >+ | SpecialNotSlash >+ | WSChar >+ >+ NotEol -> Letter >+ | Digit >+ | Space >+ | '*' >+ | SpecialNotStar >+ | HT >+ | FF >+ | CtlCharNotWS >+ >+ NotSQNotDQ -> Letter >+ | Digit >+ | SpecialNotSQNotDQ >+ | Space >+ >+ NotDQ -> Letter >+ | Digit >+ | SpecialNotDQ >+ | Space >+ | EscapedDQ >+ --| '\' u HexDigit HexDigit HexDigit HexDigit >+ --| '\' OctalDigit >+ >+ NotSQ -> Letter >+ | Digit >+ | SpecialNotSQ >+ | Space >+ | EscapedSQ >+ | BackslashEscapedSymbol >+ --| '\' u HexDigit HexDigit HexDigit HexDigit >+ --| '\' OctalDigit >+ >+ EscapedSQ -> SingleQuote SingleQuote >+ >+ -- maintain this for compatibility with the "...\"..." escapes in an >+ -- escape mechanism (double-quotes) that isn't compliant, anyway >+ EscapedDQ -> '\' DoubleQuote >+ >+ SLNotDQ -> NotDQ >+ | SLNotDQ NotDQ >+ >+ SLNotSQ -> NotSQ >+ | SLNotSQ NotSQ >+ >+ SLNotSQOpt -> %empty >+ | SLNotSQ >+ >+ QuotedName -> '"' SLNotDQ '"' >+ >+ NumericOperation -> Integer '.' Identifier >+ NumericOperation -> Integer '.' '+' >+ NumericOperation -> Integer '.' '-' >+ NumericOperation -> Integer '.' '*' >+ NumericOperation -> Integer '.' '/' >+ NumericOperation -> Integer '.' '<' >+ NumericOperation -> Integer '.' '<' '=' >+ NumericOperation -> Integer '.' '>' '=' >+ NumericOperation -> Integer '.' '>' >+ >+ IntegerRangeStart -> Integer '.' '.' >+ >+%End
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 242153
:
113562
|
144433
|
144559
|
144561
|
146213
|
146215
|
146307
|
146308
|
146322
|
146527
|
146557
|
154939
|
154947
|
155049
|
155227
|
155269