I implemented errorhandling and two errors for testing.
To let it work in my code, this must be added to ADL.g4
....
....
grammar Adl;
@parser::header{
import nl.rosa.archetype.errorhandling.ADLParserErrorMessages;
}
//
// ============== Parser rules ==============
//
ad.....
.....
.....
The error-handling itself is in the grammar. I needed to change the grammar a little bit:
metaDataItem:
metaDataTagAdlVersion '=' adlVersion
> metaDataTagUid '=' GUID
> metaDataTagBuildUid '=' GUID
> metaDataTagRmRelease '=' rmRelease
> metaDataTagIsControlled
> metaDataTagIsGenerated
> identifier ( '=' metaDataValue )?
;
adlVersion: VERSION_ID
> .+? {notifyErrorListeners(String.format(ADLParserErrorMessages.getErrorMessage("VARAV"), _localctx.getText()));} //invalid adl_version $1; must be a valid 3-part numeric version identifier
;
rmRelease: VERSION_ID
> .+? {notifyErrorListeners(String.format(ADLParserErrorMessages.getErrorMessage("VARRV"), _localctx.getText()));} //invalid rm_release $1; must be a valid 3-part numeric version identifier
;
You can find a code-example in the test-file ErrorsTest.java
During this week I will implement the other errors.
If you want to use the error-handling only, copy the different code to your project.
Of course you are free to use my code, which is quite compact, has a generated AOM, also.
I try to keep the AOM-part generated.
Best regards
Bert Verhees