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 154947 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]
Adapt to Bug 298201 commit
Bug242153.patch (text/plain), 320.55 KB, created by
Ed Willink
on 2009-12-22 16:41:29 EST
(
hide
)
Description:
Adapt to Bug 298201 commit
Filename:
MIME Type:
Creator:
Ed Willink
Created:
2009-12-22 16:41:29 EST
Size:
320.55 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P ocl >Index: resources/ocl.psf >=================================================================== >RCS file: /cvsroot/org.eclipse/www/modeling/mdt/ocl/resources/ocl.psf,v >retrieving revision 1.1 >diff -u -r1.1 ocl.psf >--- resources/ocl.psf 5 Dec 2009 17:57:08 -0000 1.1 >+++ resources/ocl.psf 22 Dec 2009 21:41:21 -0000 >@@ -1,7 +1,7 @@ > <?xml version="1.0" encoding="UTF-8"?> > <psf version="2.0"> > <provider id="org.eclipse.team.cvs.core.cvsnature"> >- <project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,org.eclipse.orbit/net.sourceforge.lpg.lpgjavaruntime,net.sourceforge.lpg.lpgjavaruntime,v1_1"/> >+ <project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,org.eclipse.orbit/lpg.runtime.java,lpg.runtime.java,v2_0_17"/> > > <project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/modeling,org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl,org.eclipse.ocl,"/> > <project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/modeling,org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl.ecore,org.eclipse.ocl.ecore,"/> >#P org.eclipse.ocl >Index: .settings/.api_filters >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/.settings/.api_filters,v >retrieving revision 1.10 >diff -u -r1.10 .api_filters >--- .settings/.api_filters 22 Dec 2009 18:06:54 -0000 1.10 >+++ .settings/.api_filters 22 Dec 2009 21:41:23 -0000 >@@ -1,5 +1,35 @@ > <?xml version="1.0" encoding="UTF-8" standalone="no"?> > <component id="org.eclipse.ocl" version="2"> >+ <resource path="src/org/eclipse/ocl/cst/CSTNode.java" type="org.eclipse.ocl.cst.CSTNode"> >+ <filter id="1209008130"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="getStartToken()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1209008130"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="getEndToken()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1209008130"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="setEndToken(IToken)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1209008130"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="setStartToken(IToken)"/> >+ </message_arguments> >+ </filter> >+ </resource> > <resource path="src/org/eclipse/ocl/cst/CSTPackage.java" type="org.eclipse.ocl.cst.CSTPackage"> > <filter id="1211105284"> > <message_arguments> >@@ -42,9 +72,290 @@ > </message_arguments> > </filter> > </resource> >+ <resource path="src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java" type="org.eclipse.ocl.cst.impl.CSTFactoryImpl"> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="createITokenFromString(EDataType, String)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java" type="org.eclipse.ocl.cst.impl.CSTNodeImpl"> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="setEndToken(IToken)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="setStartToken(IToken)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="getEndToken()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="getStartToken()"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/lpg/AbstractLexer.java" type="org.eclipse.ocl.lpg.AbstractLexer"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="lexToTokens(Monitor, AbstractParser)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/lpg/AbstractParser.java" type="org.eclipse.ocl.lpg.AbstractParser"> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="getErrorTokenAtCharacter(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="setOffsets(CSTNode, CSTNode, IToken)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="setOffsets(CSTNode, IToken, IToken)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="setOffsets(CSTNode, IToken)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="setOffsets(CSTNode, IToken, CSTNode)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="parseTokensToCST(Monitor, int)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/AbstractOCLParser.java" type="org.eclipse.ocl.parser.AbstractOCLParser"> >+ <filter id="1141899266"> >+ <message_arguments> >+ <message_argument value="1.3"/> >+ <message_argument value="3.0"/> >+ <message_argument value="unescape(IToken)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLKWLexerprs.java" type="org.eclipse.ocl.parser.OCLKWLexerprs"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="MAX_NAME_LENGTH"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_SIZE"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_UBOUND"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="getIdentifier_SYMBOL()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ERROR_SYMBOL"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex(int)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLKWLexerprs.java" type="org.eclipse.ocl.parser.OCLKWLexerprs$IsNullable"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="IsNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLKWLexerprs.java" type="org.eclipse.ocl.parser.OCLKWLexerprs$ProsthesesIndex"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ProsthesesIndex"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLKWLexersym.java" type="org.eclipse.ocl.parser.OCLKWLexersym"> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="Char__"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="numTokenKinds"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="Char_Percent"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLLexerprs.java" type="org.eclipse.ocl.parser.OCLLexerprs"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_UBOUND"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="MAX_NAME_LENGTH"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="getIdentifier_SYMBOL()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_SIZE"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ERROR_SYMBOL"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLLexerprs.java" type="org.eclipse.ocl.parser.OCLLexerprs$IsNullable"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="IsNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLLexerprs.java" type="org.eclipse.ocl.parser.OCLLexerprs$ProsthesesIndex"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ProsthesesIndex"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLLexersym.java" type="org.eclipse.ocl.parser.OCLLexersym"> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="numTokenKinds"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLParserprs.java" type="org.eclipse.ocl.parser.OCLParserprs"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="getIdentifier_SYMBOL()"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLParserprs.java" type="org.eclipse.ocl.parser.OCLParserprs$IsNullable"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="IsNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/OCLParserprs.java" type="org.eclipse.ocl.parser.OCLParserprs$ProsthesesIndex"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ProsthesesIndex"/> >+ </message_arguments> >+ </filter> >+ </resource> > <resource path="src/org/eclipse/ocl/parser/OCLParsersym.java" type="org.eclipse.ocl.parser.OCLParsersym"> > <filter id="1211105284"> > <message_arguments> >+ <message_argument value="numTokenKinds"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> > <message_argument value="TK_static"/> > </message_arguments> > </filter> >@@ -60,19 +371,206 @@ > </filter> > <filter id="1211105284"> > <message_arguments> >+ <message_argument value="TK_AT"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> > <message_argument value="TK_SINGLE_LINE_COMMENT"/> > </message_arguments> > </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexerprs"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="MAX_NAME_LENGTH"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ERROR_SYMBOL"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="getIdentifier_SYMBOL()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_SIZE"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_UBOUND"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable(int)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexerprs$IsNullable"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="IsNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexerprs$ProsthesesIndex"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ProsthesesIndex"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexersym"> > <filter id="1211105284"> > <message_arguments> >- <message_argument value="TK_AT"/> >+ <message_argument value="Char__"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="Char_Percent"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="numTokenKinds"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexerprs"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="getIdentifier_SYMBOL()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="MAX_NAME_LENGTH"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ERROR_SYMBOL"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_SIZE"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="SCOPE_UBOUND"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex(int)"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexerprs$IsNullable"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="IsNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexerprs$ProsthesesIndex"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ProsthesesIndex"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexersym"> >+ <filter id="1211105284"> >+ <message_arguments> >+ <message_argument value="numTokenKinds"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParserprs"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="getIdentifier_SYMBOL()"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="prosthesesIndex"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable(int)"/> >+ </message_arguments> >+ </filter> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="isNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParserprs$IsNullable"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="IsNullable"/> >+ </message_arguments> >+ </filter> >+ </resource> >+ <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParserprs$ProsthesesIndex"> >+ <filter id="1143996420"> >+ <message_arguments> >+ <message_argument value="ProsthesesIndex"/> > </message_arguments> > </filter> > </resource> > <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParsersym"> > <filter id="1211105284"> > <message_arguments> >- <message_argument value="TK_static"/> >+ <message_argument value="TK_SINGLE_LINE_COMMENT"/> > </message_arguments> > </filter> > <filter id="1211105284"> >@@ -82,7 +580,7 @@ > </filter> > <filter id="1211105284"> > <message_arguments> >- <message_argument value="TK_SINGLE_LINE_COMMENT"/> >+ <message_argument value="TK_static"/> > </message_arguments> > </filter> > <filter id="1211105284"> >@@ -92,6 +590,11 @@ > </filter> > <filter id="1211105284"> > <message_arguments> >+ <message_argument value="numTokenKinds"/> >+ </message_arguments> >+ </filter> >+ <filter id="1211105284"> >+ <message_arguments> > <message_argument value="TK_invalid"/> > </message_arguments> > </filter> >Index: .settings/LPG Backtracking OCLParser.launch >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/.settings/LPG Backtracking OCLParser.launch,v >retrieving revision 1.1 >diff -u -r1.1 LPG Backtracking OCLParser.launch >--- .settings/LPG Backtracking OCLParser.launch 5 Mar 2009 14:12:14 -0000 1.1 >+++ .settings/LPG Backtracking OCLParser.launch 22 Dec 2009 21:41:23 -0000 >@@ -1,11 +1,11 @@ >-<?xml version="1.0" encoding="UTF-8"?> >-<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType"> >-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/lpg" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking" type="2"/> </launchConfigurationWorkingSet>}"/> >-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> >-<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> >-<listEntry value="org.eclipse.ui.externaltools.launchGroup"/> >-</listAttribute> >-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg.exe}"/> >-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLBacktrackingParser.g"/> >-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking}"/> >-</launchConfiguration> >+<?xml version="1.0" encoding="UTF-8" standalone="no"?> >+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType"> >+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1260466156182_5" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/lpg" type="2"/> </launchConfigurationWorkingSet>}"/> >+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> >+<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> >+<listEntry value="org.eclipse.ui.externaltools.launchGroup"/> >+</listAttribute> >+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg2.exe}"/> >+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLBacktrackingParser.g"/> >+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking}"/> >+</launchConfiguration> >Index: .settings/LPG OCLParser.launch >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/.settings/LPG OCLParser.launch,v >retrieving revision 1.1 >diff -u -r1.1 LPG OCLParser.launch >--- .settings/LPG OCLParser.launch 11 Oct 2007 23:05:05 -0000 1.1 >+++ .settings/LPG OCLParser.launch 22 Dec 2009 21:41:23 -0000 >@@ -1,11 +1,11 @@ >-<?xml version="1.0" encoding="UTF-8"?> >+<?xml version="1.0" encoding="UTF-8" standalone="no"?> > <launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType"> >-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/lpg" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/parser" type="2"/> </launchConfigurationWorkingSet>}"/> >+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1260466178715_30" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/parser" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.ocl/src/org/eclipse/ocl/lpg" type="2"/> </launchConfigurationWorkingSet>}"/> > <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> > <listAttribute key="org.eclipse.debug.ui.favoriteGroups"> > <listEntry value="org.eclipse.ui.externaltools.launchGroup"/> > </listAttribute> >-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg.exe}"/> >+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg2.exe}"/> > <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLParser.g"/> > <stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser}"/> > </launchConfiguration> >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.19 >diff -u -r1.19 MANIFEST.MF >--- META-INF/MANIFEST.MF 6 Dec 2009 18:01:40 -0000 1.19 >+++ META-INF/MANIFEST.MF 22 Dec 2009 21:41:23 -0000 >@@ -33,7 +33,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)";visibility:=reexport, >- net.sourceforge.lpg.lpgjavaruntime;version="[1.0.0,1.2.0)";visibility:=reexport >+ lpg.runtime.java;bundle-version="2.0.17";visibility:=reexport > Bundle-Activator: org.eclipse.ocl.internal.OCLPlugin$Implementation > Eclipse-LazyStart: true > Bundle-ActivationPolicy: lazy >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.14 >diff -u -r1.14 OCLCST.ecore >--- model/OCLCST.ecore 15 Oct 2009 19:37:16 -0000 1.14 >+++ model/OCLCST.ecore 22 Dec 2009 21:41:24 -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.11 >diff -u -r1.11 OCLCST.uml >--- model/OCLCST.uml 15 Oct 2009 19:37:32 -0000 1.11 >+++ model/OCLCST.uml 22 Dec 2009 21:41:25 -0000 >@@ -848,7 +848,7 @@ > <Ecore:EClass xmi:id="_qf-8J_8fEduhWtVvKtiQ7w" base_Class="_qdx-Vf8fEduhWtVvKtiQ7w"/> > <Ecore:EClass xmi:id="_qf-8KP8fEduhWtVvKtiQ7w"/> > <Ecore:EAttribute xmi:id="_qf-8Kf8fEduhWtVvKtiQ7w"/> >- <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: 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.4 >diff -u -r1.4 CSTNode.java >--- src/org/eclipse/ocl/cst/CSTNode.java 22 Dec 2009 18:42:30 -0000 1.4 >+++ src/org/eclipse/ocl/cst/CSTNode.java 22 Dec 2009 21:41:26 -0000 >@@ -17,7 +17,8 @@ > */ > 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.13 >diff -u -r1.13 CSTPackage.java >--- src/org/eclipse/ocl/cst/CSTPackage.java 22 Dec 2009 18:42:30 -0000 1.13 >+++ src/org/eclipse/ocl/cst/CSTPackage.java 22 Dec 2009 21:41:41 -0000 >@@ -5197,7 +5197,7 @@ > * This value may change when the model code is regenerated. > * It is subject to change without notice. > * <!-- end-user-doc --> >- * @see lpg.lpgjavaruntime.IToken >+ * @see lpg.runtime.IToken > * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken() > * @generated > */ >@@ -6615,13 +6615,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(); >@@ -7898,7 +7898,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/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.8 >diff -u -r1.8 CSTFactoryImpl.java >--- src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java 15 Oct 2009 19:38:06 -0000 1.8 >+++ src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java 22 Dec 2009 21:41:42 -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; >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.5 >diff -u -r1.5 CSTNodeImpl.java >--- src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java 15 Oct 2009 19:38:06 -0000 1.5 >+++ src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java 22 Dec 2009 21:41:42 -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; >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.13 >diff -u -r1.13 CSTPackageImpl.java >--- src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java 15 Oct 2009 19:38:06 -0000 1.13 >+++ src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java 22 Dec 2009 21:41:49 -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; >Index: src/org/eclipse/ocl/cst/impl/PathNameCSImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/cst/impl/PathNameCSImpl.java,v >retrieving revision 1.6 >diff -u -r1.6 PathNameCSImpl.java >--- src/org/eclipse/ocl/cst/impl/PathNameCSImpl.java 10 Nov 2009 19:15:16 -0000 1.6 >+++ src/org/eclipse/ocl/cst/impl/PathNameCSImpl.java 22 Dec 2009 21:41:49 -0000 >@@ -177,7 +177,9 @@ > Object node = newAst; > for (int i = simpleNames.size() - 1; i >= 0; --i) { > simpleNames.get(i).setAst(node); >- node = node instanceof EObject ? ((EObject)node).eContainer() : null; >+ node = node instanceof EObject >+ ? ((EObject) node).eContainer() >+ : null; > } > super.setAst(newAst); > } >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.16 >diff -u -r1.16 OCLSyntaxHelper.java >--- src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java 10 Oct 2009 07:09:03 -0000 1.16 >+++ src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java 22 Dec 2009 21:41:51 -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.common.util.EList; > import org.eclipse.emf.ecore.EObject; >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.8 >diff -u -r1.8 AbstractBasicEnvironment.java >--- src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java 23 Oct 2009 21:00:38 -0000 1.8 >+++ src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java 22 Dec 2009 21:41:51 -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/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 22 Dec 2009 21:41:51 -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; > > > /** >@@ -119,21 +119,26 @@ > } > > public abstract void lexToTokens(Monitor monitor, AbstractParser parser); >- >+ > /** > * 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 >+ * Note that other variants of reportLexicalError and 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. >+ * @since 3.0 > */ >- @Override public void reportError(int leftToken, int rightToken) { >+ @Override >+ public void reportLexicalError(int errorCode, int leftLoc, int rightLoc, >+ int errorLeftLoc, int errorRightLoc, String[] errorInfo) { > BasicEnvironment environment = getEnvironment(); > if (environment != null) >- environment.lexerError(computeErrorCode(leftToken, rightToken), leftToken, rightToken); >+ environment.lexerError(errorCode, leftLoc, rightLoc); > else >- super.reportError(leftToken, rightToken); >+ super.reportLexicalError(errorCode, leftLoc, rightLoc, errorLeftLoc, >+ errorRightLoc, errorInfo); > } > >+ > /** > * Define the input text as a given array of characters. > * @param buffer the characters >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.6 >diff -u -r1.6 AbstractParser.java >--- src/org/eclipse/ocl/lpg/AbstractParser.java 9 Nov 2009 21:57:32 -0000 1.6 >+++ src/org/eclipse/ocl/lpg/AbstractParser.java 22 Dec 2009 21:41:51 -0000 >@@ -22,13 +22,12 @@ > import java.text.StringCharacterIterator; > 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 org.eclipse.ocl.cst.CSTNode; > import org.eclipse.ocl.internal.l10n.OCLMessages; >@@ -143,7 +142,7 @@ > } > > public AbstractLexer getLexer() { >- return (AbstractLexer) super.getLexStream(); >+ return (AbstractLexer) super.getILexStream(); > } > > /** >@@ -189,13 +188,13 @@ > // the calling program (a parser driver) to pass to us the proper kind > // that it wants for an error token. > // >- Token token = new ErrorToken(getIToken(firsttok), getIToken(lasttok), >+ IToken token = new ErrorToken(getIToken(firsttok), getIToken(lasttok), > getIToken(errortok), getStartOffset(firsttok), > getEndOffset(lasttok), kind) { > > @Override > public String toString() { >- if (getPrsStream() == null) { >+ if (getIPrsStream() == null) { > return "<toString>"; //$NON-NLS-1$ > } > int startOffset = getStartOffset(); >@@ -204,10 +203,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); > } > >@@ -225,20 +224,24 @@ > public abstract CSTNode parseTokensToCST(Monitor monitor, > int error_repair_count); > >- @Override >- public void reportError(int errorCode, String locationInfo, int leftToken, >- int rightToken, String tokenText) { >- BasicEnvironment environment = getEnvironment(); >- if (environment == null) { >- super.reportError(errorCode, locationInfo, leftToken, rightToken, >- tokenText); >- } else { >- if (errorCode == DELETION_CODE || errorCode == MISPLACED_CODE) { >- tokenText = ""; //$NON-NLS-1$ >- } >- environment >- .parserError(errorCode, leftToken, rightToken, tokenText); >- } >+ /** >+ * >+ * @since 3.0 >+ */ >+ @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 { >+ // TODO Revise this. BasicEnvironment.parserError doesn't have a String[] argument >+ String tokenText = errorInfo.length > 0 ? errorInfo[0] : ""; //$NON-NLS-1$ >+ if (errorCode == PrsStream.DELETION_CODE || errorCode == PrsStream.MISPLACED_CODE) { >+ tokenText = ""; //$NON-NLS-1$ >+ } >+ environment.parserError(errorCode, leftToken, rightToken, tokenText); >+ } > } > > /** >@@ -255,18 +258,10 @@ > int firsttok = super.getFirstRealToken(error_token); > int lasttok = super.getLastRealToken(error_token); > if (firsttok > lasttok) { >- String location = super.getFileName() + ':' >- + super.getEndLine(lasttok) + ':' + super.getEndColumn(lasttok) >- + ": "; //$NON-NLS-1$ >- reportError(ParseErrorCodes.INSERTION_CODE, location, lasttok, >+ reportError(ParseErrorCodes.INSERTION_CODE, lasttok, > lasttok, msg); > } else { >- 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, >+ 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 22 Dec 2009 21:41:51 -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/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,78 @@ >+%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 >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,120 @@ >+-- >+-- 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/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.getIPrsStream().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/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-block=("*.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/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.11 >diff -u -r1.11 AbstractOCLParser.java >--- src/org/eclipse/ocl/parser/AbstractOCLParser.java 9 Nov 2009 22:00:09 -0000 1.11 >+++ src/org/eclipse/ocl/parser/AbstractOCLParser.java 22 Dec 2009 21:41:59 -0000 >@@ -23,11 +23,11 @@ > import java.util.HashSet; > import java.util.Set; > >-import lpg.lpgjavaruntime.IToken; >-import lpg.lpgjavaruntime.NullExportedSymbolsException; >-import lpg.lpgjavaruntime.NullTerminalSymbolsException; >-import lpg.lpgjavaruntime.UndefinedEofSymbolException; >-import lpg.lpgjavaruntime.UnimplementedTerminalsException; >+import lpg.runtime.IToken; >+import lpg.runtime.NullExportedSymbolsException; >+import lpg.runtime.NullTerminalSymbolsException; >+import lpg.runtime.UndefinedEofSymbolException; >+import lpg.runtime.UnimplementedTerminalsException; > > import org.eclipse.emf.common.util.EList; > import org.eclipse.ocl.cst.BooleanLiteralExpCS; >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,1527 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ >+-- */ >+-- >+-- The EssentialOCL Parser >+-- >+ >+ >+%Define >+ >+ -- Definition of macros used in the parser template >+ -- >+ $prs_stream_class /.AbstractOCLParser./ >+ $prs_parser_class /.DeterministicParser./ >+ $prs_parser_exception /.NotDeterministicParseTableException./ >+ $prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -NOBACKTRACK option")./ >+ $prs_parse_args /../ >+ $lex_stream_class /.AbstractLexer./ >+ $action_class /.$file_prefix./ >+ $copyright_contributions /.*./ >+ >+ -- package namespace of the LPG Runtime API >+ $lpg_ns /.lpg.runtime./ >+ >+ $NewCase >+ /. $Header >+ case $rule_number:./ >+ >+ -- From bt/dtParserTemplateD.g >+ ------------------------------------------------------ >+ $Header >+ /. >+ // >+ // Rule $rule_number: $rule_text >+ //./ >+ >+ $BeginAction >+ /. $Header >+ case $rule_number: {./ >+ >+ $EndAction >+ /. break; >+ }./ >+ >+ $BeginJava >+ /../ >+ >+ $EndJava >+ /../ >+ >+ $BeginCode >+ /.$BeginAction >+ $symbol_declarations./ >+ >+ $EndCode /.$EndAction./ >+ >+ $NoAction >+ /. $Header >+ case $rule_number: >+ break;./ >+ >+ $NullAction >+ /. $Header >+ case $rule_number: >+ $setResult(null); >+ break;./ >+ >+ -- Deprecated, code inline with correct generic parameter type >+ $EmptyListAction >+ /. $Header >+ case $rule_number: >+ $setResult(new BasicEList<Object>()); >+ 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 >+ /./** >+ * Essential OCL Grammar >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Elimination of some shift-reduce conflicts >+ * E.D.Willink - Remove unnecessary warning suppression >+ * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 >+ * Borland - Bug 242880 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+$copyright_contributions >+ * </copyright> >+ * >+ * $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ >+ */ >+ ./ >+%End >+ >+%Globals >+ /.import org.eclipse.emf.common.util.BasicEList; >+ import org.eclipse.emf.common.util.EList; >+ import org.eclipse.ocl.cst.BooleanLiteralExpCS; >+ import org.eclipse.ocl.cst.CSTNode; >+ import org.eclipse.ocl.cst.CallExpCS; >+ import org.eclipse.ocl.cst.CollectionLiteralExpCS; >+ import org.eclipse.ocl.cst.CollectionLiteralPartCS; >+ import org.eclipse.ocl.cst.CollectionTypeCS; >+ import org.eclipse.ocl.cst.CollectionTypeIdentifierEnum; >+ import org.eclipse.ocl.cst.FeatureCallExpCS; >+ import org.eclipse.ocl.cst.IfExpCS; >+ import org.eclipse.ocl.cst.IntegerLiteralExpCS; >+ import org.eclipse.ocl.cst.InvalidLiteralExpCS; >+ import org.eclipse.ocl.cst.IsMarkedPreCS; >+ import org.eclipse.ocl.cst.IterateExpCS; >+ import org.eclipse.ocl.cst.IteratorExpCS; >+ import org.eclipse.ocl.cst.LetExpCS; >+ import org.eclipse.ocl.cst.NullLiteralExpCS; >+ import org.eclipse.ocl.cst.OCLExpressionCS; >+ import org.eclipse.ocl.cst.OperationCallExpCS; >+ import org.eclipse.ocl.cst.PathNameCS; >+ import org.eclipse.ocl.cst.PrimitiveTypeCS; >+ import org.eclipse.ocl.cst.RealLiteralExpCS; >+ import org.eclipse.ocl.cst.SimpleNameCS; >+ import org.eclipse.ocl.cst.SimpleTypeEnum; >+ import org.eclipse.ocl.cst.StringLiteralExpCS; >+ import org.eclipse.ocl.cst.TupleLiteralExpCS; >+ import org.eclipse.ocl.cst.TupleTypeCS; >+ import org.eclipse.ocl.cst.TypeCS; >+ import org.eclipse.ocl.cst.UnlimitedNaturalLiteralExpCS; >+ import org.eclipse.ocl.cst.VariableCS; >+ import org.eclipse.ocl.cst.VariableExpCS; >+ >+ import $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 >+-- Reserved keywords >+ and implies not or xor >+ if then else endif >+ let in >+ false true >+ null invalid >+ self >+ >+-- Restricted keywords >+ Bag Collection OrderedSet Sequence Set >+ Tuple >+ Boolean Integer Real String UnlimitedNatural >+ OclAny OclInvalid OclVoid >+%End >+ >+-- Terminals >+%Identifier >+ IDENTIFIER >+%End >+ >+%Terminals >+ >+ INTEGER_LITERAL REAL_LITERAL STRING_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 ::= '..' >+%End >+ >+%EOF >+ EOF_TOKEN >+%End >+ >+%ERROR >+ ERROR_TOKEN >+%End >+ >+%Headers >+ /.$parserCore >+ >+ ./ >+%End >+ >+%Rules >+ /.$BeginActions./ >+ >+----------------------------------------------------------------------- >+-- Names >+----------------------------------------------------------------------- >+-- Temporary backward compatibility support for 7.4.8 conceptual usage >+ conceptualOperationName -> and >+ conceptualOperationName -> implies >+ conceptualOperationName -> not >+ conceptualOperationName -> or >+ conceptualOperationName -> xor >+ conceptualOperationName -> '<' >+ conceptualOperationName -> '<=' >+ conceptualOperationName -> '>=' >+ conceptualOperationName -> '>' >+ conceptualOperationName -> '=' >+ conceptualOperationName -> '<>' >+ conceptualOperationName -> '+' >+ conceptualOperationName -> '-' >+ conceptualOperationName -> '*' >+ conceptualOperationName -> '/' >+ conceptualOperationNameCS ::= conceptualOperationName >+ /.$BeginCode >+ IToken iToken = getIToken($getToken(1)); >+ SimpleNameCS result = createConceptualOperationNameCS(iToken); >+ setOffsets(result, iToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ reservedKeyword -> and >+ reservedKeyword -> else >+ reservedKeyword -> endif >+ reservedKeyword -> if >+ reservedKeyword -> implies >+ reservedKeyword -> in >+ reservedKeyword -> let >+ reservedKeyword -> not >+ reservedKeyword -> or >+ reservedKeyword -> then >+ reservedKeyword -> xor >+ >+ tupleKeywordCS ::= Tuple >+ /.$NewCase./ >+ reservedKeywordCS ::= reservedKeyword >+ /.$BeginCode >+ IToken iToken = getIToken($getToken(1)); >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.KEYWORD_LITERAL, >+ iToken >+ ); >+ setOffsets(result, iToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ restrictedKeywordCS -> CollectionTypeIdentifierCS >+-- restrictedKeywordCS -> BooleanLiteralExpCS >+-- restrictedKeywordCS -> InvalidLiteralExpCS >+-- restrictedKeywordCS -> NullLiteralExpCS >+-- restrictedKeywordCS -> selfKeywordCS >+ restrictedKeywordCS -> primitiveTypeCS >+ restrictedKeywordCS -> tupleKeywordCS >+ >+ selfKeywordCS ::= self >+ /.$BeginCode >+ IToken iToken = getIToken($getToken(1)); >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.SELF_LITERAL, >+ iToken >+ ); >+ setOffsets(result, iToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ simpleNameCS ::= IDENTIFIER >+ /.$BeginCode >+ IToken iToken = getIToken($getToken(1)); >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.IDENTIFIER_LITERAL, >+ iToken >+ ); >+ setOffsets(result, iToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ unreservedSimpleNameCS -> simpleNameCS >+ unreservedSimpleNameCS -> restrictedKeywordCS >+ >+ pathNameCS ::= simpleNameCS >+ /.$BeginCode >+ SimpleNameCS simpleName = (SimpleNameCS)$getSym(1); >+ PathNameCS result = createPathNameCS(simpleName); >+ setOffsets(result, simpleName); >+ $setResult(result); >+ $EndCode >+ ./ >+ pathNameCS ::= pathNameCS '::' unreservedSimpleNameCS >+ /.$BeginCode >+ PathNameCS result = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ result = extendPathNameCS(result, simpleNameCS); >+ setOffsets(result, result, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Types >+----------------------------------------------------------------------- >+ primitiveTypeCS ::= Boolean >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.BOOLEAN_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= Integer >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.INTEGER_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= Real >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.REAL_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= String >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.STRING_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= UnlimitedNatural >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.UNLIMITED_NATURAL_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ primitiveTypeCS ::= OclAny >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_ANY_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= OclInvalid >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_INVALID_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ primitiveTypeCS ::= OclVoid >+ /.$BeginCode >+ PrimitiveTypeCS result = createPrimitiveTypeCS( >+ SimpleTypeEnum.OCL_VOID_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ CollectionTypeIdentifierCS ::= Set >+ /.$BeginCode >+ SimpleNameCS result = createCollectionTypeCS( >+ CollectionTypeIdentifierEnum.SET_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ CollectionTypeIdentifierCS ::= Bag >+ /.$BeginCode >+ SimpleNameCS result = createCollectionTypeCS( >+ CollectionTypeIdentifierEnum.BAG_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ CollectionTypeIdentifierCS ::= Sequence >+ /.$BeginCode >+ SimpleNameCS result = createCollectionTypeCS( >+ CollectionTypeIdentifierEnum.SEQUENCE_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ CollectionTypeIdentifierCS ::= Collection >+ /.$BeginCode >+ SimpleNameCS result = createCollectionTypeCS( >+ CollectionTypeIdentifierEnum.COLLECTION_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ CollectionTypeIdentifierCS ::= OrderedSet >+ /.$BeginCode >+ SimpleNameCS result = createCollectionTypeCS( >+ CollectionTypeIdentifierEnum.ORDERED_SET_LITERAL, >+ getTokenText($getToken(1)) >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ typeCS -> primitiveTypeCS >+ typeCS -> pathNameCS >+ typeCS -> collectionTypeCS >+ typeCS -> tupleTypeCS >+ >+ collectionTypeCS ::= CollectionTypeIdentifierCS '(' typeCS ')' >+ /.$BeginCode >+ CollectionTypeCS result = (CollectionTypeCS)$getSym(1); >+ result.setTypeCS((TypeCS)$getSym(3)); >+ setOffsets(result, result, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ tupleTypeCS ::= Tuple '(' tupleTypePartsCSopt ')' >+ /.$BeginCode >+ TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)$getSym(3)); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ tupleTypePartsCSopt ::= %empty >+ /.$BeginCode >+ $setResult(new BasicEList<VariableCS>()); >+ $EndCode >+ ./ >+ tupleTypePartsCSopt -> tupleTypePartsCS >+ >+ tupleTypePartsCS ::= typedUninitializedVariableCS >+ /.$BeginCode >+ EList<VariableCS> result = new BasicEList<VariableCS>(); >+ result.add((VariableCS)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ tupleTypePartsCS ::= tupleTypePartsCS ',' typedUninitializedVariableCS >+ /.$BeginCode >+ EList<VariableCS> result = (EList<VariableCS>)$getSym(1); >+ result.add((VariableCS)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Declarations >+----------------------------------------------------------------------- >+ untypedUninitializedVariableCS ::= simpleNameCS >+ /.$BeginCode >+ SimpleNameCS name = (SimpleNameCS)$getSym(1); >+ VariableCS result = createVariableCS(name, null, null); >+ setOffsets(result, name); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ typedUninitializedVariableCS ::= simpleNameCS ':' typeCS >+ /.$BeginCode >+ SimpleNameCS name = (SimpleNameCS)$getSym(1); >+ TypeCS type = (TypeCS)$getSym(3); >+ VariableCS result = createVariableCS(name, type, null); >+ setOffsets(result, name, type); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ untypedInitializedVariableCS ::= simpleNameCS '=' OclExpressionCS >+ /.$BeginCode >+ SimpleNameCS name = (SimpleNameCS)$getSym(1); >+ OCLExpressionCS initExpression = (OCLExpressionCS)$getSym(3); >+ VariableCS result = createVariableCS(name, null, initExpression); >+ setOffsets(result, name, initExpression); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ typedInitializedVariableCS ::= simpleNameCS ':' typeCS '=' OclExpressionCS >+ /.$BeginCode >+ SimpleNameCS name = (SimpleNameCS)$getSym(1); >+ TypeCS type = (TypeCS)$getSym(3); >+ OCLExpressionCS initExpression = (OCLExpressionCS)$getSym(5); >+ VariableCS result = createVariableCS(name, type, initExpression); >+ setOffsets(result, name, initExpression); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ initializedVariableCS -> untypedInitializedVariableCS >+ initializedVariableCS -> typedInitializedVariableCS >+ >+ uninitializedVariableCS -> untypedUninitializedVariableCS >+ uninitializedVariableCS -> typedUninitializedVariableCS >+ >+ VariableDeclarationCS -> untypedUninitializedVariableCS >+ VariableDeclarationCS -> untypedInitializedVariableCS >+ VariableDeclarationCS -> typedUninitializedVariableCS >+ VariableDeclarationCS -> typedInitializedVariableCS >+ >+----------------------------------------------------------------------- >+-- Literals >+----------------------------------------------------------------------- >+-- EnumLiteralExpCS is parsed as a PropertyCallExpCS[C] >+-- LiteralExpCS -> EnumLiteralExpCS >+ LiteralExpCS -> CollectionLiteralExpCS >+ LiteralExpCS -> TupleLiteralExpCS >+ LiteralExpCS -> PrimitiveLiteralExpCS >+ LiteralExpCS -> TypeLiteralExpCS >+ >+ CollectionLiteralExpCS ::= CollectionTypeIdentifierCS >+ '{' CollectionLiteralPartsCSopt '}' >+ /.$BeginCode >+ CollectionTypeCS typeCS = (CollectionTypeCS)$getSym(1); >+ CollectionLiteralExpCS result = createCollectionLiteralExpCS( >+ typeCS, >+ (EList<CollectionLiteralPartCS>)$getSym(3) >+ ); >+ setOffsets(result, typeCS, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ CollectionLiteralExpCS ::= collectionTypeCS '{' CollectionLiteralPartsCSopt '}' >+ /.$BeginCode >+ CollectionTypeCS typeCS = (CollectionTypeCS)$getSym(1); >+ CollectionLiteralExpCS result = createCollectionLiteralExpCS( >+ typeCS, >+ (EList<CollectionLiteralPartCS>)$getSym(3) >+ ); >+ setOffsets(result, typeCS, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ CollectionLiteralPartsCSopt ::= %empty >+ /.$BeginCode >+ $setResult(new BasicEList<CollectionLiteralPartCS>()); >+ $EndCode >+ ./ >+ CollectionLiteralPartsCSopt -> CollectionLiteralPartsCS >+ >+ CollectionLiteralPartsCS ::= CollectionLiteralPartCS >+ /.$BeginCode >+ EList<CollectionLiteralPartCS> result = new BasicEList<CollectionLiteralPartCS>(); >+ result.add((CollectionLiteralPartCS)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ CollectionLiteralPartsCS ::= CollectionLiteralPartsCS ',' CollectionLiteralPartCS >+ /.$BeginCode >+ EList<CollectionLiteralPartCS> result = (EList<CollectionLiteralPartCS>)$getSym(1); >+ result.add((CollectionLiteralPartCS)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ CollectionLiteralPartCS -> CollectionRangeCS >+ CollectionLiteralPartCS ::= OclExpressionCS >+ /.$BeginCode >+ CollectionLiteralPartCS result = createCollectionLiteralPartCS( >+ (OCLExpressionCS)$getSym(1) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ CollectionRangeCS ::= OclExpressionCS '..' OclExpressionCS >+ /.$BeginCode >+ CollectionLiteralPartCS result = createCollectionRangeCS( >+ (OCLExpressionCS)$getSym(1), >+ (OCLExpressionCS)$getSym(3) >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ PrimitiveLiteralExpCS -> IntegerLiteralExpCS >+ PrimitiveLiteralExpCS -> RealLiteralExpCS >+ PrimitiveLiteralExpCS -> StringLiteralExpCS >+ PrimitiveLiteralExpCS -> BooleanLiteralExpCS >+ PrimitiveLiteralExpCS -> UnlimitedNaturalLiteralExpCS >+ PrimitiveLiteralExpCS -> InvalidLiteralExpCS >+ PrimitiveLiteralExpCS -> NullLiteralExpCS >+ >+ TupleLiteralExpCS ::= Tuple '{' TupleLiteralPartsCS '}' >+ /.$BeginCode >+ TupleLiteralExpCS result = createTupleLiteralExpCS((EList<VariableCS>)$getSym(3)); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ TupleLiteralPartsCS ::= initializedVariableCS >+ /.$BeginCode >+ EList<VariableCS> result = new BasicEList<VariableCS>(); >+ result.add((VariableCS)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ TupleLiteralPartsCS ::= TupleLiteralPartsCS ',' initializedVariableCS >+ /.$BeginCode >+ EList<VariableCS> result = (EList<VariableCS>)$getSym(1); >+ result.add((VariableCS)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ IntegerLiteralExpCS ::= INTEGER_LITERAL >+ /.$BeginCode >+ IntegerLiteralExpCS result = createIntegerLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ RealLiteralExpCS ::= REAL_LITERAL >+ /.$BeginCode >+ RealLiteralExpCS 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); >+ setOffsets(result, literalToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ StringLiteralExpCS ::= StringLiteralExpCS STRING_LITERAL >+ /.$BeginCode >+ StringLiteralExpCS string = (StringLiteralExpCS)$getSym(1); >+ IToken literalToken = getIToken($getToken(2)); >+ StringLiteralExpCS result = extendStringLiteralExpCS(string, literalToken); >+ setOffsets(result, string, literalToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ BooleanLiteralExpCS ::= true >+ /.$BeginCode >+ BooleanLiteralExpCS result = createBooleanLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ BooleanLiteralExpCS ::= false >+ /.$BeginCode >+ BooleanLiteralExpCS result = createBooleanLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ UnlimitedNaturalLiteralExpCS ::= '*' >+ /.$BeginCode >+ UnlimitedNaturalLiteralExpCS result = createUnlimitedNaturalLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ InvalidLiteralExpCS ::= invalid >+ /.$BeginCode >+ InvalidLiteralExpCS result = createInvalidLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ NullLiteralExpCS ::= null >+ /.$BeginCode >+ NullLiteralExpCS result = createNullLiteralExpCS(getTokenText($getToken(1))); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ -- unqualified pathNameCS is parsed as SimpleNameExpCS >+ -- qualified pathNameCS is parsed as PropertyCallExpCS[C] >+ TypeLiteralExpCS ::= primitiveTypeCS >+ /.$NewCase./ >+ TypeLiteralExpCS ::= collectionTypeCS >+ /.$NewCase./ >+ TypeLiteralExpCS ::= tupleTypeCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ VariableExpCS result = createVariableExpCS( >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ null >+ ); >+ setOffsets(result, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Calls >+----------------------------------------------------------------------- >+ CallExpCS -> FeatureCallExpCS >+ CallExpCS -> LoopExpCS >+ >+ LoopExpCS -> IteratorExpCS >+ LoopExpCS -> IterateExpCS >+ >+-- IteratorExpCS[A.1] is parsed as OperationCallExpCS[B] >+ IteratorExpCS ::= -- [A.2] >+ primaryExpCS '->' simpleNameCS >+ '(' uninitializedVariableCS '|' OclExpressionCS ')' >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IteratorExpCS result = createIteratorExpCS( >+ source, >+ simpleNameCS, >+ (VariableCS)$getSym(5), >+ null, >+ (OCLExpressionCS)$getSym(7) >+ ); >+ setOffsets(result, source, getIToken($getToken(8))); >+ $setResult(result); >+ $EndCode >+ ./ >+ IteratorExpCS ::= -- [A.3.1] >+ primaryExpCS '->' simpleNameCS >+ '(' simpleNameCS ',' uninitializedVariableCS '|' OclExpressionCS ')' >+ /.$BeginCode >+ SimpleNameCS name = (SimpleNameCS)$getSym(5); >+ VariableCS variableCS = createVariableCS(name, null, null); >+ setOffsets(variableCS, name); >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IteratorExpCS result = createIteratorExpCS( >+ source, >+ simpleNameCS, >+ variableCS, >+ (VariableCS)$getSym(7), >+ (OCLExpressionCS)$getSym(9) >+ ); >+ setOffsets(result, source, getIToken($getToken(10))); >+ $setResult(result); >+ $EndCode >+ ./ >+ IteratorExpCS ::= -- [A.3.2] >+ primaryExpCS '->' simpleNameCS '(' typedUninitializedVariableCS ',' >+ uninitializedVariableCS '|' OclExpressionCS ')' >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IteratorExpCS result = createIteratorExpCS( >+ source, >+ simpleNameCS, >+ (VariableCS)$getSym(5), >+ (VariableCS)$getSym(7), >+ (OCLExpressionCS)$getSym(9) >+ ); >+ setOffsets(result, source, getIToken($getToken(10))); >+ $setResult(result); >+ $EndCode >+ ./ >+-- IteratorExpCS[B] is parsed as OperationCallExpCS[C] >+-- IteratorExpCS[C] is parsed as AssociationClassCallExpCS[A.1] >+-- IteratorExpCS[D] is parsed as AssociationClassCallExpCS[A] >+-- IteratorExpCS[E] is parsed as AssociationClassCallExpCS[A] >+ >+ IterateExpCS ::= primaryExpCS '->' simpleNameCS >+ '(' typedInitializedVariableCS '|' OclExpressionCS ')' >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IterateExpCS result = createIterateExpCS( >+ source, >+ simpleNameCS, >+ (VariableCS)$getSym(5), >+ null, >+ (OCLExpressionCS)$getSym(7) >+ ); >+ setOffsets(result, source, getIToken($getToken(8))); >+ $setResult(result); >+ $EndCode >+ ./ >+ IterateExpCS ::= primaryExpCS '->' simpleNameCS >+ '(' uninitializedVariableCS ';' typedInitializedVariableCS '|' OclExpressionCS ')' >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IterateExpCS result = createIterateExpCS( >+ source, >+ simpleNameCS, >+ (VariableCS)$getSym(5), >+ (VariableCS)$getSym(7), >+ (OCLExpressionCS)$getSym(9) >+ ); >+ setOffsets(result, source, getIToken($getToken(10))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ FeatureCallExpCS -> OperationCallExpCS >+ FeatureCallExpCS -> PropertyCallExpCS >+ FeatureCallExpCS -> NavigationCallExpCS >+ >+-- OperationCallExpCS[A] is realized by the infix OclExpressionCS productions >+ OperationCallExpCS ::= -- [B.1] >+ primaryExpCS '->' simpleNameCS '(' ')' >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ OperationCallExpCS result = createArrowOperationCallExpCS( >+ source, >+ (SimpleNameCS)$getSym(3), >+ null, >+ new BasicEList<OCLExpressionCS>() >+ ); >+ setOffsets(result, source, getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ OperationCallExpCS ::= -- [B.2],IteratorExpCS[A.1] >+ primaryExpCS '->' simpleNameCS '(' OclExpressionCS ')' >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ OCLExpressionCS arg = (OCLExpressionCS)$getSym(5); >+ OCLExpressionCS result; >+ if (isIterator(simpleNameCS.getValue())) { >+ result = createIteratorExpCS( >+ source, >+ simpleNameCS, >+ null, >+ null, >+ arg >+ ); >+ } >+ else { >+ EList<OCLExpressionCS> args = new BasicEList<OCLExpressionCS>(); >+ args.add(arg); >+ result = createArrowOperationCallExpCS( >+ source, >+ simpleNameCS, >+ null, >+ args >+ ); >+ } >+ setOffsets(result, source, getIToken($getToken(6))); >+ $setResult(result); >+ $EndCode >+ ./ >+ OperationCallExpCS ::= -- [B.3.1] >+ primaryExpCS '->' simpleNameCS '(' notNameExpressionCS ',' argumentsCS ')' >+ /.$BeginCode >+ EList<OCLExpressionCS> args = (EList<OCLExpressionCS>)$getSym(7); >+ args.add(0, (OCLExpressionCS)$getSym(5)); >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ OperationCallExpCS result = createArrowOperationCallExpCS( >+ source, >+ (SimpleNameCS)$getSym(3), >+ null, >+ args >+ ); >+ setOffsets(result, source, getIToken($getToken(8))); >+ $setResult(result); >+ $EndCode >+ ./ >+ OperationCallExpCS ::= -- [B.3.2] >+ primaryExpCS '->' simpleNameCS '(' simpleNameCS ',' argumentsCS ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(5); >+ OCLExpressionCS variableExpCS = createVariableExpCS( >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ null >+ ); >+ setOffsets(variableExpCS, simpleNameCS); >+ EList<OCLExpressionCS> args = (EList<OCLExpressionCS>)$getSym(7); >+ args.add(0, variableExpCS); >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ OperationCallExpCS result = createArrowOperationCallExpCS( >+ source, >+ (SimpleNameCS)$getSym(3), >+ null, >+ args >+ ); >+ setOffsets(result, source, getIToken($getToken(8))); >+ $setResult(result); >+ $EndCode >+ ./ >+ OperationCallExpCS ::= >+ primaryExpCS '.' conceptualOperationNameCS isMarkedPreCSopt '(' argumentsCSopt ')' >+ /.$NewCase./ >+ OperationCallExpCS ::= -- [C],[E],IteratorExpCS[B] >+ primaryExpCS '.' simpleNameCS isMarkedPreCSopt '(' argumentsCSopt ')' >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ CallExpCS result = createDotOperationCallExpCS( >+ source, >+ null, >+ simpleNameCS, >+ (IsMarkedPreCS)$getSym(4), >+ (EList<OCLExpressionCS>)$getSym(6) >+ ); >+ setOffsets(result, source, getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ OperationCallExpCS ::= -- [D],[F],[G.1] >+ simpleNameCS isMarkedPreCSopt '(' argumentsCSopt ')' >+ /.$BeginCode >+ OperationCallExpCS result = createDotOperationCallExpCS( >+ null, >+ null, >+ (SimpleNameCS)$getSym(1), >+ (IsMarkedPreCS)$getSym(2), >+ (EList<OCLExpressionCS>)$getSym(4) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ OperationCallExpCS ::= -- [G.2] >+ pathNameCS '::' unreservedSimpleNameCS '(' argumentsCSopt ')' >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ OperationCallExpCS result = createDotOperationCallExpCS( >+ null, >+ pathNameCS, >+ simpleNameCS, >+ null, >+ (EList<OCLExpressionCS>)$getSym(5) >+ ); >+ setOffsets(result, pathNameCS, getIToken($getToken(6))); >+ $setResult(result); >+ $EndCode >+ ./ >+-- OperationCallExpCS[H] is realized by the prefix OclExpressionCS productions >+ OperationCallExpCS ::= -- [I],[J] >+ primaryExpCS '.' pathNameCS '::' unreservedSimpleNameCS isMarkedPreCSopt >+ '(' argumentsCSopt ')' >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(3); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(5); >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ CallExpCS result = createDotOperationCallExpCS( >+ source, >+ pathNameCS, >+ simpleNameCS, >+ (IsMarkedPreCS)$getSym(6), >+ (EList<OCLExpressionCS>)$getSym(8) >+ ); >+ setOffsets(result, source, getIToken($getToken(9))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+-- NavigationCallExpCS -> PropertyCallExpCS -- parsed as FeatureCallExpCS >+ NavigationCallExpCS -> AssociationClassCallExpCS >+ >+-- PropertyCallExpCS[A] is parsed as AssociationClassCallExpCS[A.1] >+-- PropertyCallExpCS[B.1] is parsed as a SimpleNameExpCS >+-- PropertyCallExpCS[B.2] is parsed as a AssociationClassCallExpCS[B.1] >+ PropertyCallExpCS ::= -- [C] excluding [B] >+ pathNameCS '::' unreservedSimpleNameCS isMarkedPreCSopt >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(4); >+ FeatureCallExpCS result = createFeatureCallExpCS( >+ null, >+ pathNameCS, >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, pathNameCS, isMarkedPreCS); >+ } else { >+ setOffsets(result, pathNameCS, simpleNameCS); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ PropertyCallExpCS ::= -- [D] >+ primaryExpCS '.' pathNameCS '::' unreservedSimpleNameCS isMarkedPreCSopt >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ PathNameCS pathNameCS = (PathNameCS)$getSym(3); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(5); >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(6); >+ FeatureCallExpCS result = createFeatureCallExpCS( >+ source, >+ pathNameCS, >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, source, isMarkedPreCS); >+ } else { >+ setOffsets(result, source, simpleNameCS); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ AssociationClassCallExpCS ::= -- [A.1],PropertyCallExpCS[A],IteratorExpCS[C,D,E] >+ primaryExpCS '.' simpleNameCS isMarkedPreCSopt >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(4); >+ FeatureCallExpCS result = createFeatureCallExpCS( >+ source, >+ null, >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, source, isMarkedPreCS); >+ } else { >+ setOffsets(result, source, simpleNameCS); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ AssociationClassCallExpCS ::= -- [A.2],IteratorExpCS[D,E] >+ primaryExpCS '.' simpleNameCS '[' argumentsCS ']' isMarkedPreCSopt >+ /.$BeginCode >+ OCLExpressionCS source = (OCLExpressionCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(7); >+ FeatureCallExpCS result = createFeatureCallExpCS( >+ source, >+ null, >+ simpleNameCS, >+ (EList<OCLExpressionCS>)$getSym(5), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, source, isMarkedPreCS); >+ } else { >+ setOffsets(result, source, getIToken($getToken(6))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+-- AssociationClassCallExpCS[B.1.1] parsed as SimpleNameExpCS >+-- AssociationClassCallExpCS[B.1.2] is added by Complete OCL >+ AssociationClassCallExpCS ::= -- [B.2] >+ simpleNameCS '[' argumentsCS ']' isMarkedPreCSopt >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(5); >+ VariableExpCS result = createVariableExpCS( >+ simpleNameCS, >+ (EList<OCLExpressionCS>)$getSym(3), >+ isMarkedPreCS >+ ); >+ if (isMarkedPreCS != null) { >+ setOffsets(result, simpleNameCS, isMarkedPreCS); >+ } else { >+ setOffsets(result, simpleNameCS, getIToken($getToken(4))); >+ } >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ isMarkedPreCSopt ::= %empty >+ /.$BeginCode >+ $setResult(null); >+ $EndCode >+ ./ >+ >+ argumentsCSopt ::= %empty >+ /.$BeginCode >+ $setResult(new BasicEList<OCLExpressionCS>()); >+ $EndCode >+ ./ >+ argumentsCSopt -> argumentsCS >+ >+ argumentsCS ::= OclExpressionCS >+ /.$BeginCode >+ EList<OCLExpressionCS> result = new BasicEList<OCLExpressionCS>(); >+ result.add((OCLExpressionCS)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ argumentsCS ::= argumentsCS ',' OclExpressionCS >+ /.$BeginCode >+ EList<OCLExpressionCS> result = (EList<OCLExpressionCS>)$getSym(1); >+ result.add((OCLExpressionCS)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Expressions >+----------------------------------------------------------------------- >+ -- An OclExpressionCS comprising just a SimpleNameCS is kept separate as >+ -- SimpleNameExpCS to avoid ambiguity when parsing "a->b(c,d" until the next >+ -- letter resolves the usage as a two iterator or as a two or more argument >+ -- OperationCallExpCS. >+ -- An OclExpressionCS comprising one or more LetExpCS is kept separate to ensure >+ -- that let is right associative, whereas infix operators are left associative. >+ -- a = 64 / 16 / let b : Integer in 8 / let c : Integer in 4 >+ -- is >+ -- a = (64 / 16) / (let b : Integer in 8 / (let c : Integer in 4 )) >+ OclExpressionCS -> notNameExpressionCS >+ OclExpressionCS -> SimpleNameExpCS >+ >+-- VariableExpCS[.1] simpleNameCS parsed as SimpleNameExpCS >+ VariableExpCS ::= -- [.2] >+ selfKeywordCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ VariableExpCS result = createVariableExpCS( >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ null >+ ); >+ setOffsets(result, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ SimpleNameExpCS ::= -- AssociationClassCallExpCS[B.1.1], >+ -- PropertyCallExpCS[B],VariableExpCS[.1] >+ simpleNameCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); >+ VariableExpCS result = createVariableExpCS( >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>(), >+ null >+ ); >+ setOffsets(result, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ notNameExpressionCS -> impliesNotNameNotLetCS >+ notNameExpressionCS -> impliesWithLetCS >+ >+ impliesNotLetCS -> impliesNotNameNotLetCS >+ impliesNotLetCS -> SimpleNameExpCS >+ impliesNotNameNotLetCS -> xorNotNameNotLetCS >+ impliesNotNameNotLetCS ::= impliesNotLetCS implies xorNotLetCS >+ /.$NewCase./ >+ impliesWithLetCS -> xorWithLetCS >+ impliesWithLetCS ::= impliesNotLetCS implies xorWithLetCS >+ /.$NewCase./ >+ >+ xorNotLetCS -> xorNotNameNotLetCS >+ xorNotLetCS -> SimpleNameExpCS >+ xorNotNameNotLetCS -> orNotNameNotLetCS >+ xorNotNameNotLetCS ::= xorNotLetCS xor orNotLetCS >+ /.$NewCase./ >+ xorWithLetCS -> orWithLetCS >+ xorWithLetCS ::= xorNotLetCS xor orWithLetCS >+ /.$NewCase./ >+ >+ orNotLetCS -> orNotNameNotLetCS >+ orNotLetCS -> SimpleNameExpCS >+ orNotNameNotLetCS -> andNotNameNotLetCS >+ orNotNameNotLetCS ::= orNotLetCS or andNotLetCS >+ /.$NewCase./ >+ orWithLetCS -> andWithLetCS >+ orWithLetCS ::= orNotLetCS or andWithLetCS >+ /.$NewCase./ >+ >+ andNotLetCS -> andNotNameNotLetCS >+ andNotLetCS -> SimpleNameExpCS >+ andNotNameNotLetCS -> equalityNotNameNotLetCS >+ andNotNameNotLetCS ::= andNotLetCS and equalityNotLetCS >+ /.$NewCase./ >+ andWithLetCS -> equalityWithLetCS >+ andWithLetCS ::= andNotLetCS and equalityWithLetCS >+ /.$NewCase./ >+ >+ equalityNotLetCS -> equalityNotNameNotLetCS >+ equalityNotLetCS -> SimpleNameExpCS >+ equalityNotNameNotLetCS -> relationalNotNameNotLetCS >+ equalityNotNameNotLetCS ::= equalityNotLetCS '=' relationalNotLetCS >+ /.$NewCase./ >+ equalityNotNameNotLetCS ::= equalityNotLetCS '<>' relationalNotLetCS >+ /.$NewCase./ >+ equalityWithLetCS -> relationalWithLetCS >+ equalityWithLetCS ::= equalityNotLetCS '=' relationalWithLetCS >+ /.$NewCase./ >+ equalityWithLetCS ::= equalityNotLetCS '<>' relationalWithLetCS >+ /.$NewCase./ >+ >+ relationalNotLetCS -> relationalNotNameNotLetCS >+ relationalNotLetCS -> SimpleNameExpCS >+ relationalNotNameNotLetCS -> additiveNotNameNotLetCS >+ relationalNotNameNotLetCS ::= relationalNotLetCS '>' additiveNotLetCS >+ /.$NewCase./ >+ relationalNotNameNotLetCS ::= relationalNotLetCS '<' additiveNotLetCS >+ /.$NewCase./ >+ relationalNotNameNotLetCS ::= relationalNotLetCS '>=' additiveNotLetCS >+ /.$NewCase./ >+ relationalNotNameNotLetCS ::= relationalNotLetCS '<=' additiveNotLetCS >+ /.$NewCase./ >+ relationalWithLetCS -> additiveWithLetCS >+ relationalWithLetCS ::= relationalNotLetCS '>' additiveWithLetCS >+ /.$NewCase./ >+ relationalWithLetCS ::= relationalNotLetCS '<' additiveWithLetCS >+ /.$NewCase./ >+ relationalWithLetCS ::= relationalNotLetCS '>=' additiveWithLetCS >+ /.$NewCase./ >+ relationalWithLetCS ::= relationalNotLetCS '<=' additiveWithLetCS >+ /.$NewCase./ >+ >+ additiveNotLetCS -> additiveNotNameNotLetCS >+ additiveNotLetCS -> SimpleNameExpCS >+ additiveNotNameNotLetCS -> multiplicativeNotNameNotLetCS >+ additiveNotNameNotLetCS ::= additiveNotLetCS '+' multiplicativeNotLetCS >+ /.$NewCase./ >+ additiveNotNameNotLetCS ::= additiveNotLetCS '-' multiplicativeNotLetCS >+ /.$NewCase./ >+ additiveWithLetCS -> multiplicativeWithLetCS >+ additiveWithLetCS ::= additiveNotLetCS '+' multiplicativeWithLetCS >+ /.$NewCase./ >+ additiveWithLetCS ::= additiveNotLetCS '-' multiplicativeWithLetCS >+ /.$NewCase./ >+ >+ multiplicativeNotLetCS -> multiplicativeNotNameNotLetCS >+ multiplicativeNotLetCS -> SimpleNameExpCS >+ multiplicativeNotNameNotLetCS -> unaryNotNameNotLetCS >+ multiplicativeNotNameNotLetCS ::= multiplicativeNotLetCS '*' unaryNotLetCS >+ /.$NewCase./ >+ multiplicativeNotNameNotLetCS ::= multiplicativeNotLetCS '/' unaryNotLetCS >+ /.$NewCase./ >+ multiplicativeWithLetCS -> unaryWithLetCS >+ multiplicativeWithLetCS ::= multiplicativeNotLetCS '*' unaryWithLetCS >+ /.$NewCase./ >+ multiplicativeWithLetCS ::= multiplicativeNotLetCS '/' unaryWithLetCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.KEYWORD_LITERAL, >+ getIToken($getToken(2)) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(2))); >+ OCLExpressionCS left = (OCLExpressionCS)$getSym(1); >+ OCLExpressionCS right = (OCLExpressionCS)$getSym(3); >+ EList<OCLExpressionCS> args = new BasicEList<OCLExpressionCS>(); >+ args.add(right); >+ OperationCallExpCS result = createOperationCallExpCS( >+ left, >+ simpleNameCS, >+ args >+ ); >+ setOffsets(result, left, right); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ unaryNotLetCS -> unaryNotNameNotLetCS >+ unaryNotLetCS -> SimpleNameExpCS >+ unaryNotNameNotLetCS -> primaryNotNameCS >+ unaryNotNameNotLetCS ::= '-' unaryNotLetCS >+ /.$NewCase./ >+ unaryNotNameNotLetCS ::= not unaryNotLetCS >+ /.$NewCase./ >+ unaryWithLetCS -> LetExpCS -- OclExpressionCS[D] >+ unaryWithLetCS ::= '-' unaryWithLetCS >+ /.$NewCase./ >+ unaryWithLetCS ::= not unaryWithLetCS >+ /.$BeginCode >+ SimpleNameCS simpleNameCS = createSimpleNameCS( >+ SimpleTypeEnum.KEYWORD_LITERAL, >+ getIToken($getToken(1)) >+ ); >+ setOffsets(simpleNameCS, getIToken($getToken(1))); >+ OCLExpressionCS expr = (OCLExpressionCS)$getSym(2); >+ OperationCallExpCS result = createOperationCallExpCS( >+ expr, >+ simpleNameCS, >+ new BasicEList<OCLExpressionCS>() >+ ); >+ setOffsets(result, simpleNameCS, expr); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ primaryExpCS -> primaryNotNameCS >+ primaryExpCS -> SimpleNameExpCS >+ >+ primaryNotNameCS -> CallExpCS -- OclExpressionCS[A] >+ primaryNotNameCS -> VariableExpCS -- OclExpressionCS[B] >+ primaryNotNameCS -> LiteralExpCS -- OclExpressionCS[C] >+-- primaryNotNameCS -> OclMessageExpCS -- OclExpressionCS[E] is added by Complete OCL >+ primaryNotNameCS -> IfExpCS -- OclExpressionCS[F] >+ primaryNotNameCS ::= '(' OclExpressionCS ')' >+ /.$BeginCode >+ OCLExpressionCS result = (OCLExpressionCS)$getSym(2); >+ if (result instanceof OperationCallExpCS) { >+ ((OperationCallExpCS)result).setIsAtomic(true); >+ } >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ IfExpCS ::= if OclExpressionCS then OclExpressionCS else OclExpressionCS endif >+ /.$BeginCode >+ IfExpCS result = createIfExpCS( >+ (OCLExpressionCS)$getSym(2), >+ (OCLExpressionCS)$getSym(4), >+ (OCLExpressionCS)$getSym(6) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ LetExpCS ::= let letVariablesCS in OclExpressionCS >+ /.$BeginCode >+ OCLExpressionCS expr = (OCLExpressionCS)$getSym(4); >+ LetExpCS result = createLetExpCS( >+ (EList<VariableCS>)$getSym(2), >+ expr >+ ); >+ setOffsets(result, getIToken($getToken(1)), expr); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ letVariablesCS ::= typedInitializedVariableCS >+ /.$BeginCode >+ EList<VariableCS> result = new BasicEList<VariableCS>(); >+ result.add((VariableCS)$getSym(1)); >+ $setResult(result); >+ $EndCode >+ ./ >+ letVariablesCS ::= letVariablesCS ',' typedInitializedVariableCS >+ /.$BeginCode >+ EList<VariableCS> result = (EList<VariableCS>)$getSym(1); >+ result.add((VariableCS)$getSym(3)); >+ $setResult(result); >+ $EndCode >+ ./ >+%End >+ >+%Trailers >+ /. >+ $EndActions >+ } >+ ./ >+%End >Index: src/org/eclipse/ocl/parser/EssentialOCLKWLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/EssentialOCLKWLexer.gi >diff -N src/org/eclipse/ocl/parser/EssentialOCLKWLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/EssentialOCLKWLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,301 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: EssentialOCLKWLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ >+-- */ >+-- >+-- The Essential 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=("EssentialOCLParsersym.java", "TK_") >+%options include_directory="../lpg" >+ >+%Import >+ KWLexerMap.gi >+%End >+ >+%Define >+ >+ -- >+ -- Definition of macros used in the template >+ -- >+ $action_class /.$file_prefix./ >+ $eof_char /.Char_EOF./ >+ $copyright_contributions /.*./ >+ >+%End >+ >+%Notice >+ /./** >+ * Essential OCL Keyword Lexer >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+ * E.D.Willink - Bug 285633, 292112 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+$copyright_contributions >+ * </copyright> >+ * >+ * >+ */ >+ ./ >+%End >+ >+%Globals >+ /../ >+%End >+ >+%Export >+ self >+ if >+ then >+ else >+ endif >+ and >+ or >+ xor >+ not >+ implies >+ let >+ in >+ true >+ false >+ >+ null >+ invalid >+ >+ -- >+ -- 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 >+ >+ String >+ Integer >+ UnlimitedNatural >+ Real >+ Boolean >+ Tuple >+ OclAny >+ OclVoid >+ OclInvalid >+%End >+ >+%Start >+ KeyWord >+%End >+ >+%Rules >+ >+-- The Goal for the parser is a single Keyword >+ >+ KeyWord ::= >+ s e l f >+ /.$BeginAction >+ $setResult($_self); >+ $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 >+ ./ >+ >+ | S t r i n g >+ /.$BeginAction >+ $setResult($_String); >+ $EndAction >+ ./ >+ >+ | I n t e g e r >+ /.$BeginAction >+ $setResult($_Integer); >+ $EndAction >+ ./ >+ >+ | U n l i m i t e d N a t u r a l >+ /.$BeginAction >+ $setResult($_UnlimitedNatural); >+ $EndAction >+ ./ >+ >+ | R e a l >+ /.$BeginAction >+ $setResult($_Real); >+ $EndAction >+ ./ >+ >+ | B o o l e a n >+ /.$BeginAction >+ $setResult($_Boolean); >+ $EndAction >+ ./ >+ >+ | T u p l e >+ /.$BeginAction >+ $setResult($_Tuple); >+ $EndAction >+ ./ >+ >+ | O c l A n y >+ /.$BeginAction >+ $setResult($_OclAny); >+ $EndAction >+ ./ >+ >+ | O c l V o i d >+ /.$BeginAction >+ $setResult($_OclVoid); >+ $EndAction >+ ./ >+ >+ | O c l I n v a l i d >+ /.$BeginAction >+ $setResult($_OclInvalid); >+ $EndAction >+ ./ >+ >+ | n u l l >+ /.$BeginAction >+ $setResult($_null); >+ $EndAction >+ ./ >+ >+ | i n v a l i d >+ /.$BeginAction >+ $setResult($_invalid); >+ $EndAction >+ ./ >+%End >Index: src/org/eclipse/ocl/parser/EssentialOCLLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/EssentialOCLLexer.gi >diff -N src/org/eclipse/ocl/parser/EssentialOCLLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/EssentialOCLLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,543 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ >+-- */ >+-- >+-- The Essential 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=EssentialOCLKWLexer.gi >+%options export_terminals=("EssentialOCLParsersym.java", "TK_") >+%options include_directory="../lpg" >+ >+%Import >+ LexerBasicMap.gi >+%End >+ >+%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 /.EssentialOCLKWLexer./ >+ $copyright_contributions /.*./ >+ >+%End >+ >+%Notice >+ /./** >+ * Essential OCL Lexer >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+ * Borland - Bug 242880 >+ * E.D.Willink - Bug 292112 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+ $copyright_contributions >+ * </copyright> >+ * >+ * $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ >+ */ >+ ./ >+%End >+ >+%Globals >+ /.import $environment_import; >+ import org.eclipse.ocl.lpg.BasicEnvironment; >+ import org.eclipse.ocl.util.OCLUtil; >+ ./ >+%End >+ >+%Export >+ >+ IDENTIFIER >+ INTEGER_LITERAL >+ REAL_LITERAL >+ STRING_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 >+ >+ SINGLE_LINE_COMMENT >+ MULTI_LINE_COMMENT >+ >+%End >+ >+%Terminals >+ CtlCharNotWS >+ >+ LF CR HT FF >+ >+ a b c d e f g h i j k l m n o p q r s t u v w x y z >+ _ >+ >+ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z >+ >+ 0 1 2 3 4 5 6 7 8 9 >+ >+ AfterASCIINotAcute >+ Space ::= ' ' >+ LF ::= NewLine >+ CR ::= Return >+ HT ::= HorizontalTab >+ FF ::= FormFeed >+ DoubleQuote ::= '"' >+ SingleQuote ::= "'" >+ Percent ::= '%' >+ VerticalBar ::= '|' >+ Exclamation ::= '!' >+ AtSign ::= '@' >+ BackQuote ::= '`' >+ Acute ::= '�' >+ Tilde ::= '~' >+ Sharp ::= '#' >+ DollarSign ::= '$' >+ Ampersand ::= '&' >+ Caret ::= '^' >+ Colon ::= ':' >+ SemiColon ::= ';' >+ BackSlash ::= '\' >+ LeftBrace ::= '{' >+ RightBrace ::= '}' >+ LeftBracket ::= '[' >+ RightBracket ::= ']' >+ QuestionMark ::= '?' >+ Comma ::= ',' >+ Dot ::= '.' >+ LessThan ::= '<' >+ GreaterThan ::= '>' >+ Plus ::= '+' >+ Minus ::= '-' >+ Slash ::= '/' >+ Star ::= '*' >+ LeftParen ::= '(' >+ RightParen ::= ')' >+ Equal ::= '=' >+ >+%End >+ >+%Start >+ Token >+%End >+ >+%Rules >+ >+ --------------------- Rules for Scanned Tokens -------------------------------- >+ -- The lexer creates an array list of tokens which is defined in the PrsStream class. >+ -- A token has three attributes: a start offset, an end offset and a kind. >+ -- >+ -- Only rules that produce complete tokens have actions to create token objects. >+ -- When making a token, calls to the methods, $getToken(1) and $getRightSpan(), >+ -- provide the offsets (i.e. the span) of a rule's right hand side (rhs) and thus of the token. >+ -- For a rule of the form A ::= A1 A2 ... An, the start offset of the rhs of A is given by >+ -- $getToken(1) or by $getLeftSpan() and the end offset by $getRightSpan(). >+ -- >+ -- Regarding rules for parsing in general, note that for a rhs symbol Ai, the >+ -- method $getToken(i) returns the location of the leftmost character derived from Ai. >+ -- The method $getLeftSpan(i) returns the same location unless Ai produces %empty in which case >+ -- it returns the location of the last character derived before reducing Ai to %empty. >+ -- The method $getRightSpan(i) returns the location of the rightmost character derived from Ai >+ -- unless Ai produces %empty in which case it returns the location of the last character >+ -- derived before reducing Ai to %empty. >+ -------------------------------------------------------------------------------- >+ Token ::= Identifier >+ /.$BeginAction >+ checkForKeyWord(); >+ $EndAction >+ ./ >+ >+ Token ::= '"' SLNotDQ '"' >+ /.$BeginAction >+ makeToken($_IDENTIFIER); >+ $EndAction >+ ./ >+ >+ Token ::= SingleQuote SLNotSQOpt 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 >+ /.$NoAction >+ ./ >+ >+ Token ::= IntegerLiteral DotToken >+ /.$NoAction >+ ./ >+ >+ Token ::= IntegerLiteral DotDotToken >+ /.$NoAction >+ ./ >+ >+ Token ::= RealLiteral >+ /.$BeginAction >+ makeToken($_REAL_LITERAL); >+ $EndAction >+ ./ >+ >+ Token ::= SLC >+ /.$BeginAction >+ makeComment($_SINGLE_LINE_COMMENT); >+ $EndAction >+ ./ >+ >+ Token ::= '/' '*' Inside Stars '/' >+ /.$BeginAction >+ makeComment($_MULTI_LINE_COMMENT); >+ $EndAction >+ ./ >+ >+ Token ::= WS -- White Space is scanned but not added to output vector >+ /.$BeginAction >+ skipToken(); >+ $EndAction >+ ./ >+ >+ Token ::= '+' >+ /.$BeginAction >+ makeToken($_PLUS); >+ $EndAction >+ ./ >+ >+ Token ::= '-' >+ /.$BeginAction >+ makeToken($_MINUS); >+ $EndAction >+ ./ >+ >+ Token ::= '*' >+ /.$BeginAction >+ makeToken($_MULTIPLY); >+ $EndAction >+ ./ >+ >+ Token ::= '/' >+ /.$BeginAction >+ makeToken($_DIVIDE); >+ $EndAction >+ ./ >+ >+ Token ::= '(' >+ /.$BeginAction >+ makeToken($_LPAREN); >+ $EndAction >+ ./ >+ >+ Token ::= ')' >+ /.$BeginAction >+ makeToken($_RPAREN); >+ $EndAction >+ ./ >+ >+ Token ::= '>' >+ /.$BeginAction >+ makeToken($_GREATER); >+ $EndAction >+ ./ >+ >+ Token ::= '<' >+ /.$BeginAction >+ makeToken($_LESS); >+ $EndAction >+ ./ >+ >+ Token ::= '=' >+ /.$BeginAction >+ makeToken($_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '>' '=' >+ /.$BeginAction >+ makeToken($_GREATER_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '<' '=' >+ /.$BeginAction >+ makeToken($_LESS_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '<' '>' >+ /.$BeginAction >+ makeToken($_NOT_EQUAL); >+ $EndAction >+ ./ >+ >+ Token ::= '[' >+ /.$BeginAction >+ makeToken($_LBRACKET); >+ $EndAction >+ ./ >+ >+ Token ::= ']' >+ /.$BeginAction >+ makeToken($_RBRACKET); >+ $EndAction >+ ./ >+ >+ Token ::= '{' >+ /.$BeginAction >+ makeToken($_LBRACE); >+ $EndAction >+ ./ >+ >+ Token ::= '}' >+ /.$BeginAction >+ makeToken($_RBRACE); >+ $EndAction >+ ./ >+ >+ Token ::= '-' '>' >+ /.$BeginAction >+ makeToken($_ARROW); >+ $EndAction >+ ./ >+ >+ Token ::= '|' >+ /.$BeginAction >+ makeToken($_BAR); >+ $EndAction >+ ./ >+ >+ Token ::= ',' >+ /.$BeginAction >+ makeToken($_COMMA); >+ $EndAction >+ ./ >+ >+ Token ::= ':' >+ /.$BeginAction >+ makeToken($_COLON); >+ $EndAction >+ ./ >+ >+ Token ::= ':' ':' >+ /.$BeginAction >+ makeToken($_COLONCOLON); >+ $EndAction >+ ./ >+ >+ Token ::= ';' >+ /.$BeginAction >+ makeToken($_SEMICOLON); >+ $EndAction >+ ./ >+ >+ Token ::= DotToken >+ /.$NoAction >+ ./ >+ >+ DotToken ::= '.' >+ /.$BeginAction >+ makeToken($_DOT); >+ $EndAction >+ ./ >+ >+ Token ::= DotDotToken >+ /.$NoAction >+ ./ >+ >+ DotDotToken ::= '.' '.' >+ /.$BeginAction >+ makeToken($_DOTDOT); >+ $EndAction >+ ./ >+ >+ >+ IntegerLiteral ::= Integer >+ /.$BeginAction >+ makeToken($_INTEGER_LITERAL); >+ $EndAction >+ ./ >+ >+ RealLiteral -> Decimal >+ | Decimal Exponent >+ | Integer Exponent >+ >+ Inside ::= Inside Stars NotSlashOrStar >+ | Inside '/' >+ | Inside NotSlashOrStar >+ | %empty >+ >+ Stars -> '*' >+ | Stars '*' >+ >+ SLC -> '-' '-' >+ | SLC NotEol >+ >+ Integer -> Digit >+ | Integer Digit >+ >+ 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 >+ >+ LetterEe -> 'E' >+ | 'e' >+ >+ WS -> WSChar >+ | WS WSChar >+ >+ Identifier -> Letter >+ | Identifier Letter >+ | Identifier Digit >+ | Identifier DollarSign >+ >+ 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 >+ | BackslashEscapedSymbol >+ >+ NotSQ -> Letter >+ | Digit >+ | SpecialNotSQ >+ | Space >+ | BackslashEscapedSymbol >+ >+ SLNotDQ -> NotDQ >+ | SLNotDQ NotDQ >+ >+ SLNotSQ -> NotSQ >+ | SLNotSQ NotSQ >+ >+ SLNotSQOpt -> %empty >+ | SLNotSQ >+ >+%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,149 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLKWLexer.g,v 1.6 2009/10/15 19:43:12 ewillink Exp $ >+-- */ >+-- >+-- The Complete 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" >+ >+%Import >+ EssentialOCLKWLexer.gi >+%End >+ >+%Notice >+ /./** >+ * Complete OCL Keyword Lexer >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Bug 292112 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+$copyright_contributions >+ * </copyright> >+ */ >+ ./ >+%End >+ >+%Export >+ inv >+ pre >+ post >+ context >+ package >+ endpackage >+ def >+ body >+ derive >+ init >+ -- >+ -- the following were introduced in the OCL 2.1 RTF 09-05-02. >+ -- >+ static >+ >+ OclMessage >+%End >+ >+%Rules >+ >+-- The Goal for the parser is a single Keyword >+ >+ KeyWord ::= >+ 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 >+ ./ >+ >+ | O c l M e s s a g e >+ /.$BeginAction >+ $setResult($_OclMessage); >+ $EndAction >+ ./ >+ >+ | s t a t i c >+ /.$BeginAction >+ $setResult($_static); >+ $EndAction >+ ./ >+%End >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.11 >diff -u -r1.11 OCLKWLexer.java >--- src/org/eclipse/ocl/parser/OCLKWLexer.java 9 Nov 2009 22:00:25 -0000 1.11 >+++ src/org/eclipse/ocl/parser/OCLKWLexer.java 22 Dec 2009 21:42:01 -0000 >@@ -12,9 +12,11 @@ > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * E.D.Willink - Bug 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLKWLexer.java,v 1.11 2009/11/09 22:00:25 ewillink Exp $ >+* > */ > /** > * Complete OCL Keyword Lexer >@@ -29,6 +31,8 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > >@@ -36,7 +40,6 @@ > > > >- > public class OCLKWLexer extends OCLKWLexerprs implements OCLParsersym > { > private char[] inputChars; >@@ -74,66 +77,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); > } > > >@@ -145,253 +150,295 @@ > // > // Rule 1: KeyWord ::= s e l f > // >- keywordKind[1] = (TK_self); >+ >+ keywordKind[1] = (OCLParsersym.TK_self); > > > // > // Rule 2: KeyWord ::= i f > // >- keywordKind[2] = (TK_if); >+ >+ keywordKind[2] = (OCLParsersym.TK_if); > > > // > // Rule 3: KeyWord ::= t h e n > // >- keywordKind[3] = (TK_then); >+ >+ keywordKind[3] = (OCLParsersym.TK_then); > > > // > // Rule 4: KeyWord ::= e l s e > // >- keywordKind[4] = (TK_else); >+ >+ keywordKind[4] = (OCLParsersym.TK_else); > > > // > // Rule 5: KeyWord ::= e n d i f > // >- keywordKind[5] = (TK_endif); >+ >+ keywordKind[5] = (OCLParsersym.TK_endif); > > > // > // Rule 6: KeyWord ::= a n d > // >- keywordKind[6] = (TK_and); >+ >+ keywordKind[6] = (OCLParsersym.TK_and); > > > // > // Rule 7: KeyWord ::= o r > // >- keywordKind[7] = (TK_or); >+ >+ keywordKind[7] = (OCLParsersym.TK_or); > > > // > // Rule 8: KeyWord ::= x o r > // >- keywordKind[8] = (TK_xor); >+ >+ keywordKind[8] = (OCLParsersym.TK_xor); > > > // > // Rule 9: KeyWord ::= n o t > // >- keywordKind[9] = (TK_not); >+ >+ keywordKind[9] = (OCLParsersym.TK_not); > > > // > // Rule 10: KeyWord ::= i m p l i e s > // >- keywordKind[10] = (TK_implies); >+ >+ keywordKind[10] = (OCLParsersym.TK_implies); > > > // > // Rule 11: KeyWord ::= l e t > // >- keywordKind[11] = (TK_let); >+ >+ keywordKind[11] = (OCLParsersym.TK_let); > > > // > // Rule 12: KeyWord ::= i n > // >- keywordKind[12] = (TK_in); >+ >+ keywordKind[12] = (OCLParsersym.TK_in); > > > // > // Rule 13: KeyWord ::= t r u e > // >- keywordKind[13] = (TK_true); >+ >+ keywordKind[13] = (OCLParsersym.TK_true); > > > // > // Rule 14: KeyWord ::= f a l s e > // >- keywordKind[14] = (TK_false); >+ >+ keywordKind[14] = (OCLParsersym.TK_false); > > > // > // Rule 15: KeyWord ::= S e t > // >- keywordKind[15] = (TK_Set); >+ >+ keywordKind[15] = (OCLParsersym.TK_Set); > > > // > // Rule 16: KeyWord ::= B a g > // >- keywordKind[16] = (TK_Bag); >+ >+ keywordKind[16] = (OCLParsersym.TK_Bag); > > > // > // Rule 17: KeyWord ::= S e q u e n c e > // >- keywordKind[17] = (TK_Sequence); >+ >+ keywordKind[17] = (OCLParsersym.TK_Sequence); > > > // > // Rule 18: KeyWord ::= C o l l e c t i o n > // >- keywordKind[18] = (TK_Collection); >+ >+ keywordKind[18] = (OCLParsersym.TK_Collection); > > > // > // Rule 19: KeyWord ::= O r d e r e d S e t > // >- keywordKind[19] = (TK_OrderedSet); >+ >+ keywordKind[19] = (OCLParsersym.TK_OrderedSet); > > > // > // Rule 20: KeyWord ::= S t r i n g > // >- keywordKind[20] = (TK_String); >+ >+ keywordKind[20] = (OCLParsersym.TK_String); > > > // > // Rule 21: KeyWord ::= I n t e g e r > // >- keywordKind[21] = (TK_Integer); >+ >+ keywordKind[21] = (OCLParsersym.TK_Integer); > > > // > // Rule 22: KeyWord ::= U n l i m i t e d N a t u r a l > // >- keywordKind[22] = (TK_UnlimitedNatural); >+ >+ keywordKind[22] = (OCLParsersym.TK_UnlimitedNatural); > > > // > // Rule 23: KeyWord ::= R e a l > // >- keywordKind[23] = (TK_Real); >+ >+ keywordKind[23] = (OCLParsersym.TK_Real); > > > // > // Rule 24: KeyWord ::= B o o l e a n > // >- keywordKind[24] = (TK_Boolean); >+ >+ keywordKind[24] = (OCLParsersym.TK_Boolean); > > > // > // Rule 25: KeyWord ::= T u p l e > // >- keywordKind[25] = (TK_Tuple); >+ >+ keywordKind[25] = (OCLParsersym.TK_Tuple); > > > // > // Rule 26: KeyWord ::= O c l A n y > // >- keywordKind[26] = (TK_OclAny); >+ >+ keywordKind[26] = (OCLParsersym.TK_OclAny); > > > // > // Rule 27: KeyWord ::= O c l V o i d > // >- keywordKind[27] = (TK_OclVoid); >+ >+ keywordKind[27] = (OCLParsersym.TK_OclVoid); > > > // > // Rule 28: KeyWord ::= O c l I n v a l i d > // >- keywordKind[28] = (TK_OclInvalid); >+ >+ keywordKind[28] = (OCLParsersym.TK_OclInvalid); > > > // > // Rule 29: KeyWord ::= n u l l > // >- keywordKind[29] = (TK_null); >+ >+ keywordKind[29] = (OCLParsersym.TK_null); > > > // > // Rule 30: KeyWord ::= i n v a l i d > // >- keywordKind[30] = (TK_invalid); >+ >+ keywordKind[30] = (OCLParsersym.TK_invalid); > > > // > // Rule 31: KeyWord ::= i n v > // >- keywordKind[31] = (TK_inv); >+ >+ keywordKind[31] = (OCLParsersym.TK_inv); > > > // > // Rule 32: KeyWord ::= p r e > // >- keywordKind[32] = (TK_pre); >+ >+ keywordKind[32] = (OCLParsersym.TK_pre); > > > // > // Rule 33: KeyWord ::= p o s t > // >- keywordKind[33] = (TK_post); >+ >+ keywordKind[33] = (OCLParsersym.TK_post); > > > // > // Rule 34: KeyWord ::= b o d y > // >- keywordKind[34] = (TK_body); >+ >+ keywordKind[34] = (OCLParsersym.TK_body); > > > // > // Rule 35: KeyWord ::= c o n t e x t > // >- keywordKind[35] = (TK_context); >+ >+ keywordKind[35] = (OCLParsersym.TK_context); > > > // > // Rule 36: KeyWord ::= p a c k a g e > // >- keywordKind[36] = (TK_package); >+ >+ keywordKind[36] = (OCLParsersym.TK_package); > > > // > // Rule 37: KeyWord ::= e n d p a c k a g e > // >- keywordKind[37] = (TK_endpackage); >+ >+ keywordKind[37] = (OCLParsersym.TK_endpackage); > > > // > // Rule 38: KeyWord ::= d e f > // >- keywordKind[38] = (TK_def); >+ >+ keywordKind[38] = (OCLParsersym.TK_def); > > > // > // Rule 39: KeyWord ::= d e r i v e > // >- keywordKind[39] = (TK_derive); >+ >+ keywordKind[39] = (OCLParsersym.TK_derive); > > > // > // Rule 40: KeyWord ::= i n i t > // >- keywordKind[40] = (TK_init); >+ >+ keywordKind[40] = (OCLParsersym.TK_init); > > > // > // Rule 41: KeyWord ::= O c l M e s s a g e > // >- keywordKind[41] = (TK_OclMessage); >+ >+ keywordKind[41] = (OCLParsersym.TK_OclMessage); > > > // > // Rule 42: KeyWord ::= s t a t i c > // >- keywordKind[42] = (TK_static); >+ >+ keywordKind[42] = (OCLParsersym.TK_static); > > > >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.11 >diff -u -r1.11 OCLKWLexerprs.java >--- src/org/eclipse/ocl/parser/OCLKWLexerprs.java 9 Nov 2009 22:00:25 -0000 1.11 >+++ src/org/eclipse/ocl/parser/OCLKWLexerprs.java 22 Dec 2009 21:42:01 -0000 >@@ -12,9 +12,11 @@ > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * E.D.Willink - Bug 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLKWLexerprs.java,v 1.11 2009/11/09 22:00:25 ewillink Exp $ >+* > */ > /** > * Complete OCL Keyword Lexer >@@ -29,12 +31,95 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > > package org.eclipse.ocl.parser; > >-public class OCLKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLKWLexersym { >+public class OCLKWLexerprs implements lpg.runtime.ParseTable, OCLKWLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 159; >+ 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 = 247; >+ 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 = 42; >+ 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 = 43; >+ 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 = 36; >+ 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 = 204; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 205; >+ 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, >@@ -43,7 +128,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; >@@ -136,7 +221,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 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -200,56 +285,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 = 159, >- NT_OFFSET = 54, >- LA_STATE_OFFSET = 247, >- MAX_LA = 1, >- NUM_RULES = 42, >- NUM_NONTERMINALS = 2, >- NUM_SYMBOLS = 56, >- SEGMENT_SIZE = 8192, >- START_STATE = 43, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 36, >- EOLT_SYMBOL = 55, >- ACCEPT_ACTION = 204, >- ERROR_ACTION = 205; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { return 0; } > public final int asi(int state) { return 0; } > public final int nasi(int state) { return 0; } > public final int inSymbol(int state) { return 0; } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/OCLKWLexersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLKWLexersym.java,v >retrieving revision 1.10 >diff -u -r1.10 OCLKWLexersym.java >--- src/org/eclipse/ocl/parser/OCLKWLexersym.java 9 Nov 2009 22:00:25 -0000 1.10 >+++ src/org/eclipse/ocl/parser/OCLKWLexersym.java 22 Dec 2009 21:42:01 -0000 >@@ -12,9 +12,11 @@ > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * E.D.Willink - Bug 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLKWLexersym.java,v 1.10 2009/11/09 22:00:25 ewillink Exp $ >+* > */ > /** > * Complete OCL Keyword Lexer >@@ -29,6 +31,8 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > >@@ -42,6 +46,8 @@ > public interface OCLKWLexersym { > public final static int > Char_DollarSign = 37, >+ Char_Percent = 38, >+ Char__ = 39, > Char_a = 4, > Char_b = 23, > Char_c = 10, >@@ -51,7 +57,7 @@ > Char_g = 12, > Char_h = 24, > Char_i = 6, >- Char_j = 38, >+ Char_j = 40, > Char_k = 17, > Char_l = 2, > Char_m = 18, >@@ -64,39 +70,39 @@ > Char_t = 3, > Char_u = 14, > Char_v = 16, >- Char_w = 39, >+ Char_w = 41, > Char_x = 19, > Char_y = 20, >- Char_z = 40, >+ Char_z = 42, > Char_A = 26, > Char_B = 27, > Char_C = 28, >- Char_D = 41, >- Char_E = 42, >- Char_F = 43, >- Char_G = 44, >- Char_H = 45, >+ Char_D = 43, >+ Char_E = 44, >+ Char_F = 45, >+ Char_G = 46, >+ Char_H = 47, > Char_I = 21, >- Char_J = 46, >- Char_K = 47, >- Char_L = 48, >+ Char_J = 48, >+ Char_K = 49, >+ Char_L = 50, > Char_M = 29, > Char_N = 30, > Char_O = 31, >- Char_P = 49, >- Char_Q = 50, >+ Char_P = 51, >+ Char_Q = 52, > Char_R = 32, > Char_S = 22, > Char_T = 33, > Char_U = 34, > Char_V = 35, >- 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 = 36; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "e", > "l", >@@ -135,6 +141,8 @@ > "V", > "EOF", > "DollarSign", >+ "Percent", >+ "_", > "j", > "w", > "z", >@@ -154,5 +162,6 @@ > "Z" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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,99 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2005, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * See (or edit) Notice Declaration below >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLLexer.g,v 1.7 2009/10/23 21:26:55 ewillink Exp $ >+-- */ >+-- >+-- The Complete 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" >+ >+%Import >+ EssentialOCLLexer.gi >+%End >+ >+%Define >+ >+ -- >+ -- Definition of macro used in the included file LexerBasicMap.g >+ -- We redefine that one defined by EssentialOCLLexer >+ -- >+ $kw_lexer_class /.OCLKWLexer./ >+ $copyright_contributions /.*./ >+ >+%End >+ >+%Notice >+ /./** >+ * Complete OCL Lexer >+ * <copyright> >+ * >+ * Copyright (c) 2005, 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM - Initial API and implementation >+ * E.D.Willink - Bug 292112, 292594 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+ $copyright_contributions >+ * </copyright> >+ */ >+ ./ >+%End >+ >+%Export >+ AT >+ CARET >+ CARETCARET >+ QUESTIONMARK >+%End >+ >+%Rules >+ Token ::= '@' >+ /.$BeginAction >+ makeToken($_AT); >+ $EndAction >+ ./ >+ >+ Token ::= '^' >+ /.$BeginAction >+ makeToken($_CARET); >+ $EndAction >+ ./ >+ >+ Token ::= '^' '^' >+ /.$BeginAction >+ makeToken($_CARETCARET); >+ $EndAction >+ ./ >+ >+ Token ::= '?' >+ /.$BeginAction >+ makeToken($_QUESTIONMARK); >+ $EndAction >+ ./ >+%End >Index: src/org/eclipse/ocl/parser/OCLLexer.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLLexer.java,v >retrieving revision 1.13 >diff -u -r1.13 OCLLexer.java >--- src/org/eclipse/ocl/parser/OCLLexer.java 9 Nov 2009 22:01:50 -0000 1.13 >+++ src/org/eclipse/ocl/parser/OCLLexer.java 22 Dec 2009 21:42:03 -0000 >@@ -13,9 +13,11 @@ > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * Borland - Bug 242880 > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLLexer.java,v 1.13 2009/11/09 22:01:50 ewillink Exp $ >+* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ > */ > /** > * Complete OCL Lexer >@@ -30,12 +32,14 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112, 292594 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > > 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; >@@ -68,7 +72,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) { >@@ -97,7 +101,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()); > } >@@ -108,7 +112,7 @@ > @Override > public void setInputChars(char[] inputChars) { > super.setInputChars(inputChars); >- kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER); > } > > @Override >@@ -124,12 +128,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(), >@@ -142,7 +146,7 @@ > { > int startOffset = getLeftSpan(), > endOffset = getRightSpan(); >- super.getPrsStream().makeAdjunct(startOffset, endOffset, kind); >+ super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind); > } > > final void skipToken() >@@ -333,7 +337,7 @@ > // Rule 2: Token ::= " SLNotDQ " > // > case 2: { >- makeToken(TK_IDENTIFIER); >+ makeToken(OCLParsersym.TK_IDENTIFIER); > break; > } > >@@ -341,7 +345,7 @@ > // Rule 3: Token ::= SingleQuote SLNotSQOpt SingleQuote > // > case 3: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -349,7 +353,7 @@ > // Rule 4: Token ::= Acute SLNotSQOpt Acute > // > case 4: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -357,7 +361,7 @@ > // Rule 5: Token ::= BackQuote SLNotSQOpt Acute > // > case 5: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLParsersym.TK_STRING_LITERAL); > break; > } > >@@ -383,7 +387,7 @@ > // Rule 9: Token ::= RealLiteral > // > case 9: { >- makeToken(TK_REAL_LITERAL); >+ makeToken(OCLParsersym.TK_REAL_LITERAL); > break; > } > >@@ -391,7 +395,7 @@ > // Rule 10: Token ::= SLC > // > case 10: { >- makeComment(TK_SINGLE_LINE_COMMENT); >+ makeComment(OCLParsersym.TK_SINGLE_LINE_COMMENT); > break; > } > >@@ -399,7 +403,7 @@ > // Rule 11: Token ::= / * Inside Stars / > // > case 11: { >- makeComment(TK_MULTI_LINE_COMMENT); >+ makeComment(OCLParsersym.TK_MULTI_LINE_COMMENT); > break; > } > >@@ -415,7 +419,7 @@ > // Rule 13: Token ::= + > // > case 13: { >- makeToken(TK_PLUS); >+ makeToken(OCLParsersym.TK_PLUS); > break; > } > >@@ -423,7 +427,7 @@ > // Rule 14: Token ::= - > // > case 14: { >- makeToken(TK_MINUS); >+ makeToken(OCLParsersym.TK_MINUS); > break; > } > >@@ -431,7 +435,7 @@ > // Rule 15: Token ::= * > // > case 15: { >- makeToken(TK_MULTIPLY); >+ makeToken(OCLParsersym.TK_MULTIPLY); > break; > } > >@@ -439,7 +443,7 @@ > // Rule 16: Token ::= / > // > case 16: { >- makeToken(TK_DIVIDE); >+ makeToken(OCLParsersym.TK_DIVIDE); > break; > } > >@@ -447,7 +451,7 @@ > // Rule 17: Token ::= ( > // > case 17: { >- makeToken(TK_LPAREN); >+ makeToken(OCLParsersym.TK_LPAREN); > break; > } > >@@ -455,7 +459,7 @@ > // Rule 18: Token ::= ) > // > case 18: { >- makeToken(TK_RPAREN); >+ makeToken(OCLParsersym.TK_RPAREN); > break; > } > >@@ -463,7 +467,7 @@ > // Rule 19: Token ::= > > // > case 19: { >- makeToken(TK_GREATER); >+ makeToken(OCLParsersym.TK_GREATER); > break; > } > >@@ -471,7 +475,7 @@ > // Rule 20: Token ::= < > // > case 20: { >- makeToken(TK_LESS); >+ makeToken(OCLParsersym.TK_LESS); > break; > } > >@@ -479,7 +483,7 @@ > // Rule 21: Token ::= = > // > case 21: { >- makeToken(TK_EQUAL); >+ makeToken(OCLParsersym.TK_EQUAL); > break; > } > >@@ -487,7 +491,7 @@ > // Rule 22: Token ::= > = > // > case 22: { >- makeToken(TK_GREATER_EQUAL); >+ makeToken(OCLParsersym.TK_GREATER_EQUAL); > break; > } > >@@ -495,7 +499,7 @@ > // Rule 23: Token ::= < = > // > case 23: { >- makeToken(TK_LESS_EQUAL); >+ makeToken(OCLParsersym.TK_LESS_EQUAL); > break; > } > >@@ -503,7 +507,7 @@ > // Rule 24: Token ::= < > > // > case 24: { >- makeToken(TK_NOT_EQUAL); >+ makeToken(OCLParsersym.TK_NOT_EQUAL); > break; > } > >@@ -511,7 +515,7 @@ > // Rule 25: Token ::= [ > // > case 25: { >- makeToken(TK_LBRACKET); >+ makeToken(OCLParsersym.TK_LBRACKET); > break; > } > >@@ -519,7 +523,7 @@ > // Rule 26: Token ::= ] > // > case 26: { >- makeToken(TK_RBRACKET); >+ makeToken(OCLParsersym.TK_RBRACKET); > break; > } > >@@ -527,7 +531,7 @@ > // Rule 27: Token ::= { > // > case 27: { >- makeToken(TK_LBRACE); >+ makeToken(OCLParsersym.TK_LBRACE); > break; > } > >@@ -535,7 +539,7 @@ > // Rule 28: Token ::= } > // > case 28: { >- makeToken(TK_RBRACE); >+ makeToken(OCLParsersym.TK_RBRACE); > break; > } > >@@ -543,7 +547,7 @@ > // Rule 29: Token ::= - > > // > case 29: { >- makeToken(TK_ARROW); >+ makeToken(OCLParsersym.TK_ARROW); > break; > } > >@@ -551,7 +555,7 @@ > // Rule 30: Token ::= | > // > case 30: { >- makeToken(TK_BAR); >+ makeToken(OCLParsersym.TK_BAR); > break; > } > >@@ -559,7 +563,7 @@ > // Rule 31: Token ::= , > // > case 31: { >- makeToken(TK_COMMA); >+ makeToken(OCLParsersym.TK_COMMA); > break; > } > >@@ -567,7 +571,7 @@ > // Rule 32: Token ::= : > // > case 32: { >- makeToken(TK_COLON); >+ makeToken(OCLParsersym.TK_COLON); > break; > } > >@@ -575,7 +579,7 @@ > // Rule 33: Token ::= : : > // > case 33: { >- makeToken(TK_COLONCOLON); >+ makeToken(OCLParsersym.TK_COLONCOLON); > break; > } > >@@ -583,7 +587,7 @@ > // Rule 34: Token ::= ; > // > case 34: { >- makeToken(TK_SEMICOLON); >+ makeToken(OCLParsersym.TK_SEMICOLON); > break; > } > >@@ -597,7 +601,7 @@ > // Rule 36: DotToken ::= . > // > case 36: { >- makeToken(TK_DOT); >+ makeToken(OCLParsersym.TK_DOT); > break; > } > >@@ -611,7 +615,7 @@ > // Rule 38: DotDotToken ::= . . > // > case 38: { >- makeToken(TK_DOTDOT); >+ makeToken(OCLParsersym.TK_DOTDOT); > break; > } > >@@ -619,7 +623,7 @@ > // Rule 39: IntegerLiteral ::= Integer > // > case 39: { >- makeToken(TK_INTEGER_LITERAL); >+ makeToken(OCLParsersym.TK_INTEGER_LITERAL); > break; > } > >@@ -627,7 +631,7 @@ > // Rule 264: Token ::= @ > // > case 264: { >- makeToken(TK_AT); >+ makeToken(OCLParsersym.TK_AT); > break; > } > >@@ -635,7 +639,7 @@ > // Rule 265: Token ::= ^ > // > case 265: { >- makeToken(TK_CARET); >+ makeToken(OCLParsersym.TK_CARET); > break; > } > >@@ -643,7 +647,7 @@ > // Rule 266: Token ::= ^ ^ > // > case 266: { >- makeToken(TK_CARETCARET); >+ makeToken(OCLParsersym.TK_CARETCARET); > break; > } > >@@ -651,7 +655,7 @@ > // Rule 267: Token ::= ? > // > case 267: { >- makeToken(TK_QUESTIONMARK); >+ makeToken(OCLParsersym.TK_QUESTIONMARK); > break; > } > >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.12 >diff -u -r1.12 OCLLexerprs.java >--- src/org/eclipse/ocl/parser/OCLLexerprs.java 9 Nov 2009 22:01:50 -0000 1.12 >+++ src/org/eclipse/ocl/parser/OCLLexerprs.java 22 Dec 2009 21:42:04 -0000 >@@ -13,9 +13,11 @@ > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * Borland - Bug 242880 > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLLexerprs.java,v 1.12 2009/11/09 22:01:50 ewillink Exp $ >+* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ > */ > /** > * Complete OCL Lexer >@@ -30,12 +32,106 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112, 292594 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > > package org.eclipse.ocl.parser; > >-public class OCLLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLLexersym { >+public class OCLLexerprs implements lpg.runtime.ParseTable, OCLLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 40; >+ 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 = 709; >+ 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 = 267; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 35; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 138; >+ 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 = 268; >+ 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 = 102; >+ 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 = 441; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 442; >+ 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,1,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,1, >+ 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, >+ 19,22,23,24,27,32,14,21,29,34, >+ 5,35,7,8,16,17,20,26,28,33, >+ 2,3,4,6,9,10,11,12,13,15, >+ 18,25,30,31,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, >@@ -417,56 +513,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 = 40, >- NT_OFFSET = 103, >- LA_STATE_OFFSET = 709, >- MAX_LA = 2, >- NUM_RULES = 267, >- NUM_NONTERMINALS = 35, >- NUM_SYMBOLS = 138, >- SEGMENT_SIZE = 8192, >- START_STATE = 268, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 102, >- EOLT_SYMBOL = 104, >- ACCEPT_ACTION = 441, >- ERROR_ACTION = 442; >- >- public final static boolean BACKTRACK = false; >- >- public final int getNumStates() { return NUM_STATES; } >- public final int getNtOffset() { return NT_OFFSET; } >- public final int getLaStateOffset() { return LA_STATE_OFFSET; } >- public final int getMaxLa() { return MAX_LA; } >- public final int getNumRules() { return NUM_RULES; } >- public final int getNumNonterminals() { return NUM_NONTERMINALS; } >- public final int getNumSymbols() { return NUM_SYMBOLS; } >- public final int getSegmentSize() { return SEGMENT_SIZE; } >- public final int getStartState() { return START_STATE; } >- public final int getStartSymbol() { return lhs[0]; } >- public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } >- public final int getEoftSymbol() { return EOFT_SYMBOL; } >- public final int getEoltSymbol() { return EOLT_SYMBOL; } >- public final int getAcceptAction() { return ACCEPT_ACTION; } >- public final int getErrorAction() { return ERROR_ACTION; } >- public final boolean isValidForParser() { return isValidForParser; } >- public final boolean getBacktrack() { return BACKTRACK; } >- > public final int originalState(int state) { return 0; } > public final int asi(int state) { return 0; } > public final int nasi(int state) { return 0; } > public final int inSymbol(int state) { return 0; } > >+ /** >+ * assert(! goto_default); >+ */ > public final int ntAction(int state, int sym) { > return baseAction[state + sym]; > } > >+ /** >+ * assert(! shift_default); >+ */ > public final int tAction(int state, int sym) { > int i = baseAction[state], > k = i + sym; >Index: src/org/eclipse/ocl/parser/OCLLexersym.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLLexersym.java,v >retrieving revision 1.11 >diff -u -r1.11 OCLLexersym.java >--- src/org/eclipse/ocl/parser/OCLLexersym.java 9 Nov 2009 22:01:50 -0000 1.11 >+++ src/org/eclipse/ocl/parser/OCLLexersym.java 22 Dec 2009 21:42:04 -0000 >@@ -13,9 +13,11 @@ > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * Borland - Bug 242880 > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLLexersym.java,v 1.11 2009/11/09 22:01:50 ewillink Exp $ >+* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ > */ > /** > * Complete OCL Lexer >@@ -30,6 +32,8 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112, 292594 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > >@@ -146,7 +150,7 @@ > Char_Equal = 16, > Char_EOF = 102; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "0", > "1", >@@ -253,5 +257,6 @@ > "CtlCharNotWS" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >Index: src/org/eclipse/ocl/parser/OCLParser.g >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.mdt/org.eclipse.ocl/plugins/org.eclipse.ocl/src/org/eclipse/ocl/parser/OCLParser.g,v >retrieving revision 1.10 >diff -u -r1.10 OCLParser.g >--- src/org/eclipse/ocl/parser/OCLParser.g 18 Dec 2009 06:26:04 -0000 1.10 >+++ src/org/eclipse/ocl/parser/OCLParser.g 22 Dec 2009 21:42:05 -0000 >@@ -27,22 +27,22 @@ > %options margin=4 > %options noserialize > %options package=org.eclipse.ocl.parser >-%options import_terminals=OCLLexer.g >+%options import_terminals=OCLLexer.gi > %options ast_type=CSTNode > %options programming_language=java >-%options action=("*.java", "/.", "./") >-%options ParseTable=lpg.lpgjavaruntime.ParseTable >+%options action-block=("*.java", "/.", "./") >+%options ParseTable=lpg.runtime.ParseTable > %options include_directory=".;../lpg" > >-$Start >+%Start > goal >-$End >+%End > >-$Include >- EssentialOCL.g >-$End >+%Import >+ EssentialOCL.gi >+%End > >-$Notice >+%Notice > /./** > * Complete OCL Grammar > * <copyright> >@@ -56,17 +56,18 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+ * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > ./ >-$End >+%End > >-$Define >+%Define > $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./ > $lex_stream_class /.OCLLexer./ >-$End >+%End > >-$Globals >+%Globals > /. > import org.eclipse.ocl.Environment; > import org.eclipse.ocl.cst.ClassifierContextDeclCS; >@@ -87,30 +88,30 @@ > import org.eclipse.ocl.cst.PrePostOrBodyEnum; > import org.eclipse.ocl.cst.PropertyContextCS; > ./ >-$End >+%End > >-$KeyWords >+%KeyWords > -- Reserved keywords > body context def derive endpackage init inv package post pre static > > -- Restricted keywords > OclMessage >-$End >+%End > >-$Terminals >+%Terminals > AT ::= '@' > CARET ::= '^' > CARETCARET ::= '^^' > QUESTIONMARK ::= '?' >-$End >+%End > >-$Rules >+%Rules > goal -> packageDeclarationsCS > goal -> invOrDefCS > goal -> prePostOrBodyDeclCS > goal -> initOrDerValueCS > goal -> VariableDeclarationCS >- goal -> $empty >+ goal -> %empty > ----------------------------------------------------------------------- > -- Names > ----------------------------------------------------------------------- >@@ -126,7 +127,7 @@ > reservedKeyword -> pre > reservedKeyword -> static > >- unreservedSimpleNameCSopt ::= $empty >+ unreservedSimpleNameCSopt ::= %empty > /.$NullAction./ > unreservedSimpleNameCSopt -> unreservedSimpleNameCS > >@@ -134,17 +135,17 @@ > -- Types > ----------------------------------------------------------------------- > primitiveTypeCS ::= OclMessage >- /.$BeginJava >+ /.$BeginCode > PrimitiveTypeCS result = createPrimitiveTypeCS( > SimpleTypeEnum.OCL_MESSAGE_LITERAL, > getTokenText($getToken(1)) > ); > setOffsets(result, getIToken($getToken(1))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > >- typeCSopt ::= $empty >+ typeCSopt ::= %empty > /.$NullAction./ > typeCSopt -> typeCS > >@@ -153,7 +154,7 @@ > ----------------------------------------------------------------------- > OperationCallExpCS ::= -- [B] > primaryExpCS '->' simpleNameCS isMarkedPreCS '(' argumentsCSopt ')' >- /.$BeginJava >+ /.$BeginCode > OCLExpressionCS source = (OCLExpressionCS)$getSym(1); > OperationCallExpCS result = createArrowOperationCallExpCS( > source, >@@ -163,12 +164,12 @@ > ); > setOffsets(result, source, getIToken($getToken(7))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > AssociationClassCallExpCS ::= -- [B.1],PropertyCallExpCS[B] > simpleNameCS isMarkedPreCS >- /.$BeginJava >+ /.$BeginCode > SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1); > IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2); > VariableExpCS result = createVariableExpCS( >@@ -178,22 +179,22 @@ > ); > setOffsets(result, simpleNameCS, isMarkedPreCS); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > isMarkedPreCS ::= '@' pre >- /.$BeginJava >+ /.$BeginCode > IsMarkedPreCS result = createIsMarkedPreCS(); > setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > isMarkedPreCSopt -> isMarkedPreCS > > OclMessageExpCS ::= primaryExpCS '^^' simpleNameCS '(' OclMessageArgumentsCSopt ')' > /.$NewCase./ > OclMessageExpCS ::= primaryExpCS '^' simpleNameCS '(' OclMessageArgumentsCSopt ')' >- /.$BeginJava >+ /.$BeginCode > OCLExpressionCS target = (OCLExpressionCS)$getSym(1); > MessageExpCS result = createMessageExpCS( > target, >@@ -203,60 +204,60 @@ > ); > setOffsets(result, target, getIToken($getToken(6))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > >- OclMessageArgumentsCSopt ::= $empty >- /.$BeginJava >+ OclMessageArgumentsCSopt ::= %empty >+ /.$BeginCode > $setResult(new BasicEList<OCLMessageArgCS>()); >- $EndJava >+ $EndCode > ./ > OclMessageArgumentsCSopt -> OclMessageArgumentsCS > > OclMessageArgumentsCS ::= OclMessageArgCS >- /.$BeginJava >+ /.$BeginCode > EList<OCLMessageArgCS> result = new BasicEList<OCLMessageArgCS>(); > result.add((OCLMessageArgCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > OclMessageArgumentsCS ::= OclMessageArgumentsCS ',' OclMessageArgCS >- /.$BeginJava >+ /.$BeginCode > EList<OCLMessageArgCS> result = (EList<OCLMessageArgCS>)$getSym(1); > result.add((OCLMessageArgCS)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > OclMessageArgCS ::= '?' >- /.$BeginJava >+ /.$BeginCode > OCLMessageArgCS result = createOCLMessageArgCS( > null, > null > ); > setOffsets(result, getIToken($getToken(1))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > OclMessageArgCS ::= '?' ':' typeCS >- /.$BeginJava >+ /.$BeginCode > OCLMessageArgCS result = createOCLMessageArgCS( > (TypeCS)$getSym(3), > null > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > OclMessageArgCS ::= OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > OCLMessageArgCS result = createOCLMessageArgCS( > null, > (OCLExpressionCS)$getSym(1) > ); > setOffsets(result, (CSTNode)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > ----------------------------------------------------------------------- >@@ -269,57 +270,57 @@ > ----------------------------------------------------------------------- > packageDeclarationsCS -> packageDeclarationCS > packageDeclarationsCS ::= packageDeclarationsCS packageDeclarationCS_A >- /.$BeginJava >+ /.$BeginCode > PackageDeclarationCS result = (PackageDeclarationCS)$getSym(2); > result.setPackageDeclarationCS((PackageDeclarationCS) $getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > packageDeclarationCS -> packageDeclarationCS_A > packageDeclarationCS -> packageDeclarationCS_B > packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt endpackage >- /.$BeginJava >+ /.$BeginCode > PackageDeclarationCS result = createPackageDeclarationCS( > (PathNameCS)$getSym(2), > (EList<ContextDeclCS>)$getSym(3) > ); > setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > packageDeclarationCS_B ::= contextDeclsCS >- /.$BeginJava >+ /.$BeginCode > EList<ContextDeclCS> contextDecls = (EList<ContextDeclCS>)$getSym(1); > PackageDeclarationCS result = createPackageDeclarationCS(null, contextDecls); > if (!contextDecls.isEmpty()) { > setOffsets(result, contextDecls.get(0), contextDecls.get(contextDecls.size()-1)); > } > $setResult(result); >- $EndJava >+ $EndCode > ./ > >- contextDeclsCSopt ::= $empty >- /.$BeginJava >+ contextDeclsCSopt ::= %empty >+ /.$BeginCode > $setResult(new BasicEList<ContextDeclCS>()); >- $EndJava >+ $EndCode > ./ > contextDeclsCSopt -> contextDeclsCS > > contextDeclsCS ::= contextDeclCS >- /.$BeginJava >+ /.$BeginCode > EList<ContextDeclCS> result = new BasicEList<ContextDeclCS>(); > result.add((ContextDeclCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > contextDeclsCS ::= contextDeclsCS contextDeclCS >- /.$BeginJava >+ /.$BeginCode > EList<ContextDeclCS> result = (EList<ContextDeclCS>)$getSym(1); > result.add((ContextDeclCS)$getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > contextDeclCS -> propertyContextDeclCS >@@ -328,7 +329,7 @@ > > propertyContextDeclCS ::= context pathNameCS '::' unreservedSimpleNameCS > ':' typeCS initOrDerValuesCS >- /.$BeginJava >+ /.$BeginCode > PathNameCS pathNameCS = (PathNameCS)$getSym(2); > SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(4); > EList<InitOrDerValueCS> list = (EList<InitOrDerValueCS>)$getSym(7); >@@ -340,41 +341,41 @@ > ); > setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > initOrDerValuesCS ::= initOrDerValueCS >- /.$BeginJava >+ /.$BeginCode > EList<InitOrDerValueCS> result = new BasicEList<InitOrDerValueCS>(); > result.add((InitOrDerValueCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > initOrDerValuesCS ::= initOrDerValuesCS initOrDerValueCS >- /.$BeginJava >+ /.$BeginCode > EList<InitOrDerValueCS> result = (EList<InitOrDerValueCS>)$getSym(1); > result.add((InitOrDerValueCS)$getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > initOrDerValueCS ::= init ':' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > InitValueCS result = createInitValueCS((OCLExpressionCS)$getSym(3)); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > initOrDerValueCS ::= derive ':' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > DerValueCS result = createDerValueCS((OCLExpressionCS)$getSym(3)); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > classifierContextDeclCS ::= context pathNameCS invOrDefsCS >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3); > ClassifierContextDeclCS result = createClassifierContextDeclCS( > null, >@@ -383,10 +384,10 @@ > ); > setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > classifierContextDeclCS ::= context simpleNameCS ':' pathNameCS invOrDefsCS >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(5); > ClassifierContextDeclCS result = createClassifierContextDeclCS( > (SimpleNameCS)$getSym(2), >@@ -395,36 +396,36 @@ > ); > setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > invOrDefsCS ::= invOrDefCS >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> result = new BasicEList<InvOrDefCS>(); > result.add((InvOrDefCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > invOrDefsCS ::= invOrDefsCS invOrDefCS >- /.$BeginJava >+ /.$BeginCode > EList<InvOrDefCS> result = (EList<InvOrDefCS>)$getSym(1); > result.add((InvOrDefCS)$getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > invOrDefCS ::= inv unreservedSimpleNameCSopt ':' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > InvCS result = createInvCS( > (SimpleNameCS)$getSym(2), > (OCLExpressionCS)$getSym(4) > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > invOrDefCS ::= def unreservedSimpleNameCSopt ':' defExpressionCS >- /.$BeginJava >+ /.$BeginCode > DefExpressionCS defExpressionCS = (DefExpressionCS)$getSym(4); > DefCS result = createDefCS( > false, >@@ -433,10 +434,10 @@ > ); > setOffsets(result, getIToken($getToken(1)), defExpressionCS); > $setResult(result); >- $EndJava >+ $EndCode > ./ > invOrDefCS ::= static def unreservedSimpleNameCSopt ':' defExpressionCS >- /.$BeginJava >+ /.$BeginCode > DefExpressionCS defExpressionCS = (DefExpressionCS)$getSym(5); > DefCS result = createDefCS( > true, >@@ -445,11 +446,11 @@ > ); > setOffsets(result, getIToken($getToken(1)), defExpressionCS); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > defExpressionCS ::= typedUninitializedVariableCS '=' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > VariableCS variableCS = (VariableCS)$getSym(1); > OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3); > DefExpressionCS result = createDefExpressionCS( >@@ -459,10 +460,10 @@ > ); > setOffsets(result, variableCS, expressionCS); > $setResult(result); >- $EndJava >+ $EndCode > ./ > defExpressionCS ::= operationCS1 '=' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > DefExpressionCS result = createDefExpressionCS( > null, > (OperationCS)$getSym(1), >@@ -470,11 +471,11 @@ > ); > setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > operationContextDeclCS ::= context operationCS2 prePostOrBodyDeclsCS >- /.$BeginJava >+ /.$BeginCode > EList<PrePostOrBodyDeclCS> prePostOrBodyDecls = (EList<PrePostOrBodyDeclCS>)$getSym(3); > OperationContextDeclCS result = createOperationContextDeclCS( > (OperationCS)$getSym(2), >@@ -482,26 +483,26 @@ > ); > setOffsets(result, getIToken($getToken(1)), prePostOrBodyDecls.get(prePostOrBodyDecls.size()-1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > prePostOrBodyDeclsCS ::= prePostOrBodyDeclCS >- /.$BeginJava >+ /.$BeginCode > EList<PrePostOrBodyDeclCS> result = new BasicEList<PrePostOrBodyDeclCS>(); > result.add((PrePostOrBodyDeclCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > prePostOrBodyDeclsCS ::= prePostOrBodyDeclsCS prePostOrBodyDeclCS >- /.$BeginJava >+ /.$BeginCode > EList<PrePostOrBodyDeclCS> result = (EList<PrePostOrBodyDeclCS>)$getSym(1); > result.add((PrePostOrBodyDeclCS)$getSym(2)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > prePostOrBodyDeclCS ::= pre unreservedSimpleNameCSopt ':' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS( > PrePostOrBodyEnum.PRE_LITERAL, > (SimpleNameCS)$getSym(2), >@@ -509,10 +510,10 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > prePostOrBodyDeclCS ::= post unreservedSimpleNameCSopt ':' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS( > PrePostOrBodyEnum.POST_LITERAL, > (SimpleNameCS)$getSym(2), >@@ -520,10 +521,10 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > prePostOrBodyDeclCS ::= body unreservedSimpleNameCSopt ':' OclExpressionCS >- /.$BeginJava >+ /.$BeginCode > PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS( > PrePostOrBodyEnum.BODY_LITERAL, > (SimpleNameCS)$getSym(2), >@@ -531,11 +532,11 @@ > ); > setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > > operationCS1 ::= simpleNameCS '(' parametersCSopt ')' ':' typeCSopt >- /.$BeginJava >+ /.$BeginCode > OperationCS result = createOperationCS( > getIToken($getToken(1)), > (EList<VariableCS>)$getSym(3), >@@ -547,11 +548,11 @@ > setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); > } > $setResult(result); >- $EndJava >+ $EndCode > ./ > operationCS2 ::= pathNameCS '::' unreservedSimpleNameCS '(' parametersCSopt ')' > ':' typeCSopt >- /.$BeginJava >+ /.$BeginCode > PathNameCS pathNameCS = (PathNameCS)$getSym(1); > SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); > TypeCS typeCS = (TypeCS)$getSym(8); >@@ -567,28 +568,28 @@ > setOffsets(result, pathNameCS, getIToken($getToken(7))); > } > $setResult(result); >- $EndJava >+ $EndCode > ./ > >- parametersCSopt ::= $empty >- /.$BeginJava >+ parametersCSopt ::= %empty >+ /.$BeginCode > $setResult(new BasicEList<VariableCS>()); >- $EndJava >+ $EndCode > ./ > parametersCSopt -> parametersCS > > parametersCS ::= VariableDeclarationCS >- /.$BeginJava >+ /.$BeginCode > EList<VariableCS> result = new BasicEList<VariableCS>(); > result.add((VariableCS)$getSym(1)); > $setResult(result); >- $EndJava >+ $EndCode > ./ > parametersCS ::= parametersCS ',' VariableDeclarationCS >- /.$BeginJava >+ /.$BeginCode > EList<VariableCS> result = (EList<VariableCS>)$getSym(1); > result.add((VariableCS)$getSym(3)); > $setResult(result); >- $EndJava >+ $EndCode > ./ >-$End >+%End >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.20 >diff -u -r1.20 OCLParser.java >--- src/org/eclipse/ocl/parser/OCLParser.java 18 Dec 2009 06:26:04 -0000 1.20 >+++ src/org/eclipse/ocl/parser/OCLParser.java 22 Dec 2009 21:42:06 -0000 >@@ -14,10 +14,11 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLParser.java,v 1.20 2009/12/18 06:26:04 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ > */ > /** > * Complete OCL Grammar >@@ -32,6 +33,7 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > >@@ -70,15 +72,15 @@ > import org.eclipse.ocl.cst.VariableCS; > import org.eclipse.ocl.cst.VariableExpCS; > >-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.ClassifierContextDeclCS; >@@ -462,7 +464,7 @@ > // > case 57: { > >- TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3)); >+ TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3)); > setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4))); > dtParser.setSym1(result); > 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.17 >diff -u -r1.17 OCLParserprs.java >--- src/org/eclipse/ocl/parser/OCLParserprs.java 9 Nov 2009 22:03:45 -0000 1.17 >+++ src/org/eclipse/ocl/parser/OCLParserprs.java 22 Dec 2009 21:42:08 -0000 >@@ -14,10 +14,11 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLParserprs.java,v 1.17 2009/11/09 22:03:45 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ > */ > /** > * Complete OCL Grammar >@@ -32,6 +33,7 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > >@@ -41,7 +43,113 @@ > * @noextend This interface is not intended to be extended by clients. > */ > @SuppressWarnings("nls") >-public class OCLParserprs implements lpg.lpgjavaruntime.ParseTable, OCLParsersym { >+public class OCLParserprs implements lpg.runtime.ParseTable, OCLParsersym { >+ public final static int ERROR_SYMBOL = 78; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 44; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 45; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 29; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 242; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 78; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 4472; >+ 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 = 300; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 119; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 197; >+ 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 = 3864; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 6; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 75; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 75; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 4171; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 4172; >+ 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,1,1,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,1,0, >+ 1,1,0,0,0,0,0,0,1,0, >+ 1,0,0,1,0,0,0,0,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, >+ 12,9,10,14,16,17,11,28,29,30, >+ 31,32,37,38,39,40,41,42,43,45, >+ 46,47,48,49,50,51,52,53,58,59, >+ 60,85,87,88,89,90,99,82,83,84, >+ 79,80,81,76,77,78,73,74,75,70, >+ 71,72,67,68,69,64,65,66,23,54, >+ 61,62,63,20,6,8,13,24,55,98, >+ 56,15,21,22,57,96,93,27,86,108, >+ 109,110,111,26,35,36,94,95,102,25, >+ 33,34,97,100,101,104,107,113,114,115, >+ 118,119,2,3,4,18,19,44,91,92, >+ 103,105,106,112,116,117,1,5,7 >+ }; >+ }; >+ 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, >@@ -1321,33 +1429,33 @@ > > public interface ScopeRhs { > public final static char scopeRhs[] = {0, >- 172,1,79,14,103,0,12,0,172,1, >+ 172,1,79,14,103,0,2,0,172,1, > 79,15,103,0,153,1,148,79,12,103, >- 0,187,46,0,44,89,0,137,71,137, >- 70,137,44,0,37,0,137,70,137,44, >- 0,36,89,37,0,137,44,0,35,89, >- 36,89,37,0,137,1,0,117,0,4, >- 126,0,3,126,0,120,0,2,124,0, >- 1,124,0,123,0,9,121,0,8,121, >- 0,6,121,0,5,121,0,126,0,10, >- 118,0,7,118,0,129,0,38,115,0, >- 132,0,39,112,0,135,0,40,109,0, >- 141,0,42,106,0,147,55,79,0,16, >- 0,0,147,55,79,13,103,0,153,1, >+ 0,187,46,0,73,137,0,137,71,137, >+ 70,137,44,0,72,0,137,70,137,44, >+ 0,71,137,72,0,137,44,0,70,137, >+ 71,137,72,0,137,1,0,117,0,10, >+ 111,0,5,111,0,120,0,4,118,0, >+ 9,118,0,123,0,19,121,0,18,121, >+ 0,17,121,0,16,121,0,126,0,35, >+ 124,0,7,124,0,129,0,39,127,0, >+ 132,0,45,130,0,135,0,52,133,0, >+ 141,0,56,136,0,147,55,79,0,65, >+ 149,0,147,55,79,13,103,0,153,1, > 149,145,11,82,13,103,0,153,1,145, > 11,82,0,153,1,149,79,0,153,1, > 149,79,13,103,0,153,1,149,183,13, > 103,0,147,8,79,1,79,12,103,0, > 147,8,138,1,79,12,103,0,138,1, >- 79,12,103,0,19,100,12,0,137,1, >+ 79,12,103,0,8,147,2,0,137,1, > 79,12,103,0,137,38,146,66,162,1, > 79,12,103,0,146,66,162,1,79,12, >- 103,0,18,89,12,0,137,38,146,1, >+ 103,0,38,137,2,0,137,38,146,1, > 79,12,103,0,146,1,79,12,103,0, > 137,38,162,8,142,1,79,12,103,0, > 137,38,162,8,79,1,79,12,103,0, > 137,38,162,1,79,12,103,0,186,59, >- 30,0,14,0,169,59,83,0,169,59, >+ 30,0,60,0,169,59,83,0,169,59, > 80,0,184,1,30,0,150,1,80,0 > }; > }; >@@ -1553,53 +1661,6 @@ > public final static String name[] = Name.name; > public final String name(int index) { return name[index]; } > >- public final static int >- ERROR_SYMBOL = 78, >- SCOPE_UBOUND = 44, >- SCOPE_SIZE = 45, >- MAX_NAME_LENGTH = 29; >- >- 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 = 242, >- NT_OFFSET = 78, >- LA_STATE_OFFSET = 4472, >- MAX_LA = 1, >- NUM_RULES = 300, >- NUM_NONTERMINALS = 119, >- NUM_SYMBOLS = 197, >- SEGMENT_SIZE = 8192, >- START_STATE = 3864, >- IDENTIFIER_SYMBOL = 6, >- EOFT_SYMBOL = 75, >- EOLT_SYMBOL = 75, >- ACCEPT_ACTION = 4171, >- ERROR_ACTION = 4172; >- >- 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]; > } >@@ -1613,10 +1674,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/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.16 >diff -u -r1.16 OCLParsersym.java >--- src/org/eclipse/ocl/parser/OCLParsersym.java 9 Nov 2009 22:03:45 -0000 1.16 >+++ src/org/eclipse/ocl/parser/OCLParsersym.java 22 Dec 2009 21:42:08 -0000 >@@ -14,10 +14,11 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLParsersym.java,v 1.16 2009/11/09 22:03:45 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ > */ > /** > * Complete OCL Grammar >@@ -32,6 +33,7 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > >@@ -128,7 +130,7 @@ > TK_MULTI_LINE_COMMENT = 77, > TK_ERROR_TOKEN = 78; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "LPAREN", > "RPAREN", >@@ -210,5 +212,6 @@ > "ERROR_TOKEN" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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,185 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008, 2009 Eclipse.org and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * E.D.Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: EssentialOCLErrors.g,v 1.5 2009/11/09 22:11:45 ewillink 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 >+ ./ >+ >+----------------------------------------------------------------------- >+-- Names >+----------------------------------------------------------------------- >+ >+ ERROR_SimpleNameCS ::= ERROR_TOKEN >+ /.$BeginCode >+ int token = $getToken(1); >+ reportErrorTokenMessage(token, OCLParserErrors.MISSING_SIMPLE_NAME); >+ IToken iToken = getIToken(token); >+ SimpleNameCS result = createSimpleNameCS( >+ SimpleTypeEnum.IDENTIFIER_LITERAL, >+ iToken >+ ); >+ setOffsets(result, iToken); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ simpleNameCS -> ERROR_SimpleNameCS >+-- simpleNameCS -> reservedKeyword ERROR_SimpleNameCS >+ >+----------------------------------------------------------------------- >+-- Types >+----------------------------------------------------------------------- >+ collectionTypeCS ::= CollectionTypeIdentifierCS '(' typeCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RPAREN); >+ CollectionTypeCS result = (CollectionTypeCS)dtParser.getSym(1); >+ result.setTypeCS((TypeCS)dtParser.getSym(3)); >+ setOffsets(result, result, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Declarations >+----------------------------------------------------------------------- >+-- VariableDeclarationCS ::= notLiteralNorReservedSimpleNameCS ERROR_TOKEN >+-- /.$BeginCode >+-- reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_VARIABLE_TYPE); >+-- SimpleNameCS name = (SimpleNameCS)$getSym(1); >+-- VariableCS result = createVariableCS(name, null, null); >+-- setOffsets(result, name, getIToken($getToken(2))); >+-- $setResult(result); >+-- $EndCode >+-- ./ >+ >+-- variableDeclarationListCS ::= ERROR_TOKEN >+-- /.$BeginCode >+-- reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_VARIABLES); >+-- EList result = new BasicEList(); >+-- $setResult(result); >+-- $EndCode >+-- ./ >+ >+----------------------------------------------------------------------- >+-- Literals >+----------------------------------------------------------------------- >+ TupleLiteralExpCS ::= Tuple ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_LBRACE); >+ TupleLiteralExpCS result = createTupleLiteralExpCS((EList<VariableCS>)$getSym(3)); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ TupleLiteralPartsCS ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_VARIABLES); >+ EList<VariableCS> result = new BasicEList<VariableCS>(); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Calls >+----------------------------------------------------------------------- >+ AssociationClassCallExpCS ::= simpleNameCS '[' argumentsCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RBRACK); >+ VariableExpCS result = createVariableExpCS( >+ (SimpleNameCS)$getSym(1), >+ (EList<OCLExpressionCS>)$getSym(3), >+ null >+ ); >+ setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Expressions >+----------------------------------------------------------------------- >+ IfExpCS ::= if OclExpressionCS then OclExpressionCS else OclExpressionCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_ENDIF); >+ IfExpCS 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); >+ IfExpCS 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); >+ IfExpCS 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); >+ IfExpCS 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 >+ ./ >+ >+ primaryExpCS ::= '(' OclExpressionCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_RPAREN); >+ OCLExpressionCS result = (OCLExpressionCS)$getSym(2); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+%End >Index: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi >=================================================================== >RCS file: src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi >diff -N src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,35 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008, 2009 IBM Corporation and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * IBM - Initial API and implementation >+-- * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLBacktrackingKWLexer.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- The OCL Backtracking KeyWord Lexer, which is nominally identical to the >+-- normal KeyWord Lexer, however the extra ERROR_TOKEN symbol makes it difficult >+-- to share reliably. >+-- >+ >+%options slr >+%options fp=OCLBacktrackingKWLexer,prefix=Char_ >+%options noserialize >+%options package=org.eclipse.ocl.parser.backtracking >+%options template=../../lpg/KeywordTemplateD.gi >+%options export_terminals=("OCLBacktrackingParsersym.java", "TK_") >+%options include_directory="..;../../lpg" >+ >+%Import >+ OCLKWLexer.gi >+%End >Index: src/org/eclipse/ocl/parser/backtracking/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.10 >diff -u -r1.10 OCLBacktrackingKWLexer.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java 9 Nov 2009 22:08:15 -0000 1.10 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java 22 Dec 2009 21:42:10 -0000 >@@ -12,9 +12,11 @@ > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * E.D.Willink - Bug 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLBacktrackingKWLexer.java,v 1.10 2009/11/09 22:08:15 ewillink Exp $ >+* > */ > /** > * Complete OCL Keyword Lexer >@@ -29,6 +31,8 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > >@@ -36,7 +40,6 @@ > > > >- > public class OCLBacktrackingKWLexer extends OCLBacktrackingKWLexerprs implements OCLBacktrackingParsersym > { > private char[] inputChars; >@@ -74,66 +77,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); > } > > >@@ -145,253 +150,295 @@ > // > // Rule 1: KeyWord ::= s e l f > // >- keywordKind[1] = (TK_self); >+ >+ keywordKind[1] = (OCLBacktrackingParsersym.TK_self); > > > // > // Rule 2: KeyWord ::= i f > // >- keywordKind[2] = (TK_if); >+ >+ keywordKind[2] = (OCLBacktrackingParsersym.TK_if); > > > // > // Rule 3: KeyWord ::= t h e n > // >- keywordKind[3] = (TK_then); >+ >+ keywordKind[3] = (OCLBacktrackingParsersym.TK_then); > > > // > // Rule 4: KeyWord ::= e l s e > // >- keywordKind[4] = (TK_else); >+ >+ keywordKind[4] = (OCLBacktrackingParsersym.TK_else); > > > // > // Rule 5: KeyWord ::= e n d i f > // >- keywordKind[5] = (TK_endif); >+ >+ keywordKind[5] = (OCLBacktrackingParsersym.TK_endif); > > > // > // Rule 6: KeyWord ::= a n d > // >- keywordKind[6] = (TK_and); >+ >+ keywordKind[6] = (OCLBacktrackingParsersym.TK_and); > > > // > // Rule 7: KeyWord ::= o r > // >- keywordKind[7] = (TK_or); >+ >+ keywordKind[7] = (OCLBacktrackingParsersym.TK_or); > > > // > // Rule 8: KeyWord ::= x o r > // >- keywordKind[8] = (TK_xor); >+ >+ keywordKind[8] = (OCLBacktrackingParsersym.TK_xor); > > > // > // Rule 9: KeyWord ::= n o t > // >- keywordKind[9] = (TK_not); >+ >+ keywordKind[9] = (OCLBacktrackingParsersym.TK_not); > > > // > // Rule 10: KeyWord ::= i m p l i e s > // >- keywordKind[10] = (TK_implies); >+ >+ keywordKind[10] = (OCLBacktrackingParsersym.TK_implies); > > > // > // Rule 11: KeyWord ::= l e t > // >- keywordKind[11] = (TK_let); >+ >+ keywordKind[11] = (OCLBacktrackingParsersym.TK_let); > > > // > // Rule 12: KeyWord ::= i n > // >- keywordKind[12] = (TK_in); >+ >+ keywordKind[12] = (OCLBacktrackingParsersym.TK_in); > > > // > // Rule 13: KeyWord ::= t r u e > // >- keywordKind[13] = (TK_true); >+ >+ keywordKind[13] = (OCLBacktrackingParsersym.TK_true); > > > // > // Rule 14: KeyWord ::= f a l s e > // >- keywordKind[14] = (TK_false); >+ >+ keywordKind[14] = (OCLBacktrackingParsersym.TK_false); > > > // > // Rule 15: KeyWord ::= S e t > // >- keywordKind[15] = (TK_Set); >+ >+ keywordKind[15] = (OCLBacktrackingParsersym.TK_Set); > > > // > // Rule 16: KeyWord ::= B a g > // >- keywordKind[16] = (TK_Bag); >+ >+ keywordKind[16] = (OCLBacktrackingParsersym.TK_Bag); > > > // > // Rule 17: KeyWord ::= S e q u e n c e > // >- keywordKind[17] = (TK_Sequence); >+ >+ keywordKind[17] = (OCLBacktrackingParsersym.TK_Sequence); > > > // > // Rule 18: KeyWord ::= C o l l e c t i o n > // >- keywordKind[18] = (TK_Collection); >+ >+ keywordKind[18] = (OCLBacktrackingParsersym.TK_Collection); > > > // > // Rule 19: KeyWord ::= O r d e r e d S e t > // >- keywordKind[19] = (TK_OrderedSet); >+ >+ keywordKind[19] = (OCLBacktrackingParsersym.TK_OrderedSet); > > > // > // Rule 20: KeyWord ::= S t r i n g > // >- keywordKind[20] = (TK_String); >+ >+ keywordKind[20] = (OCLBacktrackingParsersym.TK_String); > > > // > // Rule 21: KeyWord ::= I n t e g e r > // >- keywordKind[21] = (TK_Integer); >+ >+ keywordKind[21] = (OCLBacktrackingParsersym.TK_Integer); > > > // > // Rule 22: KeyWord ::= U n l i m i t e d N a t u r a l > // >- keywordKind[22] = (TK_UnlimitedNatural); >+ >+ keywordKind[22] = (OCLBacktrackingParsersym.TK_UnlimitedNatural); > > > // > // Rule 23: KeyWord ::= R e a l > // >- keywordKind[23] = (TK_Real); >+ >+ keywordKind[23] = (OCLBacktrackingParsersym.TK_Real); > > > // > // Rule 24: KeyWord ::= B o o l e a n > // >- keywordKind[24] = (TK_Boolean); >+ >+ keywordKind[24] = (OCLBacktrackingParsersym.TK_Boolean); > > > // > // Rule 25: KeyWord ::= T u p l e > // >- keywordKind[25] = (TK_Tuple); >+ >+ keywordKind[25] = (OCLBacktrackingParsersym.TK_Tuple); > > > // > // Rule 26: KeyWord ::= O c l A n y > // >- keywordKind[26] = (TK_OclAny); >+ >+ keywordKind[26] = (OCLBacktrackingParsersym.TK_OclAny); > > > // > // Rule 27: KeyWord ::= O c l V o i d > // >- keywordKind[27] = (TK_OclVoid); >+ >+ keywordKind[27] = (OCLBacktrackingParsersym.TK_OclVoid); > > > // > // Rule 28: KeyWord ::= O c l I n v a l i d > // >- keywordKind[28] = (TK_OclInvalid); >+ >+ keywordKind[28] = (OCLBacktrackingParsersym.TK_OclInvalid); > > > // > // Rule 29: KeyWord ::= n u l l > // >- keywordKind[29] = (TK_null); >+ >+ keywordKind[29] = (OCLBacktrackingParsersym.TK_null); > > > // > // Rule 30: KeyWord ::= i n v a l i d > // >- keywordKind[30] = (TK_invalid); >+ >+ keywordKind[30] = (OCLBacktrackingParsersym.TK_invalid); > > > // > // Rule 31: KeyWord ::= i n v > // >- keywordKind[31] = (TK_inv); >+ >+ keywordKind[31] = (OCLBacktrackingParsersym.TK_inv); > > > // > // Rule 32: KeyWord ::= p r e > // >- keywordKind[32] = (TK_pre); >+ >+ keywordKind[32] = (OCLBacktrackingParsersym.TK_pre); > > > // > // Rule 33: KeyWord ::= p o s t > // >- keywordKind[33] = (TK_post); >+ >+ keywordKind[33] = (OCLBacktrackingParsersym.TK_post); > > > // > // Rule 34: KeyWord ::= b o d y > // >- keywordKind[34] = (TK_body); >+ >+ keywordKind[34] = (OCLBacktrackingParsersym.TK_body); > > > // > // Rule 35: KeyWord ::= c o n t e x t > // >- keywordKind[35] = (TK_context); >+ >+ keywordKind[35] = (OCLBacktrackingParsersym.TK_context); > > > // > // Rule 36: KeyWord ::= p a c k a g e > // >- keywordKind[36] = (TK_package); >+ >+ keywordKind[36] = (OCLBacktrackingParsersym.TK_package); > > > // > // Rule 37: KeyWord ::= e n d p a c k a g e > // >- keywordKind[37] = (TK_endpackage); >+ >+ keywordKind[37] = (OCLBacktrackingParsersym.TK_endpackage); > > > // > // Rule 38: KeyWord ::= d e f > // >- keywordKind[38] = (TK_def); >+ >+ keywordKind[38] = (OCLBacktrackingParsersym.TK_def); > > > // > // Rule 39: KeyWord ::= d e r i v e > // >- keywordKind[39] = (TK_derive); >+ >+ keywordKind[39] = (OCLBacktrackingParsersym.TK_derive); > > > // > // Rule 40: KeyWord ::= i n i t > // >- keywordKind[40] = (TK_init); >+ >+ keywordKind[40] = (OCLBacktrackingParsersym.TK_init); > > > // > // Rule 41: KeyWord ::= O c l M e s s a g e > // >- keywordKind[41] = (TK_OclMessage); >+ >+ keywordKind[41] = (OCLBacktrackingParsersym.TK_OclMessage); > > > // > // Rule 42: KeyWord ::= s t a t i c > // >- keywordKind[42] = (TK_static); >+ >+ keywordKind[42] = (OCLBacktrackingParsersym.TK_static); > > > >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.10 >diff -u -r1.10 OCLBacktrackingKWLexerprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java 9 Nov 2009 22:08:23 -0000 1.10 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java 22 Dec 2009 21:42:10 -0000 >@@ -12,9 +12,11 @@ > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * E.D.Willink - Bug 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLBacktrackingKWLexerprs.java,v 1.10 2009/11/09 22:08:23 ewillink Exp $ >+* > */ > /** > * Complete OCL Keyword Lexer >@@ -29,12 +31,95 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > > package org.eclipse.ocl.parser.backtracking; > >-public class OCLBacktrackingKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingKWLexersym { >+public class OCLBacktrackingKWLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingKWLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 159; >+ 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 = 247; >+ 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 = 42; >+ 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 = 43; >+ 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 = 36; >+ 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 = 204; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 205; >+ 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, >@@ -43,7 +128,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; >@@ -136,7 +221,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 > }; > }; > public final static byte termCheck[] = TermCheck.termCheck; >@@ -200,56 +285,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 = 159, >- NT_OFFSET = 54, >- LA_STATE_OFFSET = 247, >- MAX_LA = 1, >- NUM_RULES = 42, >- NUM_NONTERMINALS = 2, >- NUM_SYMBOLS = 56, >- SEGMENT_SIZE = 8192, >- START_STATE = 43, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 36, >- EOLT_SYMBOL = 55, >- ACCEPT_ACTION = 204, >- ERROR_ACTION = 205; >- >- 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/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.9 >diff -u -r1.9 OCLBacktrackingKWLexersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java 9 Nov 2009 22:14:17 -0000 1.9 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java 22 Dec 2009 21:42:10 -0000 >@@ -12,9 +12,11 @@ > * IBM - Initial API and implementation > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * E.D.Willink - Bug 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLBacktrackingKWLexersym.java,v 1.9 2009/11/09 22:14:17 ewillink Exp $ >+* > */ > /** > * Complete OCL Keyword Lexer >@@ -29,6 +31,8 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > >@@ -46,6 +50,8 @@ > public interface OCLBacktrackingKWLexersym { > public final static int > Char_DollarSign = 37, >+ Char_Percent = 38, >+ Char__ = 39, > Char_a = 4, > Char_b = 23, > Char_c = 10, >@@ -55,7 +61,7 @@ > Char_g = 12, > Char_h = 24, > Char_i = 6, >- Char_j = 38, >+ Char_j = 40, > Char_k = 17, > Char_l = 2, > Char_m = 18, >@@ -68,39 +74,39 @@ > Char_t = 3, > Char_u = 14, > Char_v = 16, >- Char_w = 39, >+ Char_w = 41, > Char_x = 19, > Char_y = 20, >- Char_z = 40, >+ Char_z = 42, > Char_A = 26, > Char_B = 27, > Char_C = 28, >- Char_D = 41, >- Char_E = 42, >- Char_F = 43, >- Char_G = 44, >- Char_H = 45, >+ Char_D = 43, >+ Char_E = 44, >+ Char_F = 45, >+ Char_G = 46, >+ Char_H = 47, > Char_I = 21, >- Char_J = 46, >- Char_K = 47, >- Char_L = 48, >+ Char_J = 48, >+ Char_K = 49, >+ Char_L = 50, > Char_M = 29, > Char_N = 30, > Char_O = 31, >- Char_P = 49, >- Char_Q = 50, >+ Char_P = 51, >+ Char_Q = 52, > Char_R = 32, > Char_S = 22, > Char_T = 33, > Char_U = 34, > Char_V = 35, >- 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 = 36; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "e", > "l", >@@ -139,6 +145,8 @@ > "V", > "EOF", > "DollarSign", >+ "Percent", >+ "_", > "j", > "w", > "z", >@@ -158,5 +166,6 @@ > "Z" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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 and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * IBM - Initial API and implementation >+-- * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLBacktrackingLexer.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $ >+-- */ >+-- >+-- The OCL Backtracking Lexer, which is nominally identical to the >+-- normal Lexer, however the extra ERROR_TOKEN symbol makes it difficult >+-- to share reliably. >+-- >+ >+%options escape=$ >+%options la=2 >+%options fp=OCLBacktrackingLexer,prefix=Char_ >+%options single-productions >+%options noserialize >+%options package=org.eclipse.ocl.parser.backtracking >+%options template=../../lpg/LexerTemplateD.gi >+%options filter=OCLBacktrackingKWLexer.gi >+%options export_terminals=("OCLBacktrackingParsersym.java", "TK_") >+%options include_directory="..;../../lpg" >+ >+%Import >+ OCLLexer.gi >+%End >+ >+%Define >+ $kw_lexer_class /.OCLBacktrackingKWLexer./ >+%End >Index: src/org/eclipse/ocl/parser/backtracking/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.10 >diff -u -r1.10 OCLBacktrackingLexer.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java 9 Nov 2009 22:14:06 -0000 1.10 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java 22 Dec 2009 21:42:12 -0000 >@@ -13,9 +13,11 @@ > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * Borland - Bug 242880 > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLBacktrackingLexer.java,v 1.10 2009/11/09 22:14:06 ewillink Exp $ >+* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ > */ > /** > * Complete OCL Lexer >@@ -30,12 +32,14 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112, 292594 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > > 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; >@@ -68,7 +72,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) { >@@ -97,7 +101,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()); > } >@@ -108,7 +112,7 @@ > @Override > public void setInputChars(char[] inputChars) { > super.setInputChars(inputChars); >- kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER); >+ kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER); > } > > @Override >@@ -124,12 +128,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(), >@@ -142,7 +146,7 @@ > { > int startOffset = getLeftSpan(), > endOffset = getRightSpan(); >- super.getPrsStream().makeAdjunct(startOffset, endOffset, kind); >+ super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind); > } > > final void skipToken() >@@ -333,7 +337,7 @@ > // Rule 2: Token ::= " SLNotDQ " > // > case 2: { >- makeToken(TK_IDENTIFIER); >+ makeToken(OCLBacktrackingParsersym.TK_IDENTIFIER); > break; > } > >@@ -341,7 +345,7 @@ > // Rule 3: Token ::= SingleQuote SLNotSQOpt SingleQuote > // > case 3: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -349,7 +353,7 @@ > // Rule 4: Token ::= Acute SLNotSQOpt Acute > // > case 4: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -357,7 +361,7 @@ > // Rule 5: Token ::= BackQuote SLNotSQOpt Acute > // > case 5: { >- makeToken(TK_STRING_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL); > break; > } > >@@ -383,7 +387,7 @@ > // Rule 9: Token ::= RealLiteral > // > case 9: { >- makeToken(TK_REAL_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_REAL_LITERAL); > break; > } > >@@ -391,7 +395,7 @@ > // Rule 10: Token ::= SLC > // > case 10: { >- makeComment(TK_SINGLE_LINE_COMMENT); >+ makeComment(OCLBacktrackingParsersym.TK_SINGLE_LINE_COMMENT); > break; > } > >@@ -399,7 +403,7 @@ > // Rule 11: Token ::= / * Inside Stars / > // > case 11: { >- makeComment(TK_MULTI_LINE_COMMENT); >+ makeComment(OCLBacktrackingParsersym.TK_MULTI_LINE_COMMENT); > break; > } > >@@ -415,7 +419,7 @@ > // Rule 13: Token ::= + > // > case 13: { >- makeToken(TK_PLUS); >+ makeToken(OCLBacktrackingParsersym.TK_PLUS); > break; > } > >@@ -423,7 +427,7 @@ > // Rule 14: Token ::= - > // > case 14: { >- makeToken(TK_MINUS); >+ makeToken(OCLBacktrackingParsersym.TK_MINUS); > break; > } > >@@ -431,7 +435,7 @@ > // Rule 15: Token ::= * > // > case 15: { >- makeToken(TK_MULTIPLY); >+ makeToken(OCLBacktrackingParsersym.TK_MULTIPLY); > break; > } > >@@ -439,7 +443,7 @@ > // Rule 16: Token ::= / > // > case 16: { >- makeToken(TK_DIVIDE); >+ makeToken(OCLBacktrackingParsersym.TK_DIVIDE); > break; > } > >@@ -447,7 +451,7 @@ > // Rule 17: Token ::= ( > // > case 17: { >- makeToken(TK_LPAREN); >+ makeToken(OCLBacktrackingParsersym.TK_LPAREN); > break; > } > >@@ -455,7 +459,7 @@ > // Rule 18: Token ::= ) > // > case 18: { >- makeToken(TK_RPAREN); >+ makeToken(OCLBacktrackingParsersym.TK_RPAREN); > break; > } > >@@ -463,7 +467,7 @@ > // Rule 19: Token ::= > > // > case 19: { >- makeToken(TK_GREATER); >+ makeToken(OCLBacktrackingParsersym.TK_GREATER); > break; > } > >@@ -471,7 +475,7 @@ > // Rule 20: Token ::= < > // > case 20: { >- makeToken(TK_LESS); >+ makeToken(OCLBacktrackingParsersym.TK_LESS); > break; > } > >@@ -479,7 +483,7 @@ > // Rule 21: Token ::= = > // > case 21: { >- makeToken(TK_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_EQUAL); > break; > } > >@@ -487,7 +491,7 @@ > // Rule 22: Token ::= > = > // > case 22: { >- makeToken(TK_GREATER_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_GREATER_EQUAL); > break; > } > >@@ -495,7 +499,7 @@ > // Rule 23: Token ::= < = > // > case 23: { >- makeToken(TK_LESS_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_LESS_EQUAL); > break; > } > >@@ -503,7 +507,7 @@ > // Rule 24: Token ::= < > > // > case 24: { >- makeToken(TK_NOT_EQUAL); >+ makeToken(OCLBacktrackingParsersym.TK_NOT_EQUAL); > break; > } > >@@ -511,7 +515,7 @@ > // Rule 25: Token ::= [ > // > case 25: { >- makeToken(TK_LBRACKET); >+ makeToken(OCLBacktrackingParsersym.TK_LBRACKET); > break; > } > >@@ -519,7 +523,7 @@ > // Rule 26: Token ::= ] > // > case 26: { >- makeToken(TK_RBRACKET); >+ makeToken(OCLBacktrackingParsersym.TK_RBRACKET); > break; > } > >@@ -527,7 +531,7 @@ > // Rule 27: Token ::= { > // > case 27: { >- makeToken(TK_LBRACE); >+ makeToken(OCLBacktrackingParsersym.TK_LBRACE); > break; > } > >@@ -535,7 +539,7 @@ > // Rule 28: Token ::= } > // > case 28: { >- makeToken(TK_RBRACE); >+ makeToken(OCLBacktrackingParsersym.TK_RBRACE); > break; > } > >@@ -543,7 +547,7 @@ > // Rule 29: Token ::= - > > // > case 29: { >- makeToken(TK_ARROW); >+ makeToken(OCLBacktrackingParsersym.TK_ARROW); > break; > } > >@@ -551,7 +555,7 @@ > // Rule 30: Token ::= | > // > case 30: { >- makeToken(TK_BAR); >+ makeToken(OCLBacktrackingParsersym.TK_BAR); > break; > } > >@@ -559,7 +563,7 @@ > // Rule 31: Token ::= , > // > case 31: { >- makeToken(TK_COMMA); >+ makeToken(OCLBacktrackingParsersym.TK_COMMA); > break; > } > >@@ -567,7 +571,7 @@ > // Rule 32: Token ::= : > // > case 32: { >- makeToken(TK_COLON); >+ makeToken(OCLBacktrackingParsersym.TK_COLON); > break; > } > >@@ -575,7 +579,7 @@ > // Rule 33: Token ::= : : > // > case 33: { >- makeToken(TK_COLONCOLON); >+ makeToken(OCLBacktrackingParsersym.TK_COLONCOLON); > break; > } > >@@ -583,7 +587,7 @@ > // Rule 34: Token ::= ; > // > case 34: { >- makeToken(TK_SEMICOLON); >+ makeToken(OCLBacktrackingParsersym.TK_SEMICOLON); > break; > } > >@@ -597,7 +601,7 @@ > // Rule 36: DotToken ::= . > // > case 36: { >- makeToken(TK_DOT); >+ makeToken(OCLBacktrackingParsersym.TK_DOT); > break; > } > >@@ -611,7 +615,7 @@ > // Rule 38: DotDotToken ::= . . > // > case 38: { >- makeToken(TK_DOTDOT); >+ makeToken(OCLBacktrackingParsersym.TK_DOTDOT); > break; > } > >@@ -619,7 +623,7 @@ > // Rule 39: IntegerLiteral ::= Integer > // > case 39: { >- makeToken(TK_INTEGER_LITERAL); >+ makeToken(OCLBacktrackingParsersym.TK_INTEGER_LITERAL); > break; > } > >@@ -627,7 +631,7 @@ > // Rule 264: Token ::= @ > // > case 264: { >- makeToken(TK_AT); >+ makeToken(OCLBacktrackingParsersym.TK_AT); > break; > } > >@@ -635,7 +639,7 @@ > // Rule 265: Token ::= ^ > // > case 265: { >- makeToken(TK_CARET); >+ makeToken(OCLBacktrackingParsersym.TK_CARET); > break; > } > >@@ -643,7 +647,7 @@ > // Rule 266: Token ::= ^ ^ > // > case 266: { >- makeToken(TK_CARETCARET); >+ makeToken(OCLBacktrackingParsersym.TK_CARETCARET); > break; > } > >@@ -651,7 +655,7 @@ > // Rule 267: Token ::= ? > // > case 267: { >- makeToken(TK_QUESTIONMARK); >+ makeToken(OCLBacktrackingParsersym.TK_QUESTIONMARK); > break; > } > >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.11 >diff -u -r1.11 OCLBacktrackingLexerprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java 9 Nov 2009 22:13:52 -0000 1.11 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java 22 Dec 2009 21:42:13 -0000 >@@ -13,9 +13,11 @@ > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * Borland - Bug 242880 > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLBacktrackingLexerprs.java,v 1.11 2009/11/09 22:13:52 ewillink Exp $ >+* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ > */ > /** > * Complete OCL Lexer >@@ -30,12 +32,106 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112, 292594 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > > package org.eclipse.ocl.parser.backtracking; > >-public class OCLBacktrackingLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingLexersym { >+public class OCLBacktrackingLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingLexersym { >+ public final static int ERROR_SYMBOL = 0; >+ public final int getErrorSymbol() { return ERROR_SYMBOL; } >+ >+ public final static int SCOPE_UBOUND = 0; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 0; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 0; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 40; >+ 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 = 709; >+ 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 = 267; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 35; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 138; >+ 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 = 268; >+ 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 = 102; >+ 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 = 441; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 442; >+ 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,1,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,1, >+ 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, >+ 19,22,23,24,27,32,14,21,29,34, >+ 5,35,7,8,16,17,20,26,28,33, >+ 2,3,4,6,9,10,11,12,13,15, >+ 18,25,30,31,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, >@@ -417,56 +513,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 = 40, >- NT_OFFSET = 103, >- LA_STATE_OFFSET = 709, >- MAX_LA = 2, >- NUM_RULES = 267, >- NUM_NONTERMINALS = 35, >- NUM_SYMBOLS = 138, >- SEGMENT_SIZE = 8192, >- START_STATE = 268, >- IDENTIFIER_SYMBOL = 0, >- EOFT_SYMBOL = 102, >- EOLT_SYMBOL = 104, >- ACCEPT_ACTION = 441, >- ERROR_ACTION = 442; >- >- 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/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.10 >diff -u -r1.10 OCLBacktrackingLexersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java 9 Nov 2009 22:14:27 -0000 1.10 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java 22 Dec 2009 21:42:13 -0000 >@@ -13,9 +13,11 @@ > * E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling > * Borland - Bug 242880 > * E.D.Willink - Bug 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > * >-* $Id: OCLBacktrackingLexersym.java,v 1.10 2009/11/09 22:14:27 ewillink Exp $ >+* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $ > */ > /** > * Complete OCL Lexer >@@ -30,6 +32,8 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 292112, 292594 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+* > * </copyright> > */ > >@@ -150,7 +154,7 @@ > Char_Equal = 16, > Char_EOF = 102; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "0", > "1", >@@ -257,5 +261,6 @@ > "CtlCharNotWS" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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.2 >diff -u -r1.2 OCLBacktrackingParser.g >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g 15 Oct 2009 19:41:25 -0000 1.2 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g 22 Dec 2009 21:42:13 -0000 >@@ -33,27 +33,27 @@ > %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/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.15 >diff -u -r1.15 OCLBacktrackingParser.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java 18 Dec 2009 06:26:04 -0000 1.15 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java 22 Dec 2009 21:42:15 -0000 >@@ -14,10 +14,11 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingParser.java,v 1.15 2009/12/18 06:26:04 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ > */ > /** > * Complete OCL Grammar >@@ -32,6 +33,7 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > >@@ -70,15 +72,15 @@ > import org.eclipse.ocl.cst.VariableCS; > import org.eclipse.ocl.cst.VariableExpCS; > >-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.ClassifierContextDeclCS; >@@ -464,7 +466,7 @@ > // > case 57: { > >- TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3)); >+ TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3)); > setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4))); > dtParser.setSym1(result); > break; >@@ -2402,7 +2404,7 @@ > > OperationCS result = createOperationCS( > getIToken(dtParser.getToken(1)), >- (EList<VariableCS>)dtParser.getSym(3), >+ new BasicEList<VariableCS>(), > null > ); > setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5))); >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.12 >diff -u -r1.12 OCLBacktrackingParserprs.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java 9 Nov 2009 22:14:52 -0000 1.12 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java 22 Dec 2009 21:42:17 -0000 >@@ -14,10 +14,11 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingParserprs.java,v 1.12 2009/11/09 22:14:52 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ > */ > /** > * Complete OCL Grammar >@@ -32,6 +33,7 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > >@@ -45,7 +47,114 @@ > * @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 = 53; >+ public final int getScopeUbound() { return SCOPE_UBOUND; } >+ >+ public final static int SCOPE_SIZE = 54; >+ public final int getScopeSize() { return SCOPE_SIZE; } >+ >+ public final static int MAX_NAME_LENGTH = 29; >+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; } >+ >+ public final static int NUM_STATES = 255; >+ public final int getNumStates() { return NUM_STATES; } >+ >+ public final static int NT_OFFSET = 78; >+ public final int getNtOffset() { return NT_OFFSET; } >+ >+ public final static int LA_STATE_OFFSET = 4690; >+ 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 = 333; >+ public final int getNumRules() { return NUM_RULES; } >+ >+ public final static int NUM_NONTERMINALS = 122; >+ public final int getNumNonterminals() { return NUM_NONTERMINALS; } >+ >+ public final static int NUM_SYMBOLS = 200; >+ 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 = 3970; >+ public final int getStartState() { return START_STATE; } >+ >+ public final static int IDENTIFIER_SYMBOL = 5; >+ public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; } >+ >+ public final static int EOFT_SYMBOL = 72; >+ public final int getEoftSymbol() { return EOFT_SYMBOL; } >+ >+ public final static int EOLT_SYMBOL = 72; >+ public final int getEoltSymbol() { return EOLT_SYMBOL; } >+ >+ public final static int ACCEPT_ACTION = 4356; >+ public final int getAcceptAction() { return ACCEPT_ACTION; } >+ >+ public final static int ERROR_ACTION = 4357; >+ public final int getErrorAction() { return ERROR_ACTION; } >+ >+ public final static boolean BACKTRACK = true; >+ public final boolean getBacktrack() { return BACKTRACK; } >+ >+ public final int getStartSymbol() { return lhs(0); } >+ public final boolean isValidForParser() { return OCLBacktrackingParsersym.isValidForParser; } >+ >+ >+ public interface IsNullable { >+ public final static byte isNullable[] = {0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 1,0,0,0,1,1,0,0,0,0, >+ 0,0,0,0,0,0,0,0,0,0, >+ 1,0,1,1,0,0,0,0,0,0, >+ 1,0,1,0,0,1,0,0,0,0, >+ 0,0,1,0,0,0,0,0,0,0 >+ }; >+ }; >+ public final static byte isNullable[] = IsNullable.isNullable; >+ public final boolean isNullable(int index) { return isNullable[index] != 0; } >+ >+ public interface ProsthesesIndex { >+ public final static byte prosthesesIndex[] = {0, >+ 12,122,9,10,14,16,17,11,28,29, >+ 30,31,32,37,38,39,40,41,42,43, >+ 45,46,47,48,49,50,51,52,53,58, >+ 59,60,85,87,88,89,90,99,82,83, >+ 84,79,80,81,76,77,78,73,74,75, >+ 70,71,72,67,68,69,64,65,66,23, >+ 54,61,62,63,20,120,6,8,13,24, >+ 55,98,56,15,21,22,57,96,93,27, >+ 86,108,109,110,111,26,35,36,94,95, >+ 102,25,33,34,97,100,101,104,107,113, >+ 114,115,118,119,2,3,4,18,19,44, >+ 91,92,103,105,106,112,116,117,121,1, >+ 5,7 >+ }; >+ }; >+ 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, >@@ -1470,35 +1579,35 @@ > > public interface ScopeRhs { > public final static char scopeRhs[] = {0, >- 138,2,0,79,0,138,30,0,138,74, >- 138,30,0,35,89,79,0,138,75,138, >- 74,138,30,0,36,89,79,0,35,89, >- 36,89,79,0,149,60,79,0,152,2, >- 81,0,174,2,79,41,104,0,12,0, >+ 138,2,0,1,0,138,30,0,138,74, >+ 138,30,0,74,138,1,0,138,75,138, >+ 74,138,30,0,75,138,1,0,74,138, >+ 75,138,1,0,149,60,79,0,152,2, >+ 81,0,174,2,79,41,104,0,3,0, > 174,2,79,42,104,0,155,2,150,79, >- 39,104,0,189,31,0,44,89,0,37, >- 0,36,89,37,0,35,89,36,89,37, >- 0,118,0,4,126,0,3,126,0,121, >- 0,2,124,0,1,124,0,124,0,9, >- 121,0,8,121,0,6,121,0,5,121, >- 0,127,0,10,118,0,7,118,0,130, >- 0,38,115,0,133,0,39,112,0,136, >- 0,40,109,0,142,0,42,106,0,16, >- 0,0,149,60,79,40,104,0,155,2, >+ 39,104,0,189,31,0,76,138,0,70, >+ 0,75,138,70,0,74,138,75,138,70, >+ 0,118,0,37,112,0,7,112,0,121, >+ 0,6,119,0,36,119,0,124,0,46, >+ 122,0,45,122,0,44,122,0,43,122, >+ 0,127,0,47,125,0,23,125,0,130, >+ 0,50,128,0,133,0,52,131,0,136, >+ 0,55,134,0,142,0,61,137,0,68, >+ 151,0,149,60,79,40,104,0,155,2, > 151,147,38,83,40,104,0,155,2,147, > 38,83,0,155,2,151,79,0,155,2, > 151,79,40,104,0,155,2,151,185,40, > 104,0,149,25,79,2,79,39,104,0, > 149,25,139,2,79,39,104,0,139,2, >- 79,39,104,0,19,100,12,0,138,2, >+ 79,39,104,0,25,149,3,0,138,2, > 79,39,104,0,138,49,148,69,164,2, > 79,39,104,0,148,69,164,2,79,39, >- 104,0,18,89,12,0,138,49,148,2, >+ 104,0,49,138,3,0,138,49,148,2, > 79,39,104,0,148,2,79,39,104,0, > 138,49,164,25,143,2,79,39,104,0, > 138,49,164,25,79,2,79,39,104,0, > 138,49,164,2,79,39,104,0,188,63, >- 18,0,14,0,171,63,84,0,171,63, >+ 18,0,51,0,171,63,84,0,171,63, > 81,0,186,2,18,0 > }; > }; >@@ -1708,53 +1817,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 = 53, >- SCOPE_SIZE = 54, >- MAX_NAME_LENGTH = 29; >- >- 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 = 255, >- NT_OFFSET = 78, >- LA_STATE_OFFSET = 4690, >- MAX_LA = 1, >- NUM_RULES = 333, >- NUM_NONTERMINALS = 122, >- NUM_SYMBOLS = 200, >- SEGMENT_SIZE = 8192, >- START_STATE = 3970, >- IDENTIFIER_SYMBOL = 5, >- EOFT_SYMBOL = 72, >- EOLT_SYMBOL = 72, >- ACCEPT_ACTION = 4356, >- ERROR_ACTION = 4357; >- >- 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]; > } >@@ -1768,10 +1830,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.12 >diff -u -r1.12 OCLBacktrackingParsersym.java >--- src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java 9 Nov 2009 22:15:06 -0000 1.12 >+++ src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java 22 Dec 2009 21:42:17 -0000 >@@ -14,10 +14,11 @@ > * E.D.Willink - Remove unnecessary warning suppression > * E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112 > * Borland - Bug 242880 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * > * </copyright> > * >-* $Id: OCLBacktrackingParsersym.java,v 1.12 2009/11/09 22:15:06 ewillink Exp $ >+* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $ > */ > /** > * Complete OCL Grammar >@@ -32,6 +33,7 @@ > * Contributors: > * IBM - Initial API and implementation > * E.D.Willink - Bug 259818, 285633, 292112 >+* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) > * </copyright> > */ > >@@ -132,7 +134,7 @@ > TK_MULTI_LINE_COMMENT = 78, > TK_ERROR_TOKEN = 1; > >- public final static String orderedTerminalSymbols[] = { >+ public final static String orderedTerminalSymbols[] = { > "", > "ERROR_TOKEN", > "LPAREN", >@@ -214,5 +216,6 @@ > "MULTI_LINE_COMMENT" > }; > >+ public final static int numTokenKinds = orderedTerminalSymbols.length; > public final static boolean isValidForParser = true; > } >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,263 @@ >+--/** >+-- * <copyright> >+-- * >+-- * Copyright (c) 2008 Eclipse.org and others. >+-- * All rights reserved. This program and the accompanying materials >+-- * are made available under the terms of the Eclipse Public License v1.0 >+-- * which accompanies this distribution, and is available at >+-- * http://www.eclipse.org/legal/epl-v10.html >+-- * >+-- * Contributors: >+-- * E.D. Willink - Initial API and implementation >+-- * Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153) >+-- * >+-- * </copyright> >+-- * >+-- * $Id: OCLParserErrors.g,v 1.5 2009/11/09 22:11:22 ewillink Exp $ >+-- */ >+-- >+-- Additional ERROR_TOKEN rules for The OCL Parser >+-- >+ >+%Import >+ OCLParser.g >+%End >+ >+%Import >+ EssentialOCLErrors.gi >+%End >+ >+%Rules >+ >+----------------------------------------------------------------------- >+-- Calls >+----------------------------------------------------------------------- >+ OclMessageExpCS ::= primaryExpCS '^^' simpleNameCS ERROR_TOKEN >+ /.$NewCase./ >+ OclMessageExpCS ::= primaryExpCS '^' simpleNameCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_MESSAGE_ARGUMENTS); >+ OCLExpressionCS target = (OCLExpressionCS)$getSym(1); >+ MessageExpCS result = createMessageExpCS( >+ target, >+ getIToken($getToken(2)).getKind() == $sym_type.TK_CARET, >+ (SimpleNameCS)$getSym(3), >+ new BasicEList<OCLMessageArgCS>() >+ ); >+ setOffsets(result, target, getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+----------------------------------------------------------------------- >+-- Contexts >+----------------------------------------------------------------------- >+ classifierContextDeclCS ::= context pathNameCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_INV_OR_DEF); >+ ClassifierContextDeclCS result = createClassifierContextDeclCS( >+ null, >+ (PathNameCS)$getSym(2), >+ new BasicEList<InvOrDefCS>() >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ defExpressionCS ::= typedUninitializedVariableCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_EQUALS); >+ VariableCS variableCS = (VariableCS)$getSym(1); >+ DefExpressionCS result = createDefExpressionCS( >+ variableCS, >+ null, >+ null >+ ); >+ setOffsets(result, variableCS, getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ defExpressionCS ::= simpleNameCS ERROR_Colon >+ /.$BeginCode >+ SimpleNameCS name = (SimpleNameCS)$getSym(1); >+ VariableCS variableCS = createVariableCS(name, null, null); >+ setOffsets(variableCS, name, getIToken($getToken(2))); >+ DefExpressionCS result = createDefExpressionCS( >+ variableCS, >+ null, >+ null >+ ); >+ setOffsets(result, variableCS, getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ invOrDefCS ::= inv unreservedSimpleNameCS ERROR_Colon >+ /.$BeginCode >+ InvCS result = createInvCS( >+ (SimpleNameCS)$getSym(2), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ invOrDefCS ::= def unreservedSimpleNameCS ERROR_Colon >+ /.$BeginCode >+ DefCS result = createDefCS( >+ false, >+ (SimpleNameCS)$getSym(2), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ invOrDefCS ::= static def unreservedSimpleNameCS ERROR_Colon >+ /.$BeginCode >+ DefCS result = createDefCS( >+ true, >+ (SimpleNameCS)$getSym(3), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ operationCS1 ::= simpleNameCS '(' parametersCSopt ')' ERROR_Colon >+ /.$BeginCode >+ OperationCS result = createOperationCS( >+ getIToken($getToken(1)), >+ new BasicEList<VariableCS>(), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS1 ::= simpleNameCS ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_LPAREN); >+ OperationCS result = createOperationCS( >+ getIToken($getToken(1)), >+ new BasicEList<VariableCS>(), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS1 ::= ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_IDENTIFIER); >+ OperationCS result = createOperationCS( >+ getIToken($getToken(1)), >+ new BasicEList<VariableCS>(), >+ null >+ ); >+ setOffsets(result, getIToken($getToken(1))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' unreservedSimpleNameCS '(' parametersCSopt ')' ERROR_Colon >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ OperationCS result = createOperationCS( >+ pathNameCS, >+ simpleNameCS, >+ (EList<VariableCS>)$getSym(5), >+ null >+ ); >+ setOffsets(result, pathNameCS, getIToken($getToken(7))); >+ $setResult(result); >+ $EndCode >+ ./ >+ operationCS2 ::= pathNameCS '::' ERROR_SimpleNameCS >+ /.$BeginCode >+ PathNameCS pathNameCS = (PathNameCS)$getSym(1); >+ SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3); >+ OperationCS result = createOperationCS( >+ pathNameCS, >+ simpleNameCS, >+ new BasicEList<VariableCS>(), >+ null >+ ); >+ setOffsets(result, pathNameCS, simpleNameCS); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ prePostOrBodyDeclCS ::= pre unreservedSimpleNameCS ERROR_Colon >+ /.$BeginCode >+ PrePostOrBodyDeclCS 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 unreservedSimpleNameCS ERROR_Colon >+ /.$BeginCode >+ PrePostOrBodyDeclCS 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 unreservedSimpleNameCS ERROR_Colon >+ /.$BeginCode >+ PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS( >+ PrePostOrBodyEnum.BODY_LITERAL, >+ (SimpleNameCS)$getSym(2), >+ createInvalidLiteralExpCS(getTokenText($getToken(3))) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ initOrDerValueCS ::= init ERROR_Colon >+ /.$BeginCode >+ InitValueCS result = createInitValueCS(null); >+ setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ initOrDerValueCS ::= derive ERROR_Colon >+ /.$BeginCode >+ DerValueCS result = createDerValueCS(null); >+ setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3))); >+ $setResult(result); >+ $EndCode >+ ./ >+ >+ packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt ERROR_Empty endpackage >+ /.$BeginCode >+ PackageDeclarationCS result = createPackageDeclarationCS( >+ (PathNameCS)$getSym(2), >+ (EList<ContextDeclCS>)$getSym(3) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5))); >+ $setResult(result); >+ $EndCode >+ ./ >+ packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt ERROR_TOKEN >+ /.$BeginCode >+ reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_ENDPACKAGE); >+ PackageDeclarationCS result = createPackageDeclarationCS( >+ (PathNameCS)$getSym(2), >+ (EList<ContextDeclCS>)$getSym(3) >+ ); >+ setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4))); >+ $setResult(result); >+ $EndCode >+ ./ >+%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