Skip to Navigation | Skip to Content

openEHR-Technical mailing list archives

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Release 1.0.2 change - SPEC-260 - Correct theregex publishedforthe A


Thomas Beale wrote:

> archetype_id: qualified_rm_entity ‘.’ domain_concept ‘.’ version_id
>
> qualified_rm_entity: rm_originator ‘-’ rm_name ‘-’ rm_entity
> rm_originator: V_NAME
> rm_name: V_NAME
> rm_entity: V_NAME
>
> domain_concept: concept_name { ‘-’ specialisation }
> concept_name: V_NAME
> specialisation: V_NAME
>
> version_id: ‘v’ V_NONZERO_DIGIT [ V_NUMBER ] [ ‘.’ V_NUMBER [ ‘.’
> V_NUMBER ] ]
>
> V_NONZERO_DIGIT: [1-9]
> V_DIGIT: [0-9]
> V_NUMBER: [0-9]*
> V_NAME: [a-zA-Z][a-zA-Z0-9_]+
>
>
> The PERL regular expression equivalent of the above is as follows:
> [a-zA-Z]\w+(-[a-zA-Z]\w+){2}\.[a-zA-Z]\w+(-[a-zA-Z]\w+)*\.v[1-9]\d*(\.\d+){0,2}


This all looks correct to me now, Thomas, except for the version_id 
production rule:

‘v’ V_NONZERO_DIGIT [ V_NUMBER ] [ ‘.’ V_NUMBER [ ‘.’ V_NUMBER ] ]

I considered but rejected this idea, because it permits amputated 
version 
numbers such as these:

    v1.
    v1..
    v1..1
    v1.1.

I abandoned the "V_NUMBER" idea because it allows the two optional 
suffixes 
to have no digits! You could of course fix that by redefining V_NUMBER 
like 
so:

V_NUMBER: [0-9]+

But then it would force you to start with a two-digit version number. 
v1, v2 
through to v9 would all be illegal versions. Not good!

My solution is a bit tedious, but at least it is (I believe) correct:

'v' V_NONZERO_DIGIT { V_DIGIT } [ '.' V_DIGIT { V_DIGIT } ] [ '.' 
V_DIGIT 
{ V_DIGIT } ]
V_DIGIT: [0-9]
V_NONZERO_DIGIT: [1-9]

Or, if you prefer to nest the second optional part, you could do this:

'v' V_NONZERO_DIGIT { V_DIGIT } [ '.' V_DIGIT { V_DIGIT } [ '.' V_DIGIT 
{ 
V_DIGIT } ] ]

Both are correct, but I personally find the flattened out rule a bit 
easier 
to read.

Can someone think of something simpler that is still correct?

- Peter 


_______________________________________________
openEHR-technical mailing list
openEHR-technical@openehr.org
http://lists.chime.ucl.ac.uk/mailman/listinfo/openehr-technical