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 144559 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]
New OCL with LPG v2 patch.
ocl242153_try2_a.patch (text/plain), 311.66 KB, created by
Adolfo Sanchez-Barbudo Herrera
on 2009-08-14 13:49:40 EDT
(
hide
)
Description:
New OCL with LPG v2 patch.
Filename:
MIME Type:
Creator:
Adolfo Sanchez-Barbudo Herrera
Created:
2009-08-14 13:49:40 EDT
Size:
311.66 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.2 >diff -u -r1.2 OCLKWLexer.java >--- src/org/eclipse/ocl/parser/OCLKWLexer.java 13 Jan 2009 20:31:30 -0000 1.2 >+++ src/org/eclipse/ocl/parser/OCLKWLexer.java 14 Aug 2009 17:43:01 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, 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 >@@ -10,18 +10,17 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLKWLexer.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $ >+* > */ > > package org.eclipse.ocl.parser; > > >-/** >- * @noextend This class is not intended to be subclassed by clients. >- */ >+ > public class OCLKWLexer extends OCLKWLexerprs implements OCLParsersym > { > private char[] inputChars; >@@ -59,66 +58,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); > } > > >@@ -130,382 +131,444 @@ > // > // 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 ::= I n v a l i d > // >- keywordKind[58] = (TK_Invalid); >+ >+ keywordKind[58] = (OCLParsersym.TK_Invalid); > > > // > // 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 ::= O c l I n v a l i d > // >- keywordKind[61] = (TK_OclInvalid); >+ >+ keywordKind[61] = (OCLParsersym.TK_OclInvalid); > > > // > // 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); > > >- > for (int i = 0; i < keywordKind.length; i++) > { > if (keywordKind[i] == 0) >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.7 >diff -u -r1.7 OCLParser.java >--- src/org/eclipse/ocl/parser/OCLParser.java 5 Mar 2009 14:12:14 -0000 1.7 >+++ src/org/eclipse/ocl/parser/OCLParser.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,8 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+* 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 >@@ -14,10 +15,11 @@ > * E.D.Willink - Bugs 225493, 243976, 259818 > * Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLParser.java,v 1.7 2009/03/05 14:12:14 cdamus Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser; >@@ -44,15 +46,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.DefExpressionCS; >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.2 >diff -u -r1.2 OCLKWLexerprs.java >--- src/org/eclipse/ocl/parser/OCLKWLexerprs.java 13 Jan 2009 20:31:30 -0000 1.2 >+++ src/org/eclipse/ocl/parser/OCLKWLexerprs.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, 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 >@@ -10,18 +10,97 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLKWLexerprs.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $ >+* > */ > > package org.eclipse.ocl.parser; > >-/** >- * @noextend This class is not intended to be subclassed by clients. >- */ >-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 = 256; >+ 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 = 386; >+ 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 = 63; >+ 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 = 64; >+ 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 = 322; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 323; >+ 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, >@@ -30,7 +109,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; >@@ -159,7 +238,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,0,0 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -245,56 +324,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 = 256, >- NT_OFFSET = 54, >- LA_STATE_OFFSET = 386, >- MAX_LA = 1, >- NUM_RULES = 63, >- NUM_NONTERMINALS = 2, >- NUM_SYMBOLS = 56, >- SEGMENT_SIZE = 8192, >- START_STATE = 64, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 39, >- EOLT_SYMBOL = 55, >- ACCEPT_ACTION = 322, >- ERROR_ACTION = 323; >- >- 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/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.3 >diff -u -r1.3 OCLParser.g >--- src/org/eclipse/ocl/parser/OCLParser.g 13 Jan 2009 19:44:29 -0000 1.3 >+++ src/org/eclipse/ocl/parser/OCLParser.g 14 Aug 2009 17:43:02 -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 >@@ -11,6 +11,7 @@ > -- * IBM - Initial API and implementation > -- * E.D. Willink - Elimination of some shift-reduce conflicts > -- * - Bug 259818 >+-- * Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > -- * > -- * </copyright> > -- * >@@ -29,27 +30,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 >+%Include >+ 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.DefExpressionCS; >@@ -59,9 +60,9 @@ > import org.eclipse.ocl.cst.PackageDeclarationCS; > import org.eclipse.ocl.cst.PrePostOrBodyEnum; > ./ >-$End >+%End > >-$KeyWords >+%KeyWords > context > package > >@@ -71,9 +72,9 @@ > -- > attr > oper >-$End >+%End > >-$Rules >+%Rules > -- opt = optional > -- m = multiple > >@@ -83,56 +84,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 >@@ -140,7 +141,7 @@ > contextDeclCS -> propertyContextCS > > propertyContextCS ::= context pathNameCS '::' simpleNameCS ':' typeCS initOrDerValueCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createPropertyContextCS( > (PathNameCS)$getSym(2), > (SimpleNameCS)$getSym(4), >@@ -149,11 +150,11 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(7)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > initOrDerValueCS ::= initOrDerValueCSopt init ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createInitValueCS( > (InitOrDerValueCS)$getSym(1), > (OCLExpressionCS)$getSym(4) >@@ -164,11 +165,11 @@ > setOffsets(result, getIToken($getToken(2)), (CSTNode)$getSym(4)); > } > $setResult(result); >- $EndJava >+ $EndCode > ./ > > initOrDerValueCS ::= initOrDerValueCSopt derive ':' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createDerValueCS( > (InitOrDerValueCS)$getSym(1), > (OCLExpressionCS)$getSym(4) >@@ -179,15 +180,15 @@ > setOffsets(result, getIToken($getToken(2)), (CSTNode)$getSym(4)); > } > $setResult(result); >- $EndJava >+ $EndCode > ./ > >- initOrDerValueCSopt ::= $empty >+ initOrDerValueCSopt ::= %empty > /.$NullAction./ > initOrDerValueCSopt -> initOrDerValueCS > > classifierContextDeclCS ::= context pathNameCS invOrDefCSm >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3); > CSTNode result = createClassifierContextDeclCS( > (PathNameCS)$getSym(2), >@@ -195,47 +196,47 @@ > ); > 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 > ./ > > invOrDefCS ::= def simpleNameCSopt ':' defExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createDefCS( > (SimpleNameCS)$getSym(2), > (DefExpressionCS)$getSym(4) > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > defExpressionCS ::= typedVariableCS '=' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > VariableCS variableCS = (VariableCS)$getSym(1); > OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3); > CSTNode result = createDefExpressionCS( >@@ -245,10 +246,10 @@ > ); > setOffsets(result, variableCS, expressionCS); > $setResult(result); >- $EndJava >+ $EndCode > ./ > defExpressionCS ::= operationCS1 '=' oclExpressionCS >- /.$BeginJava >+ /.$BeginCode > CSTNode result = createDefExpressionCS( > null, > (OperationCS)$getSym(1), >@@ -256,11 +257,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), >@@ -268,26 +269,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), >@@ -295,10 +296,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), >@@ -306,10 +307,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), >@@ -317,6 +318,6 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ >-$End >+%End >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.7 >diff -u -r1.7 AbstractOCLParser.java >--- src/org/eclipse/ocl/parser/AbstractOCLParser.java 5 Mar 2009 14:30:51 -0000 1.7 >+++ src/org/eclipse/ocl/parser/AbstractOCLParser.java 14 Aug 2009 17:43:01 -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 { > >@@ -743,7 +744,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); >@@ -812,7 +813,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.6 >diff -u -r1.6 OCLParserprs.java >--- src/org/eclipse/ocl/parser/OCLParserprs.java 13 Jan 2009 20:31:30 -0000 1.6 >+++ src/org/eclipse/ocl/parser/OCLParserprs.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,8 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+* 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 >@@ -13,19 +14,123 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818 > * Zeligsoft - Bug 243976 >+* Borland - Bug 242880 >+* Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLParserprs.java,v 1.6 2009/01/13 20:31:30 cdamus Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser; > >-/** >- * @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 = 99; >+ 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 = 214; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 99; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 3369; >+ 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 = 272; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 104; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 203; >+ 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 = 2905; >+ 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 = 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 = 3096; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 3097; >+ 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,1,0, >+ 0,0,0,1,1,0,0,0,0,0, >+ 0,0,0,0,1,1,0,0,0,0, >+ 0,0,0,1,0,0,0,0,1,1, >+ 0,0,0,0,0,0,1,1,0,0, >+ 0,0,0,1,1,0,0,1,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, >+ 54,9,21,62,5,6,7,10,3,8, >+ 15,50,51,11,40,42,44,48,49,56, >+ 57,58,59,60,61,67,68,69,70,71, >+ 41,43,38,39,34,35,36,37,32,33, >+ 30,31,28,29,25,26,27,77,23,52, >+ 53,78,80,81,24,47,97,98,99,100, >+ 88,91,92,4,12,19,20,22,65,66, >+ 73,79,83,84,86,87,93,94,96,101, >+ 2,13,14,17,18,45,46,55,63,64, >+ 72,74,75,76,82,85,89,90,95,102, >+ 103,104,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, >@@ -1190,29 +1295,29 @@ > > public interface ScopeRhs { > public final static char scopeRhs[] = {0, >- 174,1,101,88,0,12,0,174,1,101, >- 87,0,144,93,144,92,144,71,0,45, >- 0,144,92,144,71,0,44,116,45,0, >- 144,71,0,43,116,44,116,45,0,172, >- 68,0,52,116,0,150,81,101,0,16, >- 0,0,155,1,149,107,0,155,1,149, >+ 174,1,101,88,0,4,0,174,1,101, >+ 87,0,144,93,144,92,144,71,0,94, >+ 0,144,92,144,71,0,93,144,94,0, >+ 144,71,0,92,144,93,144,94,0,172, >+ 68,0,96,144,0,150,81,101,0,74, >+ 149,0,155,1,149,107,0,155,1,149, > 109,0,155,1,149,164,0,194,1,59, >- 0,151,1,103,0,151,24,2,0,7, >- 116,0,144,72,148,84,148,1,181,0, >- 148,84,148,1,181,0,18,116,12,0, >- 148,1,181,0,22,115,18,116,12,0, >+ 0,151,1,103,0,151,24,2,0,3, >+ 144,0,144,72,148,84,148,1,181,0, >+ 148,84,148,1,181,0,72,144,4,0, >+ 148,1,181,0,84,148,72,144,4,0, > 144,72,148,1,181,0,144,72,148,36, > 148,1,182,0,148,36,148,1,182,0, >- 148,1,182,0,19,115,18,116,12,0, >+ 148,1,182,0,36,148,72,144,4,0, > 144,72,148,1,182,0,144,1,182,0, >- 190,69,59,0,14,0,188,69,103,0, >+ 190,69,59,0,80,0,188,69,103,0, > 150,81,113,0,144,1,0,155,1,101, >- 67,102,0,155,1,60,0,132,0,4, >- 130,0,3,130,0,136,0,2,128,0, >- 1,128,0,138,0,9,125,0,8,125, >- 0,6,125,0,5,125,0,140,0,10, >- 123,0,7,123,0,142,0,48,121,0, >- 47,121,0,46,121,0 >+ 67,102,0,155,1,60,0,132,0,17, >+ 130,0,16,130,0,136,0,35,133,0, >+ 34,133,0,138,0,21,135,0,20,135, >+ 0,19,135,0,18,135,0,140,0,5, >+ 139,0,3,139,0,142,0,28,141,0, >+ 27,141,0,26,141,0 > }; > }; > public final static char scopeRhs[] = ScopeRhs.scopeRhs; >@@ -1428,53 +1533,6 @@ > public final static String name[] = Name.name; > public final String name(int index) { return name[index]; } > >- public final static int >- ERROR_SYMBOL = 99, >- 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 = 214, >- NT_OFFSET = 99, >- LA_STATE_OFFSET = 3369, >- MAX_LA = 2, >- NUM_RULES = 272, >- NUM_NONTERMINALS = 104, >- NUM_SYMBOLS = 203, >- SEGMENT_SIZE = 8192, >- START_STATE = 2905, >- IDENTIFIER_SYMBOL = 2, >- EOFT_SYMBOL = 79, >- EOLT_SYMBOL = 79, >- ACCEPT_ACTION = 3096, >- ERROR_ACTION = 3097; >- >- 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]; > } >@@ -1488,10 +1546,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/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.2 >diff -u -r1.2 OCLKWLexersym.java >--- src/org/eclipse/ocl/parser/OCLKWLexersym.java 13 Jan 2009 20:31:30 -0000 1.2 >+++ src/org/eclipse/ocl/parser/OCLKWLexersym.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, 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 >@@ -10,22 +10,20 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLKWLexersym.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $ >+* > */ > > package org.eclipse.ocl.parser; > >-/** >- * @noimplement This interface is not intended to be implemented by clients. >- * @noextend This interface is not intended to be extended by clients. >- */ >-@SuppressWarnings("nls") > 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 +49,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 = 18, >- 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 +120,8 @@ > "V", > "EOF", > "DollarSign", >+ "Percent", >+ "_", > "z", > "D", > "E", >@@ -138,5 +138,6 @@ > "Z" > }; > >+ 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.3 >diff -u -r1.3 OCLLexerprs.java >--- src/org/eclipse/ocl/parser/OCLLexerprs.java 12 Feb 2009 00:04:09 -0000 1.3 >+++ src/org/eclipse/ocl/parser/OCLLexerprs.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >@@ -10,19 +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 - LPG v2.0.17 adoption >+* > * </copyright> > * >-* $Id: OCLLexerprs.java,v 1.3 2009/02/12 00:04:09 cdamus Exp $ >+* $Id$ > */ > > package org.eclipse.ocl.parser; > >-/** >- * @noextend This class is not intended to be subclassed by clients. >- */ >-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, >@@ -479,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/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.5 >diff -u -r1.5 OCLParsersym.java >--- src/org/eclipse/ocl/parser/OCLParsersym.java 13 Jan 2009 19:44:29 -0000 1.5 >+++ src/org/eclipse/ocl/parser/OCLParsersym.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,8 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+* 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 >@@ -13,25 +14,17 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818 > * Zeligsoft - Bug 243976 >+* Borland - Bug 242880 >+* Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLParsersym.java,v 1.5 2009/01/13 19:44:29 cdamus Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser; > >-/** >- * @noimplement This interface is not intended to be implemented by clients. >- * @noextend This interface is not intended to be extended by clients. >- */ >-@SuppressWarnings("nls") > public interface OCLParsersym { >- /** >- * Token kind codes. >- * >- * @noreference These constants are not intended to be referenced by clients. >- */ > public final static int > TK_NUMERIC_OPERATION = 60, > TK_STRING_LITERAL = 61, >@@ -133,7 +126,7 @@ > TK_INTEGER_RANGE_START = 82, > TK_ERROR_TOKEN = 99; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "LPAREN", > "IDENTIFIER", >@@ -236,5 +229,6 @@ > "ERROR_TOKEN" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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.2 >diff -u -r1.2 OCLLexersym.java >--- src/org/eclipse/ocl/parser/OCLLexersym.java 13 Jan 2009 20:31:30 -0000 1.2 >+++ src/org/eclipse/ocl/parser/OCLLexersym.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >@@ -10,19 +10,17 @@ > * 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 - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLLexersym.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $ >+* $Id$ > */ > > package org.eclipse.ocl.parser; > >-/** >- * @noimplement This interface is not intended to be implemented by clients. >- * @noextend This interface is not intended to be extended by clients. >- */ >-@SuppressWarnings("nls") > public interface OCLLexersym { > public final static int > Char_CtlCharNotWS = 103, >@@ -129,7 +127,7 @@ > Char_Equal = 15, > Char_EOF = 99; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "0", > "1", >@@ -236,5 +234,6 @@ > "CtlCharNotWS" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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.3 >diff -u -r1.3 OCLLexer.java >--- src/org/eclipse/ocl/parser/OCLLexer.java 13 Jan 2009 19:44:29 -0000 1.3 >+++ src/org/eclipse/ocl/parser/OCLLexer.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >@@ -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 >-* >+* - Bug 259818 >+* Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption >+* > * </copyright> > * >-* $Id: OCLLexer.java,v 1.3 2009/01/13 19:44:29 cdamus Exp $ >+* $Id$ > */ > > 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(), >@@ -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; > } > >@@ -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/lpg/AbstractLexer.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/lpg/AbstractLexer.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractLexer.java >--- src/org/eclipse/ocl/lpg/AbstractLexer.java 4 Oct 2008 00:54:10 -0000 1.2 >+++ src/org/eclipse/ocl/lpg/AbstractLexer.java 14 Aug 2009 17:43:01 -0000 >@@ -23,9 +23,9 @@ > import java.io.IOException; > import java.io.Reader; > >-import lpg.lpgjavaruntime.LpgLexStream; >-import lpg.lpgjavaruntime.Monitor; >-import lpg.lpgjavaruntime.RuleAction; >+import lpg.runtime.LpgLexStream; >+import lpg.runtime.Monitor; >+import lpg.runtime.RuleAction; > > > /** >@@ -120,19 +120,30 @@ > > public abstract void lexToTokens(Monitor monitor, AbstractParser parser); > >+ >+ /*@Override public void reportError(int leftToken, int rightToken) { >+ BasicEnvironment environment = getEnvironment(); >+ if (environment != null) >+ environment.lexerError(computeErrorCode(leftToken, rightToken), leftToken, rightToken); >+ else >+ super.reportError(leftToken, rightToken); >+ }*/ >+ >+ @Override > /** > * Errors generated within the lexer are redirected to the error handler if there is one. > * > * Note that other variants of reportError either feed this one, are fed from a default implementation > * of this one or originate in the parser, where a ParserErrorHandler can intercept them. > */ >- @Override public void reportError(int leftToken, int rightToken) { >+ public void reportError(int errorCode, int leftToken, int errorToken, >+ int rightToken, String[] errorInfo) { > BasicEnvironment environment = getEnvironment(); > if (environment != null) >- environment.lexerError(computeErrorCode(leftToken, rightToken), leftToken, rightToken); >- else >- super.reportError(leftToken, rightToken); >+ environment.lexerError(errorCode, errorToken, rightToken); >+ super.reportError(errorCode, leftToken, errorToken, rightToken, errorInfo); > } >+ > > /** > * Define the input text as a given array of characters. >@@ -141,7 +152,7 @@ > public void initialize(char[] inputChars) { > setInputChars(inputChars); > setStreamLength(inputChars.length); >- computeLineOffsets(); >+ computeLineOffsets(); > } > > /** >Index: src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java,v >retrieving revision 1.7 >diff -u -r1.7 AbstractBasicEnvironment.java >--- src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java 5 Mar 2009 14:30:51 -0000 1.7 >+++ src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java 14 Aug 2009 17:43:01 -0000 >@@ -25,8 +25,8 @@ > import java.util.List; > import java.util.Map; > >-import lpg.lpgjavaruntime.IToken; >-import lpg.lpgjavaruntime.ParseErrorCodes; >+import lpg.runtime.IToken; >+import lpg.runtime.ParseErrorCodes; > > import org.eclipse.ocl.cst.CSTNode; > import org.eclipse.ocl.internal.OCLDebugOptions; >Index: src/org/eclipse/ocl/lpg/AbstractParser.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/lpg/AbstractParser.java,v >retrieving revision 1.4 >diff -u -r1.4 AbstractParser.java >--- src/org/eclipse/ocl/lpg/AbstractParser.java 13 Jan 2009 19:44:29 -0000 1.4 >+++ src/org/eclipse/ocl/lpg/AbstractParser.java 14 Aug 2009 17:43:01 -0000 >@@ -21,13 +21,13 @@ > > import java.util.ArrayList; > >-import lpg.lpgjavaruntime.ErrorToken; >-import lpg.lpgjavaruntime.IToken; >-import lpg.lpgjavaruntime.LexStream; >-import lpg.lpgjavaruntime.Monitor; >-import lpg.lpgjavaruntime.ParseErrorCodes; >-import lpg.lpgjavaruntime.PrsStream; >-import lpg.lpgjavaruntime.Token; >+import lpg.runtime.ErrorToken; >+import lpg.runtime.IToken; >+import lpg.runtime.LexStream; >+import lpg.runtime.Monitor; >+import lpg.runtime.ParseErrorCodes; >+import lpg.runtime.PrsStream; >+import lpg.runtime.Token; > > import org.eclipse.ocl.cst.CSTNode; > import org.eclipse.ocl.internal.l10n.OCLMessages; >@@ -141,7 +141,7 @@ > } > > public AbstractLexer getLexer() { >- return (AbstractLexer) super.getLexStream(); >+ return (AbstractLexer) super.getILexStream(); > } > > /** >@@ -193,7 +193,7 @@ > > @Override > public String toString() { >- if (getPrsStream() == null) { >+ if (getIPrsStream() == null) { > return "<toString>"; //$NON-NLS-1$ > } > int startOffset = getStartOffset(); >@@ -202,10 +202,10 @@ > length = -length - 1; > startOffset = getEndOffset(); > } >- if ((startOffset + length) > getPrsStream().getInputChars().length) { >+ if ((startOffset + length) > getIPrsStream().getInputChars().length) { > return String.valueOf(IToken.EOF); > } >- return new String(getPrsStream().getInputChars(), startOffset, >+ return new String(getIPrsStream().getInputChars(), startOffset, > length); > } > >@@ -223,7 +223,7 @@ > public abstract CSTNode parseTokensToCST(Monitor monitor, > int error_repair_count); > >- @Override >+ /*@Override > public void reportError(int errorCode, String locationInfo, int leftToken, > int rightToken, String tokenText) { > BasicEnvironment environment = getEnvironment(); >@@ -237,6 +237,22 @@ > environment > .parserError(errorCode, leftToken, rightToken, tokenText); > } >+ }*/ >+ >+ @Override >+ public void reportError(int errorCode, int leftToken, int errorToken, >+ int rightToken, String[] errorInfo) { >+ BasicEnvironment environment = getEnvironment(); >+ if (environment == null) { >+ super.reportError(errorCode, leftToken, errorToken, rightToken, errorInfo); >+ } else { >+ if (errorCode == DELETION_CODE || errorCode == MISPLACED_CODE) { >+ >+ } >+ environment >+ .parserError(errorCode, leftToken, rightToken, ""); >+ } >+ > } > > /** >@@ -253,18 +269,18 @@ > int firsttok = super.getFirstRealToken(error_token); > int lasttok = super.getLastRealToken(error_token); > if (firsttok > lasttok) { >- String location = super.getFileName() + ':' >+ /*String location = super.getFileName() + ':' > + super.getEndLine(lasttok) + ':' + super.getEndColumn(lasttok) >- + ": "; //$NON-NLS-1$ >- reportError(ParseErrorCodes.INSERTION_CODE, location, lasttok, >+ + ": "; //$NON-NLS-1$*/ >+ reportError(ParseErrorCodes.INSERTION_CODE, lasttok, > lasttok, msg); > } else { >- String location = super.getFileName() + ':' >+ /*String location = super.getFileName() + ':' > + super.getLine(error_token) + ':' > + super.getColumn(error_token) + ':' > + super.getEndLine(error_token) + ':' >- + super.getEndColumn(error_token) + ": "; //$NON-NLS-1$ >- reportError(ParseErrorCodes.SUBSTITUTION_CODE, location, firsttok, >+ + super.getEndColumn(error_token) + ": "; //$NON-NLS-1$*/ >+ reportError(ParseErrorCodes.SUBSTITUTION_CODE, firsttok, > lasttok, msg); > } > } >Index: src/org/eclipse/ocl/lpg/AbstractProblemHandler.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/lpg/AbstractProblemHandler.java,v >retrieving revision 1.1 >diff -u -r1.1 AbstractProblemHandler.java >--- src/org/eclipse/ocl/lpg/AbstractProblemHandler.java 11 Oct 2007 23:04:53 -0000 1.1 >+++ src/org/eclipse/ocl/lpg/AbstractProblemHandler.java 14 Aug 2009 17:43:01 -0000 >@@ -17,7 +17,7 @@ > */ > package org.eclipse.ocl.lpg; > >-import lpg.lpgjavaruntime.ParseErrorCodes; >+import lpg.runtime.ParseErrorCodes; > > import org.eclipse.emf.common.util.Monitor; > import org.eclipse.ocl.internal.l10n.OCLMessages; >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.1 >diff -u -r1.1 OCLBacktrackingLexer.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >@@ -10,27 +10,24 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >-* - Bug 259818 >+* - Bug 259818 >+* Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingLexer.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* $Id$ > */ > > 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; > import org.eclipse.ocl.lpg.BasicEnvironment; > import org.eclipse.ocl.util.OCLUtil; > >-/** >- * The backtracking variant of the OCL lexer. >- * >- * @since 1.3 >- */ > @SuppressWarnings("nls") > public class OCLBacktrackingLexer extends AbstractLexer implements OCLBacktrackingParsersym, OCLBacktrackingLexersym, RuleAction > { >@@ -57,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) { >@@ -86,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()); > } >@@ -97,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 >@@ -113,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(), >@@ -322,7 +319,7 @@ > // Rule 2: Token ::= EscapedSQ > // > case 2: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -330,7 +327,7 @@ > // Rule 3: Token ::= SingleQuote SLNotSQ SingleQuote > // > case 3: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -338,7 +335,7 @@ > // Rule 4: Token ::= Acute SLNotSQOpt Acute > // > case 4: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -346,7 +343,7 @@ > // Rule 5: Token ::= BackQuote SLNotSQOpt Acute > // > case 5: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -354,7 +351,7 @@ > // Rule 6: Token ::= IntegerLiteral > // > case 6: { >- makeToken(TK_INTEGER_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_INTEGER_LITERAL); > break; > } > >@@ -362,7 +359,7 @@ > // Rule 7: Token ::= RealLiteral > // > case 7: { >- makeToken(TK_REAL_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_REAL_LITERAL); > break; > } > >@@ -370,7 +367,7 @@ > // Rule 8: Token ::= NumericOperation > // > case 8: { >- makeToken(TK_NUMERIC_OPERATION); >+ makeToken(OCLBacktrackingParsersym.TK_NUMERIC_OPERATION); > break; > } > >@@ -378,7 +375,7 @@ > // Rule 9: Token ::= IntegerRangeStart > // > case 9: { >- makeToken(TK_INTEGER_RANGE_START); >+ makeToken(OCLBacktrackingParsersym.TK_INTEGER_RANGE_START); > break; > } > >@@ -410,7 +407,7 @@ > // Rule 13: Token ::= + > // > case 13: { >- makeToken(TK_PLUS); >+ makeToken(OCLBacktrackingParsersym.TK_PLUS); > break; > } > >@@ -418,7 +415,7 @@ > // Rule 14: Token ::= - > // > case 14: { >- makeToken(TK_MINUS); >+ makeToken(OCLBacktrackingParsersym.TK_MINUS); > break; > } > >@@ -426,7 +423,7 @@ > // Rule 15: Token ::= * > // > case 15: { >- makeToken(TK_MULTIPLY); >+ makeToken(OCLBacktrackingParsersym.TK_MULTIPLY); > break; > } > >@@ -434,7 +431,7 @@ > // Rule 16: Token ::= / > // > case 16: { >- makeToken(TK_DIVIDE); >+ makeToken(OCLBacktrackingParsersym.TK_DIVIDE); > break; > } > >@@ -442,7 +439,7 @@ > // Rule 17: Token ::= ( > // > case 17: { >- makeToken(TK_LPAREN); >+ makeToken(OCLBacktrackingParsersym.TK_LPAREN); > break; > } > >@@ -450,7 +447,7 @@ > // Rule 18: Token ::= ) > // > case 18: { >- makeToken(TK_RPAREN); >+ makeToken(OCLBacktrackingParsersym.TK_RPAREN); > break; > } > >@@ -458,7 +455,7 @@ > // Rule 19: Token ::= > > // > case 19: { >- makeToken(TK_GREATER); >+ makeToken(OCLBacktrackingParsersym.TK_GREATER); > break; > } > >@@ -466,7 +463,7 @@ > // Rule 20: Token ::= < > // > case 20: { >- makeToken(TK_LESS); >+ makeToken(OCLBacktrackingParsersym.TK_LESS); > break; > } > >@@ -474,7 +471,7 @@ > // Rule 21: Token ::= = > // > case 21: { >- makeToken(TK_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_EQUAL); > break; > } > >@@ -482,7 +479,7 @@ > // Rule 22: Token ::= > = > // > case 22: { >- makeToken(TK_GREATER_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_GREATER_EQUAL); > break; > } > >@@ -490,7 +487,7 @@ > // Rule 23: Token ::= < = > // > case 23: { >- makeToken(TK_LESS_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_LESS_EQUAL); > break; > } > >@@ -498,7 +495,7 @@ > // Rule 24: Token ::= < > > // > case 24: { >- makeToken(TK_NOT_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_NOT_EQUAL); > break; > } > >@@ -506,7 +503,7 @@ > // Rule 25: Token ::= [ > // > case 25: { >- makeToken(TK_LBRACKET); >+ makeToken(OCLBacktrackingParsersym.TK_LBRACKET); > break; > } > >@@ -514,7 +511,7 @@ > // Rule 26: Token ::= ] > // > case 26: { >- makeToken(TK_RBRACKET); >+ makeToken(OCLBacktrackingParsersym.TK_RBRACKET); > break; > } > >@@ -522,7 +519,7 @@ > // Rule 27: Token ::= { > // > case 27: { >- makeToken(TK_LBRACE); >+ makeToken(OCLBacktrackingParsersym.TK_LBRACE); > break; > } > >@@ -530,7 +527,7 @@ > // Rule 28: Token ::= } > // > case 28: { >- makeToken(TK_RBRACE); >+ makeToken(OCLBacktrackingParsersym.TK_RBRACE); > break; > } > >@@ -538,7 +535,7 @@ > // Rule 29: Token ::= - > > // > case 29: { >- makeToken(TK_ARROW); >+ makeToken(OCLBacktrackingParsersym.TK_ARROW); > break; > } > >@@ -546,7 +543,7 @@ > // Rule 30: Token ::= | > // > case 30: { >- makeToken(TK_BAR); >+ makeToken(OCLBacktrackingParsersym.TK_BAR); > break; > } > >@@ -554,7 +551,7 @@ > // Rule 31: Token ::= , > // > case 31: { >- makeToken(TK_COMMA); >+ makeToken(OCLBacktrackingParsersym.TK_COMMA); > break; > } > >@@ -562,7 +559,7 @@ > // Rule 32: Token ::= : > // > case 32: { >- makeToken(TK_COLON); >+ makeToken(OCLBacktrackingParsersym.TK_COLON); > break; > } > >@@ -570,7 +567,7 @@ > // Rule 33: Token ::= : : > // > case 33: { >- makeToken(TK_COLONCOLON); >+ makeToken(OCLBacktrackingParsersym.TK_COLONCOLON); > break; > } > >@@ -578,7 +575,7 @@ > // Rule 34: Token ::= ; > // > case 34: { >- makeToken(TK_SEMICOLON); >+ makeToken(OCLBacktrackingParsersym.TK_SEMICOLON); > break; > } > >@@ -586,7 +583,7 @@ > // Rule 35: Token ::= . > // > case 35: { >- makeToken(TK_DOT); >+ makeToken(OCLBacktrackingParsersym.TK_DOT); > break; > } > >@@ -594,7 +591,7 @@ > // Rule 36: Token ::= . . > // > case 36: { >- makeToken(TK_DOTDOT); >+ makeToken(OCLBacktrackingParsersym.TK_DOTDOT); > break; > } > >@@ -602,7 +599,7 @@ > // Rule 37: Token ::= @ p r e > // > case 37: { >- makeToken(TK_ATPRE); >+ makeToken(OCLBacktrackingParsersym.TK_ATPRE); > break; > } > >@@ -610,7 +607,7 @@ > // Rule 38: Token ::= ^ > // > case 38: { >- makeToken(TK_CARET); >+ makeToken(OCLBacktrackingParsersym.TK_CARET); > break; > } > >@@ -618,7 +615,7 @@ > // Rule 39: Token ::= ^ ^ > // > case 39: { >- makeToken(TK_CARETCARET); >+ makeToken(OCLBacktrackingParsersym.TK_CARETCARET); > break; > } > >@@ -626,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.1 >diff -u -r1.1 OCLBacktrackingKWLexersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, 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 >@@ -10,27 +10,20 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >-* - Bug 259818 >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingKWLexersym.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* > */ > > package org.eclipse.ocl.parser.backtracking; > >-/** >- * The backtracking variant of the OCL keyword lexer symbol table. >- * >- * @noimplement This interface is not intended to be implemented by clients. >- * @noextend This interface is not intended to be extended by clients. >- * >- * @since 1.3 >- */ >-@SuppressWarnings("nls") > public interface OCLBacktrackingKWLexersym { > public final static int > Char_DollarSign = 40, >+ Char_Percent = 41, >+ Char__ = 42, > Char_a = 5, > Char_b = 30, > Char_c = 11, >@@ -56,36 +49,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 = 18, >- 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", >@@ -127,6 +120,8 @@ > "V", > "EOF", > "DollarSign", >+ "Percent", >+ "_", > "z", > "D", > "E", >@@ -143,5 +138,6 @@ > "Z" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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.2 >diff -u -r1.2 OCLBacktrackingParser.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java 5 Mar 2009 14:12:14 -0000 1.2 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java 14 Aug 2009 17:43:03 -0000 >@@ -1,7 +1,8 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+* 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 >@@ -14,10 +15,11 @@ > * E.D.Willink - Bugs 225493, 243976, 259818 > * Zeligsoft - Bug 243976 > * Borland - Bug 242880 >+* Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingParser.java,v 1.2 2009/03/05 14:12:14 cdamus Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; >@@ -44,15 +46,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.DefExpressionCS; >@@ -64,11 +66,6 @@ > > import org.eclipse.ocl.parser.AbstractOCLParser; > >-/** >- * The backtracking variant of the OCL parser. >- * >- * @since 1.3 >- */ > public class OCLBacktrackingParser extends AbstractOCLParser implements RuleAction > { > protected static ParseTable prs = new OCLBacktrackingParserprs(); >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 14 Aug 2009 17:43:03 -0000 >@@ -1,7 +1,7 @@ > --/** > -- * <copyright> > -- * >--- * Copyright (c) 2008, 2009 Eclipse.org and others. >+-- * 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 >@@ -9,6 +9,7 @@ > -- * > -- * Contributors: > -- * E.D. Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > -- * > -- * </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.1 >diff -u -r1.1 OCLBacktrackingLexersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java 14 Aug 2009 17:43:03 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >@@ -10,24 +10,17 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >-* - Bug 259818 >+* - Bug 259818 >+* Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingLexersym.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* $Id$ > */ > > package org.eclipse.ocl.parser.backtracking; > >-/** >- * The backtracking variant of the OCL lexer symbol table. >- * >- * @noimplement This interface is not intended to be implemented by clients. >- * @noextend This interface is not intended to be extended by clients. >- * >- * @since 1.3 >- */ >-@SuppressWarnings("nls") > public interface OCLBacktrackingLexersym { > public final static int > Char_CtlCharNotWS = 103, >@@ -134,7 +127,7 @@ > Char_Equal = 15, > Char_EOF = 99; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "0", > "1", >@@ -241,5 +234,6 @@ > "CtlCharNotWS" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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.1 >diff -u -r1.1 OCLBacktrackingKWLexer.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, 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 >@@ -10,24 +10,17 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >-* - Bug 259818 >-* >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption >+* > * </copyright> > * >-* $Id: OCLBacktrackingKWLexer.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* > */ > > package org.eclipse.ocl.parser.backtracking; > > > >-/** >- * The backtracking variant of the OCL keyword lexer. >- * >- * @noextend This class is not intended to be subclassed by clients. >- * >- * @since 1.3 >- */ > public class OCLBacktrackingKWLexer extends OCLBacktrackingKWLexerprs implements OCLBacktrackingParsersym > { > private char[] inputChars; >@@ -65,66 +58,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); > } > > >@@ -136,382 +131,444 @@ > // > // 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 ::= I n v a l i d > // >- keywordKind[58] = (TK_Invalid); >+ >+ keywordKind[58] = (OCLBacktrackingParsersym.TK_Invalid); > > > // > // 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 ::= O c l I n v a l i d > // >- keywordKind[61] = (TK_OclInvalid); >+ >+ keywordKind[61] = (OCLBacktrackingParsersym.TK_OclInvalid); > > > // > // 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); > > >- > for (int i = 0; i < keywordKind.length; i++) > { > if (keywordKind[i] == 0) >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.1 >diff -u -r1.1 OCLBacktrackingKWLexerprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java 14 Aug 2009 17:43:02 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, 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 >@@ -10,23 +10,97 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >-* - Bug 259818 >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingKWLexerprs.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* > */ > > package org.eclipse.ocl.parser.backtracking; > >-/** >- * The backtracking variant of the OCL keyword lexer parse table. >- * >- * @noextend This class is not intended to be subclassed by clients. >- * >- * @since 1.3 >- */ >-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 = 256; >+ 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 = 386; >+ 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 = 63; >+ 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 = 64; >+ 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 = 322; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 323; >+ 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, >@@ -35,7 +109,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; >@@ -164,7 +238,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,0,0 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -250,56 +324,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 = 256, >- NT_OFFSET = 54, >- LA_STATE_OFFSET = 386, >- MAX_LA = 1, >- NUM_RULES = 63, >- NUM_NONTERMINALS = 2, >- NUM_SYMBOLS = 56, >- SEGMENT_SIZE = 8192, >- START_STATE = 64, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 39, >- EOLT_SYMBOL = 55, >- ACCEPT_ACTION = 322, >- ERROR_ACTION = 323; >- >- 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/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.1 >diff -u -r1.1 OCLBacktrackingParserprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java 14 Aug 2009 17:43:03 -0000 >@@ -1,7 +1,8 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+* 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 >@@ -13,23 +14,123 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818 > * Zeligsoft - Bug 243976 >+* Borland - Bug 242880 >+* Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingParserprs.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; > >-/** >- * The backtracking variant of the OCL parser parse table. >- * >- * @noextend This class is not intended to be subclassed by clients. >- * >- * @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 = 99; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 3795; >+ 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 = 328; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 109; >+ 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 = 3223; >+ 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 = 73; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 73; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 3466; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 3467; >+ 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,1, >+ 0,0,1,0,0,0,0,1,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,0,1,1,0,0,0,0, >+ 0,0,1,0,0,0,0,0,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, >+ 54,9,21,108,62,5,6,7,10,3, >+ 8,15,50,51,11,40,42,44,48,49, >+ 56,57,58,59,60,61,67,68,69,70, >+ 71,41,43,38,39,34,35,36,37,32, >+ 33,30,31,28,29,25,26,27,77,23, >+ 52,53,105,47,109,78,80,81,24,107, >+ 97,98,99,100,88,91,92,4,12,19, >+ 20,22,55,65,66,73,79,83,84,85, >+ 86,87,93,94,96,101,2,13,14,17, >+ 18,45,46,63,64,72,74,75,76,82, >+ 89,90,95,102,103,104,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, >@@ -1541,33 +1642,33 @@ > > public interface ScopeRhs { > public final static char scopeRhs[] = {0, >- 151,94,114,0,100,0,151,94,101,0, >+ 151,94,114,0,1,0,151,94,101,0, > 145,2,0,145,69,0,145,90,145,69, >- 0,43,116,100,0,145,91,145,90,145, >- 69,0,44,116,100,0,43,116,44,116, >- 100,0,153,2,159,110,0,12,0,153, >+ 0,90,145,1,0,145,91,145,90,145, >+ 69,0,91,145,1,0,90,145,91,145, >+ 1,0,153,2,159,110,0,3,0,153, > 2,159,108,0,153,2,159,168,0,153, > 2,154,80,102,0,155,2,104,0,180, >- 2,101,89,0,180,2,101,88,0,45, >- 0,44,116,45,0,43,116,44,116,45, >- 0,177,68,0,52,116,0,16,0,0, >+ 2,101,89,0,180,2,101,88,0,84, >+ 0,91,145,84,0,90,145,91,145,84, >+ 0,177,68,0,83,145,0,79,150,0, > 153,2,150,108,0,153,2,150,110,0, > 153,2,150,168,0,199,2,52,0,155, >- 37,4,0,7,116,0,145,70,149,81, >+ 37,4,0,5,145,0,145,70,149,81, > 149,2,187,0,149,81,149,2,187,0, >- 18,116,12,0,149,2,187,0,22,115, >- 18,116,12,0,145,70,149,2,187,0, >+ 70,145,3,0,149,2,187,0,81,149, >+ 70,145,3,0,145,70,149,2,187,0, > 145,70,149,31,149,2,188,0,149,31, >- 149,2,188,0,149,2,188,0,19,115, >- 18,116,12,0,145,70,149,2,188,0, >- 145,2,188,0,195,93,52,0,14,0, >+ 149,2,188,0,149,2,188,0,31,149, >+ 70,145,3,0,145,70,149,2,188,0, >+ 145,2,188,0,195,93,52,0,74,0, > 193,93,104,0,153,2,101,80,102,0, >- 153,2,61,0,133,0,4,130,0,3, >- 130,0,137,0,2,128,0,1,128,0, >- 139,0,9,125,0,8,125,0,6,125, >- 0,5,125,0,141,0,10,123,0,7, >- 123,0,143,0,48,121,0,47,121,0, >- 46,121,0 >+ 153,2,61,0,133,0,9,131,0,8, >+ 131,0,137,0,29,134,0,28,134,0, >+ 139,0,13,136,0,12,136,0,11,136, >+ 0,10,136,0,141,0,7,140,0,5, >+ 140,0,143,0,27,142,0,26,142,0, >+ 25,142,0 > }; > }; > public final static char scopeRhs[] = ScopeRhs.scopeRhs; >@@ -1791,53 +1892,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 = 99, >- LA_STATE_OFFSET = 3795, >- MAX_LA = 2, >- NUM_RULES = 328, >- NUM_NONTERMINALS = 109, >- NUM_SYMBOLS = 208, >- SEGMENT_SIZE = 8192, >- START_STATE = 3223, >- IDENTIFIER_SYMBOL = 4, >- EOFT_SYMBOL = 73, >- EOLT_SYMBOL = 73, >- ACCEPT_ACTION = 3466, >- ERROR_ACTION = 3467; >- >- 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]; > } >@@ -1851,10 +1905,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/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.1 >diff -u -r1.1 OCLBacktrackingParsersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java 14 Aug 2009 17:43:03 -0000 >@@ -1,7 +1,8 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+* 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 >@@ -13,23 +14,16 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 225493, 243976, 259818 > * Zeligsoft - Bug 243976 >+* Borland - Bug 242880 >+* Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingParsersym.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $ > */ > > package org.eclipse.ocl.parser.backtracking; > >-/** >- * The backtracking variant of the OCL parser symbol table. >- * >- * @noimplement This interface is not intended to be implemented by clients. >- * @noextend This interface is not intended to be extended by clients. >- * >- * @since 1.3 >- */ >-@SuppressWarnings("nls") > public interface OCLBacktrackingParsersym { > public final static int > TK_NUMERIC_OPERATION = 61, >@@ -132,7 +126,7 @@ > TK_INTEGER_RANGE_START = 97, > TK_ERROR_TOKEN = 1; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "ERROR_TOKEN", > "LPAREN", >@@ -235,5 +229,6 @@ > "oper" > }; > >+ 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.1 >diff -u -r1.1 OCLBacktrackingLexerprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java 13 Jan 2009 20:31:30 -0000 1.1 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java 14 Aug 2009 17:43:03 -0000 >@@ -1,7 +1,7 @@ > /** > * <copyright> > * >-* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others. >+* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >@@ -10,23 +10,112 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >-* - Bug 259818 >+* - Bug 259818 >+* Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption > * > * </copyright> > * >-* $Id: OCLBacktrackingLexerprs.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+* $Id$ > */ > > package org.eclipse.ocl.parser.backtracking; > >-/** >- * The backtracking variant of the OCL lexer parse table. >- * >- * @noextend This class is not intended to be subclassed by clients. >- * >- * @since 1.3 >- */ >-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, >@@ -74,13 +163,11 @@ > 1,1,1,1,1,1,1,1,1,1, > 1,1,1,1,1,1,1,1,1,1, > 1,1,1,1,1,1,1,1,1,1, >+ 1,1,2,1,1,1,1,1,1,1, > 1,1,1,1,1,1,1,1,1,1, > 1,1,1,1,1,1,1,1,1,1, >- 1,1,1,1,1,1,1,1,1,1, >- 1,1,1,1,1,1,1,1,1,1, >- 1,1,1,1,1,1,1,2,2,1, >- 2,1,2,0,1,3,3,3,3,3, >- 3,3,4,4,3,3 >+ 2,2,1,2,1,2,0,1,3,3, >+ 3,3,3,3,3,4,4,3,3 > }; > }; > public final static byte baseCheck[] = BaseCheck.baseCheck; >@@ -90,57 +177,58 @@ > > public interface BaseAction { > public final static char baseAction[] = { >- 21,21,21,21,21,21,21,21,21,21, >- 21,21,21,21,21,21,21,21,21,21, >- 21,21,21,21,21,21,21,21,21,21, >- 21,21,21,21,21,21,21,21,21,21, >- 21,22,23,23,23,27,27,27,27,28, >- 28,26,26,6,6,35,35,30,13,13, >- 13,9,9,9,9,9,2,2,2,2, >+ 23,23,23,23,23,23,23,23,23,23, >+ 23,23,23,23,23,23,23,23,23,23, >+ 23,23,23,23,23,23,23,23,23,23, >+ 23,23,23,23,23,23,23,23,23,23, >+ 23,24,25,25,25,29,29,29,29,30, >+ 30,28,28,7,7,39,39,32,15,15, >+ 15,11,11,11,11,11,2,2,2,2, > 3,3,3,3,3,3,3,3,3,3, > 3,3,3,3,3,3,3,3,3,3, > 3,3,3,3,3,3,4,4,4,4, > 4,4,4,4,4,4,4,4,4,4, > 4,4,4,4,4,4,4,4,4,4, > 4,4,1,1,1,1,1,1,1,1, >- 1,1,37,37,37,37,37,37,37,37, >- 38,38,38,38,38,38,38,38,38,38, >- 38,38,36,36,39,39,39,15,15,40, >- 40,29,29,11,11,11,11,11,32,32, >- 32,32,32,32,32,32,32,32,32,32, >- 32,32,32,32,32,32,32,32,32,32, >- 32,32,32,32,32,32,32,32,17,17, >- 17,17,17,17,17,17,17,17,17,17, >- 17,17,17,17,17,17,17,17,17,17, >- 17,17,17,17,17,17,17,18,18,18, >- 18,18,18,18,18,18,18,18,18,18, >- 18,18,18,18,18,18,18,18,18,18, >- 18,18,18,18,18,18,7,7,7,7, >- 7,7,7,7,7,7,7,7,7,7, >- 7,7,7,7,7,7,7,7,7,7, >- 7,7,7,7,7,7,14,14,14,14, >- 31,31,31,31,31,31,31,31,19,19, >- 19,19,19,8,8,8,8,8,5,20, >- 33,33,10,10,12,12,16,24,24,24, >- 24,24,24,24,24,24,25,891,478,472, >- 472,472,2,354,1236,344,479,1280,491,1283, >- 344,1247,408,480,1269,54,162,408,339,6, >- 7,8,9,421,1223,54,337,488,309,481, >- 481,481,481,481,985,481,481,44,431,334, >- 427,309,481,481,481,481,481,1330,481,481, >- 304,431,1217,437,406,457,457,457,457,457, >- 990,457,457,1287,457,794,466,466,466,466, >- 1291,54,1,47,47,47,47,402,1307,54, >- 1288,47,1068,466,466,466,47,1318,54,47, >- 1146,205,52,52,52,52,1331,100,466,1216, >- 473,503,313,313,313,313,313,986,313,313, >- 994,400,496,496,496,1219,400,1069,1258,417, >- 1333,496,52,52,417,1289,496,600,313,313, >- 313,313,313,1332,313,313,697,311,311,311, >- 311,1220,1334,103,45,45,45,45,1335,1336, >- 1337,1281,45,506,311,311,311,45,1329,506, >- 45,1073,165,164,164,164,1148,165,164,164, >- 164,43,506,334,506,506 >+ 1,1,41,41,41,41,41,41,41,41, >+ 42,42,42,42,42,42,42,42,42,42, >+ 42,42,40,40,43,43,43,17,17,44, >+ 44,31,31,13,13,13,13,13,34,34, >+ 34,34,34,34,34,34,34,34,34,34, >+ 34,34,34,34,34,34,34,34,34,34, >+ 34,34,34,34,34,34,34,34,19,19, >+ 19,19,19,19,19,19,19,19,19,19, >+ 19,19,19,19,19,19,19,19,19,19, >+ 19,19,19,19,19,19,19,5,5,5, >+ 5,5,5,5,5,5,5,5,5,5, >+ 5,5,5,5,5,5,5,5,5,5, >+ 5,5,5,5,5,20,20,8,8,35, >+ 35,35,35,9,16,16,16,16,33,33, >+ 33,33,33,33,33,33,36,36,36,36, >+ 21,21,21,21,21,10,10,10,10,10, >+ 10,6,22,37,37,12,12,14,14,18, >+ 26,26,26,26,26,26,26,26,26,27, >+ 988,486,485,485,485,1426,2,339,1333,326, >+ 1377,487,1380,493,1082,326,1366,54,488,1427, >+ 43,162,318,322,6,7,8,9,478,1320, >+ 54,320,315,309,490,490,490,490,490,490, >+ 1314,490,490,490,44,392,318,405,309,490, >+ 490,490,490,490,490,1087,490,490,490,1384, >+ 392,1385,430,406,409,409,409,409,409,409, >+ 1165,409,409,409,1243,409,891,424,424,424, >+ 424,424,600,296,296,296,296,296,296,1428, >+ 296,296,296,1388,54,100,424,424,424,697, >+ 296,296,296,296,296,296,1313,296,296,296, >+ 304,1404,54,424,794,294,294,294,294,294, >+ 1083,1,47,47,47,47,503,263,263,263, >+ 263,263,47,1316,294,294,294,47,1166,431, >+ 47,1091,403,498,498,498,1344,421,403,1355, >+ 467,473,1430,421,498,1386,467,1415,54,498, >+ 1429,263,263,103,45,45,45,45,205,52, >+ 52,52,52,1317,45,1431,1432,1433,1434,45, >+ 1378,515,45,1170,165,164,164,164,1245,165, >+ 164,164,164,515,515,515,515,515,515,515, >+ 515,52,52,515,515 > }; > }; > public final static char baseAction[] = BaseAction.baseAction; >@@ -236,7 +324,7 @@ > 37,38,39,40,41,42,43,44,45,46, > 47,48,49,50,51,52,53,54,55,56, > 57,58,59,60,61,62,63,64,65,66, >- 67,68,69,70,71,72,0,74,75,76, >+ 67,68,69,70,71,72,73,74,75,76, > 77,78,79,80,81,82,83,84,85,86, > 87,88,89,90,91,92,93,94,95,96, > 0,1,2,3,4,5,6,7,8,9, >@@ -246,54 +334,64 @@ > 40,41,42,43,44,45,46,47,48,49, > 50,51,52,53,54,55,56,57,58,59, > 60,61,62,63,64,65,66,67,68,69, >- 70,71,72,73,0,75,76,77,78,79, >+ 70,71,72,0,74,75,76,77,78,79, > 80,81,82,83,84,85,86,87,88,89, >- 90,0,0,0,0,0,0,97,98,0, >- 100,101,102,0,1,2,3,4,5,6, >- 7,8,9,10,11,12,13,14,0,16, >- 17,18,19,20,21,22,23,24,25,26, >- 27,28,29,30,31,32,33,34,35,36, >- 37,38,39,40,41,42,43,44,45,46, >- 47,48,49,50,51,52,53,54,55,56, >- 57,58,59,60,61,62,63,64,65,75, >- 67,68,69,70,71,76,73,0,0,0, >- 77,78,0,1,2,3,4,5,6,7, >- 8,9,10,11,12,13,14,102,16,17, >- 18,19,20,21,22,23,24,25,26,27, >- 28,29,30,31,32,33,34,35,36,37, >- 38,39,40,41,42,43,44,45,46,47, >- 48,49,50,51,52,53,54,55,56,57, >- 58,59,60,61,62,63,64,65,71,0, >- 0,73,0,0,0,0,74,0,1,2, >+ 90,91,92,93,94,95,96,0,1,2, > 3,4,5,6,7,8,9,10,11,12, >- 13,14,0,16,17,18,19,20,21,22, >+ 13,14,15,16,17,18,19,20,21,22, > 23,24,25,26,27,28,29,30,31,32, > 33,34,35,36,37,38,39,40,41,42, > 43,44,45,46,47,48,49,50,51,52, > 53,54,55,56,57,58,59,60,61,62, >- 63,64,65,68,69,0,0,0,0,0, >- 0,74,0,1,2,3,4,5,6,7, >- 8,9,10,11,12,0,1,2,3,4, >- 5,6,7,8,9,10,0,1,2,3, >- 4,5,6,7,8,9,10,0,1,2, >- 3,4,5,6,7,8,9,10,0,1, >- 2,3,4,5,6,7,8,9,10,0, >- 0,66,0,67,66,66,0,0,0,67, >+ 63,64,65,66,67,68,69,70,71,72, >+ 73,0,75,76,77,78,79,80,81,82, >+ 83,84,85,86,87,88,89,90,0,0, >+ 0,0,0,0,97,98,0,100,101,102, > 0,1,2,3,4,5,6,7,8,9, >- 10,15,15,15,69,70,0,1,2,3, >- 4,5,6,7,8,9,10,0,1,2, >- 3,4,5,6,7,8,9,10,0,0, >- 0,0,0,0,0,0,0,0,0,11, >- 12,0,13,11,14,0,15,0,0,0, >- 0,72,0,0,68,0,0,0,0,0, >+ 10,11,12,13,14,0,16,17,18,19, >+ 20,21,22,23,24,25,26,27,28,29, >+ 30,31,32,33,34,35,36,37,38,39, >+ 40,41,42,43,44,45,46,47,48,49, >+ 50,51,52,53,54,55,56,57,58,59, >+ 60,61,62,63,64,65,75,67,68,69, >+ 70,71,76,73,0,0,0,77,78,0, >+ 1,2,3,4,5,6,7,8,9,10, >+ 11,12,13,14,102,16,17,18,19,20, >+ 21,22,23,24,25,26,27,28,29,30, >+ 31,32,33,34,35,36,37,38,39,40, >+ 41,42,43,44,45,46,47,48,49,50, >+ 51,52,53,54,55,56,57,58,59,60, >+ 61,62,63,64,65,71,0,0,73,0, >+ 0,0,0,74,0,1,2,3,4,5, >+ 6,7,8,9,10,11,12,13,14,0, >+ 16,17,18,19,20,21,22,23,24,25, >+ 26,27,28,29,30,31,32,33,34,35, >+ 36,37,38,39,40,41,42,43,44,45, >+ 46,47,48,49,50,51,52,53,54,55, >+ 56,57,58,59,60,61,62,63,64,65, >+ 68,69,0,0,0,0,0,0,74,0, >+ 1,2,3,4,5,6,7,8,9,10, >+ 11,12,0,1,2,3,4,5,6,7, >+ 8,9,10,0,1,2,3,4,5,6, >+ 7,8,9,10,0,1,2,3,4,5, >+ 6,7,8,9,10,0,1,2,3,4, >+ 5,6,7,8,9,10,0,0,66,0, >+ 67,66,66,0,0,0,67,0,1,2, >+ 3,4,5,6,7,8,9,10,15,15, >+ 15,69,70,0,1,2,3,4,5,6, >+ 7,8,9,10,0,1,2,3,4,5, >+ 6,7,8,9,10,0,0,0,0,0, >+ 0,0,0,0,0,0,11,12,0,13, >+ 11,14,0,15,0,0,0,0,72,0, >+ 0,68,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, >- 0,0,0,0,0,0,97,98,0,100, >- 101,99,102,0,0,0,0,0,0,0, >+ 0,0,0,97,98,0,100,101,99,102, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0, >- 0,0,99,99,99,99,0,0,0,0 >+ 0,0,0,0,0,0,0,0,0,99, >+ 99,99,99,0,0,0,0 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -301,150 +399,160 @@ > > public interface TermAction { > public final static char termAction[] = {0, >- 506,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,473,553,553,553,553,553,553,552,553, >- 553,553,553,553,553,553,553,553,553,553, >- 553,553,553,553,553,553,553,553,553,506, >- 553,553,506,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,551,551,556,551,551,551,551,551,551, >- 517,551,551,551,551,551,551,551,551,551, >- 551,551,551,551,551,551,551,551,551,551, >- 551,511,551,551,10,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,558,558,558,558,558,558,558, >- 558,558,558,48,506,506,506,558,314,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,429,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,481,481,481,481,481, >- 481,481,481,481,481,506,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,445,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,457,457,457,457,457,457,457,457, >- 457,457,315,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,429,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,506, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,471,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,819,819,819,819, >- 819,819,819,819,819,819,506,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,822, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,817,817,817,817,817,817,817,817, >- 817,817,447,506,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,506,466,466,466, >- 466,466,466,466,466,466,466,466,466,466, >- 466,466,466,466,466,466,466,466,466,447, >- 506,478,478,478,478,478,478,478,478,478, >- 478,472,472,472,472,527,472,472,472,472, >- 472,472,472,472,472,472,472,472,472,472, >- 472,472,472,472,472,472,472,472,472,472, >- 472,472,472,472,472,472,472,472,472,472, >- 472,472,472,472,472,472,472,472,472,472, >- 472,472,472,472,472,472,384,382,410,420, >- 519,521,479,395,506,364,390,393,412,536, >- 377,358,540,533,534,531,532,546,537,523, >- 524,506,506,506,38,506,506,479,479,32, >- 479,479,371,506,400,400,400,400,400,400, >- 400,400,400,400,496,496,496,496,506,496, >- 496,496,496,496,496,496,496,496,496,496, >- 496,496,496,496,496,496,496,496,496,496, >- 496,496,496,496,496,496,496,496,496,496, >- 496,496,496,496,496,496,496,496,496,496, >- 496,496,496,496,496,496,496,496,496,545, >- 832,455,825,824,826,539,395,16,506,506, >- 463,827,1,671,671,671,671,671,671,671, >- 671,671,671,670,670,670,670,510,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,380,506, >- 506,815,506,506,506,14,672,317,671,671, >- 671,671,671,671,671,671,671,671,670,670, >- 670,670,506,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,670,670,670,670,670,670,670, >- 670,670,670,535,557,506,35,506,308,3, >- 506,672,6,560,560,560,560,560,560,560, >- 560,560,560,334,334,506,344,344,344,344, >- 344,344,344,344,344,344,506,408,408,408, >- 408,408,408,408,408,408,408,506,417,417, >- 417,417,417,417,417,417,417,417,58,560, >- 560,560,560,560,560,560,560,560,560,12, >- 312,814,506,542,814,814,20,19,325,440, >- 57,560,560,560,560,560,560,560,560,560, >- 560,529,528,830,448,341,60,560,560,560, >- 560,560,560,560,560,560,560,59,560,560, >- 560,560,560,560,560,560,560,560,7,506, >- 506,322,506,163,53,161,167,506,506,334, >- 334,506,426,543,450,506,829,506,506,506, >- 506,668,506,506,530,506,506,506,506,506, >- 506,506,506,506,506,506,506,506,506,506, >- 506,506,506,506,506,506,668,668,506,668, >- 668,505,315,506,506,506,506,506,506,506, >- 506,506,506,506,506,506,506,506,506,506, >- 506,506,506,506,506,506,506,506,506,506, >- 506,506,506,506,506,506,506,506,506,506, >- 506,506,506,506,506,506,506,506,506,506, >- 506,506,1,6,12,1 >+ 515,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,473,562,562,562,562,562,562,561,562, >+ 562,562,562,562,562,562,562,562,562,562, >+ 562,562,562,562,562,562,562,562,562,515, >+ 562,562,515,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,560,560,565,560,560,560,560,560,560, >+ 526,560,560,560,560,560,560,560,560,560, >+ 560,560,560,560,560,560,560,560,560,560, >+ 560,520,560,560,10,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,567,567,567,567,567,567,567, >+ 567,567,567,48,515,515,515,567,297,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,416,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,490,490,490,490,490,490, >+ 490,490,490,490,436,515,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,443,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,409,409,409,409,409,409,409,409,409, >+ 409,436,515,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,778, >+ 778,778,778,778,778,778,778,778,778,298, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,416,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,436,515,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,483,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,811,811,811,811,811,811,811,811, >+ 811,811,436,515,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,814,809,809,809, >+ 809,809,809,809,809,809,809,809,809,809, >+ 809,809,809,809,809,809,809,809,809,448, >+ 515,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,515,424,424,424,424,424,424, >+ 424,424,424,424,424,424,424,424,424,424, >+ 424,424,424,424,424,424,448,515,486,486, >+ 486,486,486,486,486,486,486,486,485,485, >+ 485,485,536,485,485,485,485,485,485,485, >+ 485,485,485,485,485,485,485,485,485,485, >+ 485,485,485,485,485,485,485,485,485,485, >+ 485,485,485,485,485,485,485,485,485,485, >+ 485,485,485,485,485,485,485,485,485,485, >+ 485,485,485,373,350,371,384,528,530,487, >+ 386,515,324,365,369,380,545,329,343,549, >+ 542,543,540,541,555,546,532,533,515,515, >+ 515,38,515,515,487,487,32,487,487,358, >+ 515,403,403,403,403,403,403,403,403,403, >+ 403,498,498,498,498,515,498,498,498,498, >+ 498,498,498,498,498,498,498,498,498,498, >+ 498,498,498,498,498,498,498,498,498,498, >+ 498,498,498,498,498,498,498,498,498,498, >+ 498,498,498,498,498,498,498,498,498,498, >+ 498,498,498,498,498,498,554,824,465,817, >+ 816,818,548,386,16,515,515,470,819,1, >+ 680,680,680,680,680,680,680,680,680,680, >+ 679,679,679,679,519,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,420,515,515,807,515, >+ 515,515,14,681,300,680,680,680,680,680, >+ 680,680,680,680,680,679,679,679,679,515, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 679,679,679,679,679,679,679,679,679,679, >+ 544,566,515,35,515,291,3,515,681,6, >+ 569,569,569,569,569,569,569,569,569,569, >+ 318,318,515,326,326,326,326,326,326,326, >+ 326,326,326,515,421,421,421,421,421,421, >+ 421,421,421,421,515,467,467,467,467,467, >+ 467,467,467,467,467,58,569,569,569,569, >+ 569,569,569,569,569,569,12,295,806,515, >+ 551,806,806,20,19,308,451,57,569,569, >+ 569,569,569,569,569,569,569,569,538,537, >+ 822,459,456,60,569,569,569,569,569,569, >+ 569,569,569,569,59,569,569,569,569,569, >+ 569,569,569,569,569,7,515,515,305,515, >+ 163,53,161,167,515,515,318,318,515,399, >+ 552,462,515,821,515,515,515,515,677,515, >+ 515,539,515,515,515,515,515,515,515,515, >+ 515,515,515,515,515,515,515,515,515,515, >+ 515,515,515,677,677,515,677,677,514,298, >+ 515,515,515,515,515,515,515,515,515,515, >+ 515,515,515,515,515,515,515,515,515,515, >+ 515,515,515,515,515,515,515,515,515,515, >+ 515,515,515,515,515,515,515,515,515,515, >+ 515,515,515,515,515,515,515,515,515,1, >+ 6,12,1 > }; > }; > public final static char termAction[] = TermAction.termAction; >@@ -464,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 = 49, >- NT_OFFSET = 103, >- LA_STATE_OFFSET = 832, >- MAX_LA = 1, >- NUM_RULES = 326, >- NUM_NONTERMINALS = 40, >- NUM_SYMBOLS = 143, >- SEGMENT_SIZE = 8192, >- START_STATE = 327, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 99, >- EOLT_SYMBOL = 104, >- ACCEPT_ACTION = 505, >- ERROR_ACTION = 506; >- >- 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/cst/CSTNode.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/cst/CSTNode.java,v >retrieving revision 1.3 >diff -u -r1.3 CSTNode.java >--- src/org/eclipse/ocl/cst/CSTNode.java 30 Nov 2008 22:11:38 -0000 1.3 >+++ src/org/eclipse/ocl/cst/CSTNode.java 14 Aug 2009 17:42:59 -0000 >@@ -17,7 +17,7 @@ > */ > package org.eclipse.ocl.cst; > >-import lpg.lpgjavaruntime.IToken; >+import lpg.runtime.IToken; > import org.eclipse.emf.ecore.EObject; > > /** >Index: src/org/eclipse/ocl/cst/CSTPackage.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/cst/CSTPackage.java,v >retrieving revision 1.7 >diff -u -r1.7 CSTPackage.java >--- src/org/eclipse/ocl/cst/CSTPackage.java 5 Mar 2009 14:12:13 -0000 1.7 >+++ src/org/eclipse/ocl/cst/CSTPackage.java 14 Aug 2009 17:43:00 -0000 >@@ -4937,7 +4937,7 @@ > * The meta object id for the '<em>IToken</em>' data type. > * <!-- begin-user-doc --> > * <!-- end-user-doc --> >- * @see lpg.lpgjavaruntime.IToken >+ * @see lpg.runtime.IToken > * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken() > * @generated > * @noreference This field is not intended to be referenced by clients. >@@ -6425,13 +6425,13 @@ > EEnum getDotOrArrowEnum(); > > /** >- * Returns the meta object for data type '{@link lpg.lpgjavaruntime.IToken <em>IToken</em>}'. >+ * Returns the meta object for data type '{@link lpg.runtime.IToken <em>IToken</em>}'. > * <!-- begin-user-doc --> > * @since 1.3 > * <!-- end-user-doc --> > * @return the meta object for data type '<em>IToken</em>'. >- * @see lpg.lpgjavaruntime.IToken >- * @model instanceClass="lpg.lpgjavaruntime.IToken" >+ * @see lpg.runtime.IToken >+ * @model instanceClass="lpg.runtime.IToken" > * @generated > */ > EDataType getIToken(); >@@ -7765,7 +7765,7 @@ > * <!-- begin-user-doc --> > * @since 1.3 > * <!-- end-user-doc --> >- * @see lpg.lpgjavaruntime.IToken >+ * @see lpg.runtime.IToken > * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken() > * @generated > */ >Index: src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java,v >retrieving revision 1.7 >diff -u -r1.7 CSTPackageImpl.java >--- src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java 26 May 2009 20:06:32 -0000 1.7 >+++ src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java 14 Aug 2009 17:43:01 -0000 >@@ -18,7 +18,7 @@ > */ > package org.eclipse.ocl.cst.impl; > >-import lpg.lpgjavaruntime.IToken; >+import lpg.runtime.IToken; > import org.eclipse.emf.ecore.EAttribute; > import org.eclipse.emf.ecore.EClass; > import org.eclipse.emf.ecore.EDataType; >Index: src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java,v >retrieving revision 1.5 >diff -u -r1.5 CSTFactoryImpl.java >--- src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java 2 Dec 2008 11:58:50 -0000 1.5 >+++ src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java 14 Aug 2009 17:43:01 -0000 >@@ -17,7 +17,7 @@ > */ > package org.eclipse.ocl.cst.impl; > >-import lpg.lpgjavaruntime.IToken; >+import lpg.runtime.IToken; > import org.eclipse.emf.ecore.EClass; > import org.eclipse.emf.ecore.EDataType; > import org.eclipse.emf.ecore.EObject; >Index: src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java,v >retrieving revision 1.4 >diff -u -r1.4 CSTNodeImpl.java >--- src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java 23 Jan 2009 17:16:04 -0000 1.4 >+++ src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java 14 Aug 2009 17:43:01 -0000 >@@ -17,7 +17,7 @@ > */ > package org.eclipse.ocl.cst.impl; > >-import lpg.lpgjavaruntime.IToken; >+import lpg.runtime.IToken; > import org.eclipse.emf.common.notify.Notification; > import org.eclipse.emf.ecore.EClass; > import org.eclipse.emf.ecore.impl.ENotificationImpl; >Index: model/OCLCST.ecore >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/model/OCLCST.ecore,v >retrieving revision 1.8 >diff -u -r1.8 OCLCST.ecore >--- model/OCLCST.ecore 5 Mar 2009 14:12:13 -0000 1.8 >+++ model/OCLCST.ecore 14 Aug 2009 17:42:59 -0000 >@@ -15,7 +15,7 @@ > eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject" > transient="true"/> > </eClassifiers> >- <eClassifiers xsi:type="ecore:EDataType" name="IToken" instanceClassName="lpg.lpgjavaruntime.IToken"/> >+ <eClassifiers xsi:type="ecore:EDataType" name="IToken" instanceClassName="lpg.runtime.IToken"/> > <eClassifiers xsi:type="ecore:EClass" name="PackageDeclarationCS" eSuperTypes="#//cst/CSTNode"> > <eStructuralFeatures xsi:type="ecore:EReference" name="pathNameCS" eType="#//cst/PathNameCS" > containment="true"/> >Index: model/OCLCST.uml >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/model/OCLCST.uml,v >retrieving revision 1.5 >diff -u -r1.5 OCLCST.uml >--- model/OCLCST.uml 5 Mar 2009 14:12:13 -0000 1.5 >+++ model/OCLCST.uml 14 Aug 2009 17:42:59 -0000 >@@ -874,7 +874,7 @@ > <Ecore:EClass xmi:id="_qf-8J_8fEduhWtVvKtiQ7w" base_Class="_qdx-Vf8fEduhWtVvKtiQ7w"/> > <Ecore:EClass xmi:id="_qf-8KP8fEduhWtVvKtiQ7w" base_Class="_qdx-V_8fEduhWtVvKtiQ7w"/> > <Ecore:EAttribute xmi:id="_qf-8Kf8fEduhWtVvKtiQ7w" base_Property="_qdx-Wf8fEduhWtVvKtiQ7w"/> >- <Ecore:EDataType xmi:id="_wn-44I2FEd2mlKUM3HGxZg" instanceClassName="lpg.lpgjavaruntime.IToken" base_PrimitiveType="_tvVQwI2FEd2mlKUM3HGxZg"/> >+ <Ecore:EDataType xmi:id="_wn-44I2FEd2mlKUM3HGxZg" instanceClassName="lpg.runtime.IToken" base_PrimitiveType="_tvVQwI2FEd2mlKUM3HGxZg"/> > <Ecore:EAttribute xmi:id="_qkehgI2JEd2mlKUM3HGxZg" isTransient="true" base_Property="_PkTnII2GEd2mlKUM3HGxZg"/> > <Ecore:EAttribute xmi:id="_na5BwI2GEd2mlKUM3HGxZg" isTransient="true" base_Property="_kTt1cI2GEd2mlKUM3HGxZg"/> > <Ecore:EAttribute xmi:id="_CoEkwI2HEd2mlKUM3HGxZg" isTransient="true" base_Property="_xJpmEI2GEd2mlKUM3HGxZg"/> >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/META-INF/MANIFEST.MF,v >retrieving revision 1.13 >diff -u -r1.13 MANIFEST.MF >--- META-INF/MANIFEST.MF 31 Jan 2009 22:50:06 -0000 1.13 >+++ META-INF/MANIFEST.MF 14 Aug 2009 17:42:59 -0000 >@@ -36,7 +36,7 @@ > Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)", > org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)";visibility:=reexport, > org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)", >- net.sourceforge.lpg.lpgjavaruntime;version="[1.0.0,1.2.0)";visibility:=reexport >+ lpg.runtime;bundle-version="2.0.17";visibility:=reexport > Bundle-Activator: org.eclipse.ocl.internal.OCLPlugin$Implementation > Eclipse-LazyStart: true > Bundle-ActivationPolicy: lazy >Index: src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java,v >retrieving revision 1.14 >diff -u -r1.14 OCLSyntaxHelper.java >--- src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java 25 Jun 2009 19:23:52 -0000 1.14 >+++ src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java 14 Aug 2009 17:43:01 -0000 >@@ -28,7 +28,7 @@ > import java.util.ListIterator; > import java.util.Set; > >-import lpg.lpgjavaruntime.IToken; >+import lpg.runtime.IToken; > > import org.eclipse.emf.ecore.EObject; > import org.eclipse.emf.ecore.util.EcoreUtil; >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, 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 - LPG v2.0.17 adoption >+-- * >+-- * </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,205 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008 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: >+-- * E.D. Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLParserErrors.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- Additional ERROR_TOKEN rules for The OCL Parser >+-- >+ >+%Include >+ OCLParser.g >+%End >+ >+%Include >+ 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 ::= initOrDerValueCSopt init ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createInitValueCS( >+ (InitOrDerValueCS)$getSym(1), >+ null >+ ); >+ if ($getSym(1) != null) { >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(3))); >+ } else { >+ setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ initOrDerValueCS ::= initOrDerValueCSopt derive ERROR_Colon >+ /.$BeginCode >+ CSTNode result = createDerValueCS( >+ (InitOrDerValueCS)$getSym(1), >+ null >+ ); >+ if ($getSym(1) != null) { >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(3))); >+ } else { >+ 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,553 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation Zeligsoft Inc, 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 - LPG v2.0.17 adoption >+-- * >+-- * </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, Zeligsoft Inc, 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 - LPG v2.0.17 adoption >+$copyright_contributions >+ * </copyright> >+ * >+ * >+ */ >+ ./ >+%End >+ >+%Globals >+ /../ >+%End >+ >+%Include >+ 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 >+ -- >+ body >+ derive >+ init >+ null >+-- 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 Spec 7.4.9 >+ -- >+ attr >+ oper >+ >+ -- >+ -- 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 >+ Invalid >+ OclMessage >+ >+ OclInvalid >+%End >+ >+%Terminals >+ 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 >+%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 >+ ./ >+ >+ | I n v a l i d >+ /.$BeginAction >+ $setResult($_Invalid); >+ $EndAction >+ ./ >+ >+ | O c l M e s s a g e >+ /.$BeginAction >+ $setResult($_OclMessage); >+ $EndAction >+ ./ >+ >+ | n u l l >+ /.$BeginAction >+ $setResult($_null); >+ $EndAction >+ ./ >+ >+ | O c l I n v a l i d >+ /.$BeginAction >+ $setResult($_OclInvalid); >+ $EndAction >+ ./ >+ >+ | a t t r >+ /.$BeginAction >+ $setResult($_attr); >+ $EndAction >+ ./ >+ >+ | o p e r >+ /.$BeginAction >+ $setResult($_oper); >+ $EndAction >+ ./ >+%End >Index: src/org/eclipse/ocl/lpg/LexerTemplateD.gi >=================================================================== >RCS file: src/org/eclipse/ocl/lpg/LexerTemplateD.gi >diff -N src/org/eclipse/ocl/lpg/LexerTemplateD.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/lpg/LexerTemplateD.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,236 @@ >+-- >+-- An instance of this template must have a $Export section and the export_terminals option >+-- >+-- Macros that may be redefined in an instance of this template >+-- >+-- $eof_token >+-- $additional_interfaces >+-- $super_stream_class -- subclass com.ibm.lpg.LpgLexStream for getKind >+-- $prs_stream_class -- use /.PrsStream./ if not subclassing >+-- >+-- B E G I N N I N G O F T E M P L A T E LexerTemplateD >+-- >+%options programming_language=java,margin=4 >+%options table >+%options action=("*.java", "/.", "./") >+%options ParseTable=lpg.runtime.ParseTable >+%options prefix=Char_ >+ >+-- >+-- This template requires that the name of the EOF token be set >+-- to EOF and that the prefix be "Char_" to be consistent with >+-- KeywordTemplateD. >+-- >+%Eof >+ EOF >+%End >+ >+-- >+-- This template also requires that the name of the parser EOF >+-- Token to be exported be set to EOF_TOKEN >+-- >+%Export >+ EOF_TOKEN >+%End >+ >+%Define >+ -- >+ -- Macros that are be needed in an instance of this template >+ -- >+ $eof_token /.$_EOF_TOKEN./ >+ >+ $additional_interfaces /../ >+ $super_stream_class /.AbstractLexer./ >+ $prs_stream_class /.AbstractParser./ >+ $environment_class /.BasicEnvironment./ >+ $adapt_environment /.environment./ >+ >+ >+ $prs_stream /. // macro prs_stream is deprecated. Use function getPrsStream >+ getPrsStream()./ >+ $setSym1 /. // macro setSym1 is deprecated. Use function setResult >+ lexParser.setSym1./ >+ $setResult /. // macro setResult is deprecated. Use function setResult >+ lexParser.setSym1./ >+ $getSym /. // macro getSym is deprecated. Use function getLastToken >+ lexParser.getSym./ >+ $getToken /. // macro getToken is deprecated. Use function getToken >+ lexParser.getToken./ >+ $getLeftSpan /. // macro getLeftSpan is deprecated. Use function getLeftSpan >+ lexParser.getFirstToken./ >+ $getRightSpan /. // macro getRightSpan is deprecated. Use function getRightSpan >+ lexParser.getLastToken./ >+ >+ -- >+ -- Macros useful for specifying actions >+ -- >+ $Header >+ /. >+ // >+ // Rule $rule_number: $rule_text >+ //./ >+ >+ $DefaultAction >+ /. $Header >+ case $rule_number: { ./ >+ >+ $BeginAction /.$DefaultAction./ >+ >+ $EndAction >+ /. break; >+ }./ >+ >+ $BeginJava >+ /.$BeginAction >+ $symbol_declarations./ >+ >+ $EndJava /.$EndAction./ >+ >+ $NoAction >+ /. $Header >+ case $rule_number: >+ break; ./ >+ >+ $BeginActions >+ /. >+ public void ruleAction( int ruleNumber) >+ { >+ switch(ruleNumber) >+ {./ >+ >+ $SplitActions >+ /. >+ default: >+ ruleAction$rule_number(ruleNumber); >+ break; >+ } >+ return; >+ } >+ >+ public void ruleAction$rule_number(int ruleNumber) >+ { >+ switch (ruleNumber) >+ {./ >+ >+ $EndActions >+ /. >+ default: >+ break; >+ } >+ return; >+ }./ >+%End >+ >+%Globals >+ /.import lpg.runtime.*; >+ import org.eclipse.ocl.lpg.AbstractLexer; >+ import org.eclipse.ocl.lpg.AbstractParser; >+ ./ >+%End >+ >+%Headers >+ /. >+ @SuppressWarnings("nls") >+ public class $action_type extends $super_stream_class implements $exp_type, $sym_type, RuleAction$additional_interfaces >+ { >+ private static ParseTable prs = new $prs_type(); >+ // >+ // The Lexer contains an array of characters as the input stream to be parsed. >+ // There are methods to retrieve and classify characters. >+ // The lexparser "token" is implemented simply as the index of the next character in the array. >+ // The Lexer extends the abstract class LpgLexStream with an implementation of the abstract >+ // method getKind. The template defines the Lexer class and the lexer() method. >+ // A driver creates the action class, "Lexer", passing an Option object to the constructor. >+ // >+ protected $kw_lexer_class kwLexer; >+ protected boolean printTokens; >+ private $prs_stream_class parser; >+ private LexParser lexParser = new LexParser(this, prs, this); >+ >+ private final $environment_class oclEnvironment; >+ >+ public $action_type($environment_class environment) { >+ super($adapt_environment); >+ oclEnvironment = environment; >+ } >+ >+ public $action_class($environment_class environment, char[] chars) { >+ this(environment, chars, "OCL", ECLIPSE_TAB_VALUE); >+ kwLexer = new $kw_lexer_class(getInputChars(), $_IDENTIFIER); >+ } >+ >+ public $action_type($environment_class environment, char[] input_chars, String filename, int tab) { >+ super($adapt_environment, input_chars, filename, tab); >+ oclEnvironment = environment; >+ } >+ >+ public $environment_class getOCLEnvironment() { >+ return oclEnvironment; >+ } >+ >+ @Override >+ public int [] getKeywordKinds() { return kwLexer.getKeywordKinds(); } >+ >+ public int getLeftSpan() { return lexParser.getFirstToken(); } >+ public $prs_stream_class getParser() { return parser; } >+ public int getRhsFirstTokenIndex(int i) { return lexParser.getFirstToken(i); } >+ public int getRhsLastTokenIndex(int i) { return lexParser.getLastToken(i); } >+ public int getRightSpan() { return lexParser.getLastToken(); } >+ >+ @Override >+ public int getToken(int i) { return lexParser.getToken(i); } >+ >+ @Override >+ public void initialize(char [] content, String filename) >+ { >+ super.initialize(content, filename); >+ if (kwLexer == null) >+ kwLexer = new $kw_lexer_class(getInputChars(), $_IDENTIFIER); >+ else >+ kwLexer.setInputChars(getInputChars()); >+ } >+ >+ @Override >+ public String[] orderedExportedSymbols() { return $exp_type.orderedTerminalSymbols; } >+ >+ @Override >+ public void setInputChars(char[] inputChars) { >+ super.setInputChars(inputChars); >+ kwLexer = new $kw_lexer_class(getInputChars(), $_IDENTIFIER); >+ } >+ >+ @Override >+ public void lexToTokens(Monitor monitor, $prs_stream_class parser) >+ { >+ if (getInputChars() == null) >+ throw new NullPointerException("LexStream was not initialized"); >+ >+ this.parser = parser; >+ >+ parser.makeToken(0, 0, 0); // Token list must start with a bad token >+ >+ lexParser.parseCharacters(monitor); // Lex the input characters >+ >+ int i = getStreamIndex(); >+ parser.makeToken(i, i, $eof_token); // and end with the end of file token >+ parser.setStreamLength(parser.getSize()); >+ >+ return; >+ } >+ ./ >+%End >+ >+%Rules >+ /.$BeginActions./ >+%End >+ >+%Trailers >+ /. >+ $EndActions >+ } >+ ./ >+%End >+ >+-- >+-- E N D O F T E M P L A T E >+-- >Index: src/org/eclipse/ocl/lpg/LexerBasicMap.gi >=================================================================== >RCS file: src/org/eclipse/ocl/lpg/LexerBasicMap.gi >diff -N src/org/eclipse/ocl/lpg/LexerBasicMap.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/lpg/LexerBasicMap.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,196 @@ >+%Headers >+ -- >+ -- Additional methods for the action class not provided in the template >+ -- >+ >+ -- [cwd] Template provided by LPG defines a constructor that uses an Option >+ -- class that does not exist in LPG Runtime. Deleted this constructor >+ >+ /. >+ final void makeToken(int kind) >+ { >+ int startOffset = getLeftSpan(), >+ endOffset = getRightSpan(); >+ makeToken(startOffset, endOffset, kind); >+ if (printTokens) printValue(startOffset, endOffset); >+ } >+ >+ final void makeComment(int kind) >+ { >+ int startOffset = getLeftSpan(), >+ endOffset = getRightSpan(); >+ super.getPrsStream().makeAdjunct(startOffset, endOffset, kind); >+ } >+ >+ final void skipToken() >+ { >+ if (printTokens) printValue(getLeftSpan(), getRightSpan()); >+ } >+ >+ final void checkForKeyWord() >+ { >+ int startOffset = getLeftSpan(), >+ endOffset = getRightSpan(), >+ kwKind = kwLexer.lexer(startOffset, endOffset); >+ makeToken(startOffset, endOffset, kwKind); >+ if (printTokens) printValue(startOffset, endOffset); >+ } >+ >+ final void printValue(int startOffset, int endOffset) >+ { >+ String s = new String(getInputChars(), startOffset, endOffset - startOffset + 1); >+ System.out.print(s); >+ } >+ >+ // >+ // >+ // >+ public final static int tokenKind[] = >+ { >+ Char_CtlCharNotWS, // 000 0x00 >+ Char_CtlCharNotWS, // 001 0x01 >+ Char_CtlCharNotWS, // 002 0x02 >+ Char_CtlCharNotWS, // 003 0x03 >+ Char_CtlCharNotWS, // 004 0x04 >+ Char_CtlCharNotWS, // 005 0x05 >+ Char_CtlCharNotWS, // 006 0x06 >+ Char_CtlCharNotWS, // 007 0x07 >+ Char_CtlCharNotWS, // 008 0x08 >+ Char_HT, // 009 0x09 >+ Char_LF, // 010 0x0A >+ Char_CtlCharNotWS, // 011 0x0B >+ Char_FF, // 012 0x0C >+ Char_CR, // 013 0x0D >+ Char_CtlCharNotWS, // 014 0x0E >+ Char_CtlCharNotWS, // 015 0x0F >+ Char_CtlCharNotWS, // 016 0x10 >+ Char_CtlCharNotWS, // 017 0x11 >+ Char_CtlCharNotWS, // 018 0x12 >+ Char_CtlCharNotWS, // 019 0x13 >+ Char_CtlCharNotWS, // 020 0x14 >+ Char_CtlCharNotWS, // 021 0x15 >+ Char_CtlCharNotWS, // 022 0x16 >+ Char_CtlCharNotWS, // 023 0x17 >+ Char_CtlCharNotWS, // 024 0x18 >+ Char_CtlCharNotWS, // 025 0x19 >+ Char_CtlCharNotWS, // 026 0x1A >+ Char_CtlCharNotWS, // 027 0x1B >+ Char_CtlCharNotWS, // 028 0x1C >+ Char_CtlCharNotWS, // 029 0x1D >+ Char_CtlCharNotWS, // 030 0x1E >+ Char_CtlCharNotWS, // 031 0x1F >+ Char_Space, // 032 0x20 >+ Char_Exclamation, // 033 0x21 >+ Char_DoubleQuote, // 034 0x22 >+ Char_Sharp, // 035 0x23 >+ Char_DollarSign, // 036 0x24 >+ Char_Percent, // 037 0x25 >+ Char_Ampersand, // 038 0x26 >+ Char_SingleQuote, // 039 0x27 >+ Char_LeftParen, // 040 0x28 >+ Char_RightParen, // 041 0x29 >+ Char_Star, // 042 0x2A >+ Char_Plus, // 043 0x2B >+ Char_Comma, // 044 0x2C >+ Char_Minus, // 045 0x2D >+ Char_Dot, // 046 0x2E >+ Char_Slash, // 047 0x2F >+ Char_0, // 048 0x30 >+ Char_1, // 049 0x31 >+ Char_2, // 050 0x32 >+ Char_3, // 051 0x33 >+ Char_4, // 052 0x34 >+ Char_5, // 053 0x35 >+ Char_6, // 054 0x36 >+ Char_7, // 055 0x37 >+ Char_8, // 056 0x38 >+ Char_9, // 057 0x39 >+ Char_Colon, // 058 0x3A >+ Char_SemiColon, // 059 0x3B >+ Char_LessThan, // 060 0x3C >+ Char_Equal, // 061 0x3D >+ Char_GreaterThan, // 062 0x3E >+ Char_QuestionMark, // 063 0x3F >+ Char_AtSign, // 064 0x40 >+ Char_A, // 065 0x41 >+ Char_B, // 066 0x42 >+ Char_C, // 067 0x43 >+ Char_D, // 068 0x44 >+ Char_E, // 069 0x45 >+ Char_F, // 070 0x46 >+ Char_G, // 071 0x47 >+ Char_H, // 072 0x48 >+ Char_I, // 073 0x49 >+ Char_J, // 074 0x4A >+ Char_K, // 075 0x4B >+ Char_L, // 076 0x4C >+ Char_M, // 077 0x4D >+ Char_N, // 078 0x4E >+ Char_O, // 079 0x4F >+ Char_P, // 080 0x50 >+ Char_Q, // 081 0x51 >+ Char_R, // 082 0x52 >+ Char_S, // 083 0x53 >+ Char_T, // 084 0x54 >+ Char_U, // 085 0x55 >+ Char_V, // 086 0x56 >+ Char_W, // 087 0x57 >+ Char_X, // 088 0x58 >+ Char_Y, // 089 0x59 >+ Char_Z, // 090 0x5A >+ Char_LeftBracket, // 091 0x5B >+ Char_BackSlash, // 092 0x5C >+ Char_RightBracket, // 093 0x5D >+ Char_Caret, // 094 0x5E >+ Char__, // 095 0x5F >+ Char_BackQuote, // 096 0x60 >+ Char_a, // 097 0x61 >+ Char_b, // 098 0x62 >+ Char_c, // 099 0x63 >+ Char_d, // 100 0x64 >+ Char_e, // 101 0x65 >+ Char_f, // 102 0x66 >+ Char_g, // 103 0x67 >+ Char_h, // 104 0x68 >+ Char_i, // 105 0x69 >+ Char_j, // 106 0x6A >+ Char_k, // 107 0x6B >+ Char_l, // 108 0x6C >+ Char_m, // 109 0x6D >+ Char_n, // 110 0x6E >+ Char_o, // 111 0x6F >+ Char_p, // 112 0x70 >+ Char_q, // 113 0x71 >+ Char_r, // 114 0x72 >+ Char_s, // 115 0x73 >+ Char_t, // 116 0x74 >+ Char_u, // 117 0x75 >+ Char_v, // 118 0x76 >+ Char_w, // 119 0x77 >+ Char_x, // 120 0x78 >+ Char_y, // 121 0x79 >+ Char_z, // 122 0x7A >+ Char_LeftBrace, // 123 0x7B >+ Char_VerticalBar, // 124 0x7C >+ Char_RightBrace, // 125 0x7D >+ Char_Tilde, // 126 0x7E >+ Char_CtlCharNotWS, // 127 0x7F >+ >+ Char_Acute, // for the acute accent 0xb4 >+ Char_AfterASCIINotAcute, // for all chars in range 0x80..0xfffe excluding the acute accent >+ Char_EOF // for '\uffff' or 65535 >+ }; >+ >+ @Override public final int getKind(int i) // Classify character at ith location >+ { >+ char c = (i >= getStreamLength() ? '\uffff' : getCharValue(i)); >+ return (c < 128)? // ASCII Character >+ tokenKind[c] : >+ (c == '\uffff')? >+ Char_EOF : >+ (c == '\u00b4')? >+ Char_Acute : >+ Char_AfterASCIINotAcute; >+ } >+ ./ >+%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,1728 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., >+-- * 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 - Elimination of some shift-reduce conflicts >+-- * E.D.Willink - Remove unnecessary warning suppression >+-- * E.D.Willink - Bugs 225493, 243976, 259818 >+-- * Zeligsoft - Bug 243976 >+-- * Borland - Bug 242880 >+-- * Adolfo Sanchez-Barbudo Herrera - LPG v 2.0.17 adoption >+-- * >+-- * </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; >+ }./ >+ >+ $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, Zeligsoft Inc., Borland Software Corp., >+ * 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 - Elimination of some shift-reduce conflicts >+ * E.D.Willink - Remove unnecessary warning suppression >+ * E.D.Willink - Bugs 225493, 243976, 259818 >+ * Zeligsoft - Bug 243976 >+ * Borland - Bug 242880 >+ * Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption >+$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 >+-- 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 >+ Invalid >+ OclMessage >+ >+ OclInvalid >+%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.isPre()) { >+ 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.isPre()) { >+ 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 ::= 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 ::= Invalid >+ /.$BeginCode >+ CSTNode result = createPrimitiveTypeCS( >+ SimpleTypeEnum.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 ::= IDENTIFIER >+ /.$BeginCode >+ CSTNode result = createPathNameCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ pathNameCS ::= pathNameCS '::' simpleNameCS >+ /.$BeginCode >+ PathNameCS result = (PathNameCS)$getSym(1); >+ result = extendPathNameCS(result, getTokenText(dtParser.getToken(3))); >+ setOffsets(result, result, (CSTNode)$getSym(3)); >+ $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 ::= OclInvalid >+ /.$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.isPre()) { >+ 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.isPre()) { >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(5)); >+ } else { >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ isMarkedPreCS ::= %empty >+ /.$BeginCode >+ CSTNode result = createIsMarkedPreCS(false); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ isMarkedPreCS ::= '@pre' >+ /.$BeginCode >+ CSTNode result = createIsMarkedPreCS(true); >+ 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 - LPG v2.0.17 adoption >+-- * >+-- * </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,419 @@ >+--/** >+-- * <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: >+-- * E.D.Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption >+-- * >+-- * </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); >+ IsMarkedPreCS result = createIsMarkedPreCS(false); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ ERROR_PathNameCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_PATH_NAME); >+ CSTNode result = createPathNameCS(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), >+ createIsMarkedPreCS(false) >+ ); >+ 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), >+ createIsMarkedPreCS(false) >+ ); >+ 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/lpg/KeywordTemplateD.gi >=================================================================== >RCS file: src/org/eclipse/ocl/lpg/KeywordTemplateD.gi >diff -N src/org/eclipse/ocl/lpg/KeywordTemplateD.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/lpg/KeywordTemplateD.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,119 @@ >+-- >+-- An LPG Lexer Template Using lpg.jar >+-- >+-- An instance of this template must have a $Export section and the export_terminals option >+-- There must be only one non-terminal, the start symbol, for the keywords >+-- The action for each keyword should be a call to $setResult(terminal_symbol) >+-- >+-- Macro that may be redefined in an instance of this template >+-- >+-- $eof_char >+-- >+-- B E G I N N I N G O F T E M P L A T E KeywordTemplateD >+-- >+%options Programming_Language=java,margin=4 >+%options table >+%options action-block=("*.java", "/.", "./") >+%options ParseTable=lpg.runtime.ParseTable >+%options prefix=Char_ >+%options single-productions >+ >+-- >+-- This template requires that the name of the EOF token be set >+-- to EOF and that the prefix be "Char_" to be consistent with >+-- LexerTemplateD. >+-- >+%Eof >+ EOF >+%End >+ >+%Define >+ -- >+ -- Macro that may be respecified in an instance of this template >+ -- >+ $eof_char /.Char_EOF./ >+ >+ -- >+ -- Macros useful for specifying actions >+ -- >+ $setResult /.keywordKind[$rule_number] = ./ >+ >+ $Header >+ /. >+ // >+ // Rule $rule_number: $rule_text >+ // >+ ./ >+ >+ $BeginAction /.$Header./ >+ >+ $EndAction /../ >+ >+ $BeginJava /.$BeginAction./ >+ >+ $EndJava /.$EndAction./ >+%End >+ >+%Headers >+ /. >+ public class $action_type extends $prs_type implements $exp_type >+ { >+ private char[] inputChars; >+ private final int keywordKind[] = new int[$num_rules + 1]; >+ >+ public int[] getKeywordKinds() { return keywordKind; } >+ >+ public int lexer(int curtok, int lasttok) >+ { >+ int current_kind = getKind(inputChars[curtok]), >+ act; >+ >+ for (act = tAction(START_STATE, current_kind); >+ act > NUM_RULES && act < ACCEPT_ACTION; >+ act = tAction(act, current_kind)) >+ { >+ curtok++; >+ current_kind = (curtok > lasttok >+ ? $eof_char >+ : getKind(inputChars[curtok])); >+ } >+ >+ if (act > ERROR_ACTION) >+ { >+ curtok++; >+ act -= ERROR_ACTION; >+ } >+ >+ return keywordKind[act == ERROR_ACTION || curtok <= lasttok ? 0 : act]; >+ } >+ >+ public void setInputChars(char[] inputChars) { this.inputChars = inputChars; } >+ >+ ./ >+%End >+ >+%Rules >+ /. >+ >+ public $action_type(char[] inputChars, int identifierKind) >+ { >+ this.inputChars = inputChars; >+ keywordKind[0] = identifierKind; >+ ./ >+%End >+ >+%Trailers >+ /. >+ for (int i = 0; i < keywordKind.length; i++) >+ { >+ if (keywordKind[i] == 0) >+ keywordKind[i] = identifierKind; >+ } >+ } >+ } >+ ./ >+%End >+ >+-- >+-- E N D O F T E M P L A T E >+-- >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,614 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., 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 >+-- * - Bug 259818 >+-- * Borland - Bug 242880 >+-- * Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption >+-- * >+-- * </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., 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 >+ * - Bug 259818 >+ * Borland - Bug 242880 >+ * Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption >+ $copyright_contributions >+ * </copyright> >+ * >+ * $Id$ >+ */ >+ ./ >+%End >+ >+%Include >+ 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 >+ >+%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 >+ skipToken(); >+ $EndAction >+ ./ >+ >+ Token ::= '/' '*' Inside Stars '/' >+ /.$BeginAction >+ skipToken(); >+ $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 >Index: src/org/eclipse/ocl/lpg/KWLexerMap.gi >=================================================================== >RCS file: src/org/eclipse/ocl/lpg/KWLexerMap.gi >diff -N src/org/eclipse/ocl/lpg/KWLexerMap.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/lpg/KWLexerMap.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,80 @@ >+%Terminals >+ DollarSign ::= '$' >+ Percent ::= '%' >+ _ >+ 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 >+%End >+ >+%Headers >+ /. >+ final static int tokenKind[] = new int[128]; >+ static >+ { >+ tokenKind['$'] = $sym_type.$prefix$DollarSign$suffix$; >+ tokenKind['%'] = $sym_type.$prefix$Percent$suffix$; >+ tokenKind['_'] = $sym_type.$prefix$_$suffix$; >+ >+ tokenKind['a'] = $sym_type.$prefix$a$suffix$; >+ tokenKind['b'] = $sym_type.$prefix$b$suffix$; >+ tokenKind['c'] = $sym_type.$prefix$c$suffix$; >+ tokenKind['d'] = $sym_type.$prefix$d$suffix$; >+ tokenKind['e'] = $sym_type.$prefix$e$suffix$; >+ tokenKind['f'] = $sym_type.$prefix$f$suffix$; >+ tokenKind['g'] = $sym_type.$prefix$g$suffix$; >+ tokenKind['h'] = $sym_type.$prefix$h$suffix$; >+ tokenKind['i'] = $sym_type.$prefix$i$suffix$; >+ tokenKind['j'] = $sym_type.$prefix$j$suffix$; >+ tokenKind['k'] = $sym_type.$prefix$k$suffix$; >+ tokenKind['l'] = $sym_type.$prefix$l$suffix$; >+ tokenKind['m'] = $sym_type.$prefix$m$suffix$; >+ tokenKind['n'] = $sym_type.$prefix$n$suffix$; >+ tokenKind['o'] = $sym_type.$prefix$o$suffix$; >+ tokenKind['p'] = $sym_type.$prefix$p$suffix$; >+ tokenKind['q'] = $sym_type.$prefix$q$suffix$; >+ tokenKind['r'] = $sym_type.$prefix$r$suffix$; >+ tokenKind['s'] = $sym_type.$prefix$s$suffix$; >+ tokenKind['t'] = $sym_type.$prefix$t$suffix$; >+ tokenKind['u'] = $sym_type.$prefix$u$suffix$; >+ tokenKind['v'] = $sym_type.$prefix$v$suffix$; >+ tokenKind['w'] = $sym_type.$prefix$w$suffix$; >+ tokenKind['x'] = $sym_type.$prefix$x$suffix$; >+ tokenKind['y'] = $sym_type.$prefix$y$suffix$; >+ tokenKind['z'] = $sym_type.$prefix$z$suffix$; >+ >+ tokenKind['A'] = $sym_type.$prefix$A$suffix$; >+ tokenKind['B'] = $sym_type.$prefix$B$suffix$; >+ tokenKind['C'] = $sym_type.$prefix$C$suffix$; >+ tokenKind['D'] = $sym_type.$prefix$D$suffix$; >+ tokenKind['E'] = $sym_type.$prefix$E$suffix$; >+ tokenKind['F'] = $sym_type.$prefix$F$suffix$; >+ tokenKind['G'] = $sym_type.$prefix$G$suffix$; >+ tokenKind['H'] = $sym_type.$prefix$H$suffix$; >+ tokenKind['I'] = $sym_type.$prefix$I$suffix$; >+ tokenKind['J'] = $sym_type.$prefix$J$suffix$; >+ tokenKind['K'] = $sym_type.$prefix$K$suffix$; >+ tokenKind['L'] = $sym_type.$prefix$L$suffix$; >+ tokenKind['M'] = $sym_type.$prefix$M$suffix$; >+ tokenKind['N'] = $sym_type.$prefix$N$suffix$; >+ tokenKind['O'] = $sym_type.$prefix$O$suffix$; >+ tokenKind['P'] = $sym_type.$prefix$P$suffix$; >+ tokenKind['Q'] = $sym_type.$prefix$Q$suffix$; >+ tokenKind['R'] = $sym_type.$prefix$R$suffix$; >+ tokenKind['S'] = $sym_type.$prefix$S$suffix$; >+ tokenKind['T'] = $sym_type.$prefix$T$suffix$; >+ tokenKind['U'] = $sym_type.$prefix$U$suffix$; >+ tokenKind['V'] = $sym_type.$prefix$V$suffix$; >+ tokenKind['W'] = $sym_type.$prefix$W$suffix$; >+ tokenKind['X'] = $sym_type.$prefix$X$suffix$; >+ tokenKind['Y'] = $sym_type.$prefix$Y$suffix$; >+ tokenKind['Z'] = $sym_type.$prefix$Z$suffix$; >+ }; >+ >+ final int getKind(int c) >+ { >+ return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0); >+ } >+ ./ >+%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