Now that the grammar of GEDCOM 5.5.5 is available in plain-text, a comparison with GEDCOM 5.5.1 is now also possible. Inspired by Kevin Routley’s GEDCOM Grammars : 5.5 vs 5.5.1 comparison, I’ve put the current GEDCOM version next to its predecessor.

The following color-coding is used in the comparison table:

  5.5.1 construct not available in 5.5.5
  New construct in 5.5.5
  5.5.1 construct changed in 5.5.5

 
Below the table (with 800 rows), there are some personal notes about the grammar. 

GEDCOM 5.5.1 GEDCOM 5.5.5
LINEAGE_LINKED_GEDCOM:= GEDCOM_FILE:=
0 <<HEADER>> {1:1} 0 <<GEDCOM_HEADER>> {1:1}
0 <<SUBMISSION_RECORD>> {0:1}
+1 <<GEDCOM_FORM_HEADER_EXTENSION>> {1:1}
0 <<RECORD>> {1:M} 0 <<FORM_RECORDS>> {1:1}
0 TRLR {1:1} 0 <<GEDCOM_TRAILER>> {1:1}
GEDCOM_HEADER:=
U+FEFF (Byte Order Mark)
n HEAD {1:1}
+1 GEDC {1:1}
+2 VERS <GEDCOM_VERSION_NUMBER> {1:1}
+2 FORM <GEDCOM_FORM> {1:1}
+3 VERS <GEDCOM_VERSION_NUMBER> {1:1}
+1 CHAR <CHARACTER_ENCODING> {1:1}
VERSION_NUMBER:= {Size=1:15} GEDCOM_VERSION_NUMBER:= {Size=3:11}
MMM + dot + mmm [ + dot + rrr ]
CHARACTER_SET:= {Size=1:8} CHARACTER_ENCODING:= {Size=5|7}
[ ANSEL | UTF-8 | UNICODE | ASCII ] [ UTF-8 | UNICODE | ANSEL | ASCII ]
GEDCOM_FORM:= {Size=14:20} GEDCOM_FORM:= {Size=14:20}
[ LINEAGE-LINKED ] [ LINEAGE-LINKED ]
GEDCOM_TRAILER:=
0 TRLR {1:1}
GEDCOM_FORM_HEADER_EXTENSION:= (*)
n <<LINEAGE_LINKED_HEADER_EXTENSION>> {1:1}
FORM_RECORDS:=
0 <<SUBMITTER_RECORD>> {1:1}
0 <<LINEAGE_LINKED_RECORD>> {0:M}
LINEAGE_LINKED_GEDCOM_FILE:= (*)
U+FEFF (Byte Order Mark)
n HEAD {1:1}
+1 GEDC {1:1}
+2 VERS <GEDCOM_VERSION_NUMBER> {1:1}
+2 FORM LINEAGE-LINKED {1:1}
+3 VERS <GEDCOM_VERSION_NUMBER> {1:1}
+1 CHAR <CHARACTER_ENCODING> {1:1}
+1 <<LINEAGE_LINKED_HEADER_EXTENSION>> {1:1}
0 <<SUBMITTER_RECORD>> {1:1}
0 <<LINEAGE_LINKED_RECORD>> {0:M}
0 <<GEDCOM_TRAILER>> {1:1}
LINEAGE_LINKED_HEADER_EXTENSION:=
n DEST<RECEIVING_SYSTEM_NAME> {0:1}
n SOUR <SYSTEM_ID> {1:1}
+1 VERS <PRODUCT_VERSION_NUMBER> {0:1}
+1 NAME <NAME_OF_PRODUCT> {0:1}
+1 CORP <NAME_OF_BUSINESS> {0:1}
+2 <<ADDRESS_STRUCTURE>> {0:1}
+1 DATA <NAME_OF_SOURCE_DATA> {0:1}
+2 DATE <PUBLICATION_DATE> {0:1}
+2 COPR <COPYRIGHT_SOURCE_DATA> {0:1}
n DATE <FILE_CREATION_DATE> {0:1}
+1 TIME <TIME_VALUE> {0:1}
n LANG <LANGUAGE_OF_TEXT> {0:1}
n SUBM <XREF:SUBM> {0:1}
n FILE <GEDCOM_FILE_NAME> {0:1}
n COPR <COPYRIGHT_GEDCOM_FILE> {0:1}
n NOTE <GEDCOM_CONTENT_DESCRIPTION> {0:1}
HEADER:=
n HEAD {1:1}
+1 SOUR <APPROVED_SYSTEM_ID> {1:1}
+2 VERS <VERSION_NUMBER> {0:1}
+2 NAME <NAME_OF_PRODUCT> {0:1}
+2 CORP <NAME_OF_BUSINESS> {0:1}
+3 <<ADDRESS_STRUCTURE>> {0:1}
+2 DATA <NAME_OF_SOURCE_DATA> {0:1}
+3 DATE <PUBLICATION_DATE> {0:1}
+3 COPR <COPYRIGHT_SOURCE_DATA> {0:1}
+4 [CONT|CONC]<COPYRIGHT_SOURCE_DATA> {0:M}
+1 DEST <RECEIVING_SYSTEM_NAME> {0:1}
+1 DATE <TRANSMISSION_DATE> {0:1}
+2 TIME <TIME_VALUE> {0:1}
+1 SUBM @<XREF:SUBM>@ {1:1}
+1 SUBN @<XREF:SUBN>@ {0:1}
+1 FILE <FILE_NAME> {0:1}
+1 COPR <COPYRIGHT_GEDCOM_FILE> {0:1}
+1 GEDC {1:1}
+2 VERS <VERSION_NUMBER> {1:1}
+2 FORM <GEDCOM_FORM> {1:1}
+1 CHAR <CHARACTER_SET> {1:1}
+2 VERS <VERSION_NUMBER> {0:1}
+1 LANG <LANGUAGE_OF_TEXT> {0:1}
+1 PLAC {0:1}
+2 FORM <PLACE_HIERARCHY> {1:1}
+1 NOTE <GEDCOM_CONTENT_DESCRIPTION> {0:1}
+2 [CONC|CONT] <GEDCOM_CONTENT_DESCRIPTION> {0:M}
RECORD:= LINEAGE_LINKED_RECORD:=
[ [
n <<FAM_RECORD>> {1:1} n <<FAM_GROUP_RECORD>> {1:1}
| |
n <<INDIVIDUAL_RECORD>> {1:1} n <<INDIVIDUAL_RECORD>> {1:1}
| |
n <<MULTIMEDIA_RECORD>> {1:1} n <<MULTIMEDIA_RECORD>> {1:1}
| |
n <<NOTE_RECORD>> {1:1} n <<NOTE_RECORD>> {1:1}
| |
n <<REPOSITORY_RECORD>> {1:1} n <<REPOSITORY_RECORD>> {1:1}
| |
n <<SOURCE_RECORD>> {1:1} n <<SOURCE_RECORD>> {1:1}
|
n <<SUBMITTER_RECORD>> {1:1}
] ]
FAM_RECORD:= FAM_GROUP_RECORD:=
n @<XREF:FAM>@ FAM {1:1} n <XREF:FAM> FAM {1:1}
+1 RESN <RESTRICTION_NOTICE> {0:1}
+1 <<FAMILY_EVENT_STRUCTURE>> {0:M} +1 <<FAMILY_EVENT_STRUCTURE>> {0:M}
+1 HUSB @<XREF:INDI>@ {0:1} +1 HUSB <XREF:INDI> {0:1}
+1 WIFE @<XREF:INDI>@ {0:1} +1 WIFE <XREF:INDI> {0:1}
+1 CHIL @<XREF:INDI>@ {0:M} +1 CHIL <XREF:INDI> {0:M}
+1 NCHI <COUNT_OF_CHILDREN> {0:1} +1 NCHI <COUNT_OF_CHILDREN> {0:1}
+1 SUBM @<XREF:SUBM>@ {0:M}
+1 <<LDS_SPOUSE_SEALING>> {0:M}
+1 REFN <USER_REFERENCE_NUMBER> {0:M} +1 REFN <USER_REFERENCE_NUMBER> {0:M}
+2 TYPE <USER_REFERENCE_TYPE> {0:1} +2 TYPE <USER_REFERENCE_TYPE> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 <<SOURCE_CITATION>> {0:M} +1 <<SOURCE_CITATION>> {0:M}
+1 <<MULTIMEDIA_LINK>> {0:M} +1 <<MULTIMEDIA_LINK>> {0:M}
INDIVIDUAL_RECORD:= INDIVIDUAL_RECORD:=
n @XREF:INDI@ INDI {1:1} n <XREF:INDI> INDI {1:1}
+1 RESN <RESTRICTION_NOTICE> {0:1}
+1 <<PERSONAL_NAME_STRUCTURE>> {0:M} +1 <<PERSONAL_NAME_STRUCTURE>> {0:M}
+1 SEX <SEX_VALUE> {0:1} +1 SEX <SEX_VALUE> {0:1}
+1 <<INDIVIDUAL_EVENT_STRUCTURE>> {0:M} +1 <<INDIVIDUAL_EVENT_STRUCTURE>> {0:M}
+1 <<INDIVIDUAL_ATTRIBUTE_STRUCTURE>> {0:M} +1 <<INDIVIDUAL_ATTRIBUTE_STRUCTURE>> {0:M}
+1 <<LDS_INDIVIDUAL_ORDINANCE>> {0:M}
+1 <<CHILD_TO_FAMILY_LINK>> {0:M} +1 <<CHILD_TO_FAMILY_LINK>> {0:M}
+1 <<SPOUSE_TO_FAMILY_LINK>> {0:M} +1 <<SPOUSE_TO_FAMILY_LINK>> {0:M}
+1 SUBM @<XREF:SUBM>@ {0:M}
+1 <<ASSOCIATION_STRUCTURE>> {0:M} +1 <<ASSOCIATION_STRUCTURE>> {0:M}
+1 ALIA @<XREF:INDI>@ {0:M}
+1 ANCI @<XREF:SUBM>@ {0:M}
+1 DESI @<XREF:SUBM>@ {0:M}
+1 RFN <PERMANENT_RECORD_FILE_NUMBER> {0:1}
+1 AFN <ANCESTRAL_FILE_NUMBER> {0:1}
+1 REFN <USER_REFERENCE_NUMBER> {0:M} +1 REFN <USER_REFERENCE_NUMBER> {0:M}
+2 TYPE <USER_REFERENCE_TYPE> {0:1} +2 TYPE <USER_REFERENCE_TYPE> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 <<SOURCE_CITATION>> {0:M} +1 <<SOURCE_CITATION>> {0:M}
+1 <<MULTIMEDIA_LINK>> {0:M} +1 <<MULTIMEDIA_LINK>> {0:M}
MULTIMEDIA_RECORD:= MULTIMEDIA_RECORD:=
n @XREF:OBJE@ OBJE {1:1} n <XREF:OBJE> OBJE {1:1}
+1 FILE <MULTIMEDIA_FILE_REFN> {1:M} +1 FILE <MULTIMEDIA_FILE_REFERENCE> {1:1}
+2 FORM <MULTIMEDIA_FORMAT> {1:1} +2 FORM <MULTIMEDIA_FORMAT> {1:1}
+3 TYPE <SOURCE_MEDIA_TYPE> {0:1} +3 TYPE <SOURCE_MEDIA_TYPE> {0:1}
+2 TITL <DESCRIPTIVE_TITLE> {0:1} +2 TITL <DESCRIPTIVE_TITLE> {0:1}
+1 REFN <USER_REFERENCE_NUMBER> {0:M} +1 REFN <USER_REFERENCE_NUMBER> {0:M}
+2 TYPE <USER_REFERENCE_TYPE> {0:1} +2 TYPE <USER_REFERENCE_TYPE> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 <<SOURCE_CITATION>> {0:M} +1 <<SOURCE_CITATION>> {0:M}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
NOTE_RECORD:= NOTE_RECORD:=
n @<XREF:NOTE>@ NOTE <SUBMITTER_TEXT> {1:1} n <XREF:NOTE> NOTE <USER_TEXT> {1:1}
+1 [CONC|CONT] <SUBMITTER_TEXT> {0:M}
+1 REFN <USER_REFERENCE_NUMBER> {0:M} +1 REFN <USER_REFERENCE_NUMBER> {0:M}
+2 TYPE <USER_REFERENCE_TYPE> {0:1} +2 TYPE <USER_REFERENCE_TYPE> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<SOURCE_CITATION>> {0:M} +1 <<SOURCE_CITATION>> {0:M}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
REPOSITORY_RECORD:= REPOSITORY_RECORD:=
n @<XREF:REPO>@ REPO {1:1} n <XREF:REPO> REPO {1:1}
+1 NAME <NAME_OF_REPOSITORY> {1:1} +1 NAME <NAME_OF_REPOSITORY> {1:1}
+1 <<ADDRESS_STRUCTURE>> {0:1} +1 <<ADDRESS_STRUCTURE>> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 REFN <USER_REFERENCE_NUMBER> {0:M} +1 REFN <USER_REFERENCE_NUMBER> {0:M}
+2 TYPE <USER_REFERENCE_TYPE> {0:1} +2 TYPE <USER_REFERENCE_TYPE> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
SOURCE_RECORD:= SOURCE_RECORD:=
n @<XREF:SOUR>@ SOUR {1:1} n <XREF:SOUR> SOUR {1:1}
+1 DATA {0:1} +1 DATA {0:1}
+2 EVEN <EVENTS_RECORDED> {0:M} +2 EVEN <EVENTS_RECORDED> {0:M}
+3 DATE <DATE_PERIOD> {0:1} +3 DATE <DATE_PERIOD> {0:1}
+3 PLAC <SOURCE_JURISDICTION_PLACE> {0:1} +3 PLAC <SOURCE_JURISDICTION_PLACE> {0:1}
+2 AGNC <RESPONSIBLE_AGENCY> {0:1} +2 AGNC <RESPONSIBLE_AGENCY> {0:1}
+2 <<NOTE_STRUCTURE>> {0:M} +2 <<NOTE_STRUCTURE>> {0:M}
+1 AUTH <SOURCE_ORIGINATOR> {0:1} +1 AUTH <SOURCE_ORIGINATOR> {0:1}
+2 [CONC|CONT] <SOURCE_ORIGINATOR> {0:M}
+1 TITL <SOURCE_DESCRIPTIVE_TITLE> {0:1} +1 TITL <SOURCE_DESCRIPTIVE_TITLE> {0:1}
+2 [CONC|CONT] <SOURCE_DESCRIPTIVE_TITLE> {0:M}
+1 ABBR <SOURCE_FILED_BY_ENTRY> {0:1} +1 ABBR <SOURCE_FILED_BY_ENTRY> {0:1}
+1 PUBL <SOURCE_PUBLICATION_FACTS> {0:1} +1 PUBL <SOURCE_PUBLICATION_FACTS> {0:1}
+2 [CONC|CONT] <SOURCE_PUBLICATION_FACTS> {0:M}
+1 TEXT <TEXT_FROM_SOURCE> {0:1} +1 TEXT <TEXT_FROM_SOURCE> {0:1}
+2 [CONC|CONT] <TEXT_FROM_SOURCE> {0:M}
+1 <<SOURCE_REPOSITORY_CITATION>> {0:M} +1 <<SOURCE_REPOSITORY_CITATION>> {0:M}
+1 REFN <USER_REFERENCE_NUMBER> {0:M} +1 REFN <USER_REFERENCE_NUMBER> {0:M}
+2 TYPE <USER_REFERENCE_TYPE> {0:1} +2 TYPE <USER_REFERENCE_TYPE> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 <<MULTIMEDIA_LINK>> {0:M} +1 <<MULTIMEDIA_LINK>> {0:M}
SUBMISSION_RECORD:=
n @XREF:SUBN@ SUBN {1:1}
+1 SUBM @XREF:SUBM@ {0:1}
+1 FAMF <NAME_OF_FAMILY_FILE> {0:1}
+1 TEMP <TEMPLE_CODE> {0:1}
+1 ANCE <GENERATIONS_OF_ANCESTORS> {0:1}
+1 DESC <GENERATIONS_OF_DESCENDANTS> {0:1}
+1 ORDI <ORDINANCE_PROCESS_FLAG> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M}
+1 <<CHANGE_DATE>> {0:1}
SUBMITTER_RECORD:= SUBMITTER_RECORD:=
n @<XREF:SUBM>@ SUBM {1:1} n <XREF:SUBM> SUBM {1:1}
+1 NAME <SUBMITTER_NAME> {1:1} +1 NAME <SUBMITTER_NAME> {1:1}
+1 <<ADDRESS_STRUCTURE>> {0:1} +1 <<ADDRESS_STRUCTURE>> {0:1}
+1 <<MULTIMEDIA_LINK>> {0:M} +1 <<MULTIMEDIA_LINK>> {0:M}
+1 LANG <LANGUAGE_PREFERENCE> {0:3}
+1 RFN <SUBMITTER_REGISTERED_RFN> {0:1}
+1 RIN <AUTOMATED_RECORD_ID> {0:1} +1 RIN <AUTOMATED_RECORD_ID> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 <<CHANGE_DATE>> {0:1} +1 <<CHANGE_DATE>> {0:1}
ADDRESS_STRUCTURE:= ADDRESS_STRUCTURE:=
n ADDR <ADDRESS_LINE> {1:1} n ADDR {1:1}
+1 CONT <ADDRESS_LINE> {0:3}
+1 ADR1 <ADDRESS_LINE1> {0:1} +1 ADR1 <ADDRESS_LINE1> {0:1}
+1 ADR2 <ADDRESS_LINE2> {0:1} +1 ADR2 <ADDRESS_LINE2> {0:1}
+1 ADR3 <ADDRESS_LINE3> {0:1} +1 ADR3 <ADDRESS_LINE3> {0:1}
+1 CITY <ADDRESS_CITY> {0:1} +1 CITY <ADDRESS_CITY> {0:1}
+1 STAE <ADDRESS_STATE> {0:1} +1 STAE <ADDRESS_STATE> {0:1}
+1 POST <ADDRESS_POSTAL_CODE> {0:1} +1 POST <ADDRESS_POSTAL_CODE> {0:1}
+1 CTRY <ADDRESS_COUNTRY> {0:1} +1 CTRY <ADDRESS_COUNTRY> {0:1}
n PHON <PHONE_NUMBER> {0:3} n PHON <PHONE_NUMBER> {0:3}
n EMAIL <ADDRESS_EMAIL> {0:3} n EMAIL <ADDRESS_EMAIL> {0:3}
n FAX <ADDRESS_FAX> {0:3} n FAX <ADDRESS_FAX> {0:3}
n WWW <ADDRESS_WEB_PAGE> {0:3} n WWW <ADDRESS_WEB_PAGE> {0:3}
ASSOCIATION_STRUCTURE:= ASSOCIATION_STRUCTURE:=
n ASSO @<XREF:INDI>@ {1:1} n ASSO <XREF:INDI> {1:1}
+1 RELA <RELATION_IS_DESCRIPTOR> {1:1} +1 RELA <RELATION_IS_DESCRIPTOR> {1:1}
+1 <<SOURCE_CITATION>> {0:M} +1 <<SOURCE_CITATION>> {0:M}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
CHANGE_DATE:= CHANGE_DATE:=
n CHAN {1:1} n CHAN {1:1}
+1 DATE <CHANGE_DATE> {1:1} +1 DATE <DATE_EXACT> {1:1}
+2 TIME <TIME_VALUE> {0:1} +2 TIME <TIME_VALUE> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
CHILD_TO_FAMILY_LINK:= CHILD_TO_FAMILY_LINK:=
n FAMC @<XREF:FAM>@ {1:1} n FAMC <XREF:FAM> {1:1}
+1 PEDI <PEDIGREE_LINKAGE_TYPE> {0:1} +1 PEDI <PEDIGREE_LINKAGE_TYPE> {0:1}
+1 STAT <CHILD_LINKAGE_STATUS> {0:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
EVENT_DETAIL:= EVENT_DETAIL:=
n TYPE <EVENT_OR_FACT_CLASSIFICATION> {0:1} n TYPE <EVENT_OR_FACT_CLASSIFICATION> {0:1}
n DATE <DATE_VALUE> {0:1} n DATE <DATE_VALUE> {0:1}
n <<PLACE_STRUCTURE>> {0:1} n <<PLACE_STRUCTURE>> {0:1}
n <<ADDRESS_STRUCTURE>> {0:1} n <<ADDRESS_STRUCTURE>> {0:1}
n AGNC <RESPONSIBLE_AGENCY> {0:1} n AGNC <RESPONSIBLE_AGENCY> {0:1}
n RELI <RELIGIOUS_AFFILIATION> {0:1} n RELI <RELIGIOUS_AFFILIATION> {0:1}
n CAUS <CAUSE_OF_EVENT> {0:1} n CAUS <CAUSE_OF_EVENT> {0:1}
n RESN <RESTRICTION_NOTICE> {0:1}
n <<NOTE_STRUCTURE>> {0:M} n <<NOTE_STRUCTURE>> {0:M}
n <<SOURCE_CITATION>> {0:M} n <<SOURCE_CITATION>> {0:M}
n <<MULTIMEDIA_LINK>> {0:M} n <<MULTIMEDIA_LINK>> {0:M}
FAMILY_EVENT_DETAIL:= FAMILY_EVENT_DETAIL:=
n HUSB {0:1} n HUSB {0:1}
+1 AGE <AGE_AT_EVENT> {1:1} +1 AGE <AGE_AT_EVENT> {1:1}
n WIFE {0:1} n WIFE {0:1}
+1 AGE <AGE_AT_EVENT> {1:1} +1 AGE <AGE_AT_EVENT> {1:1}
n <<EVENT_DETAIL>> {0:1} n <<EVENT_DETAIL>> {0:1}
FAMILY_EVENT_STRUCTURE:= FAMILY_EVENT_STRUCTURE:=
[ [
n [ ANUL | CENS | DIV | DIVF ] {1:1} n [ ANUL | CENS | DIV | DIVF ] {1:1}
+1 <<FAMILY_EVENT_DETAIL>> {0:1} +1 <<FAMILY_EVENT_DETAIL>> {0:1}
| |
n [ ENGA | MARB | MARC ] {1:1} n [ ENGA | MARB | MARC ] {1:1}
+1 <<FAMILY_EVENT_DETAIL>> {0:1} +1 <<FAMILY_EVENT_DETAIL>> {0:1}
| |
n MARR [Y|<NULL>] {1:1} n MARR [Y|<NULL>] {1:1}
+1 <<FAMILY_EVENT_DETAIL>> {0:1} +1 <<FAMILY_EVENT_DETAIL>> {0:1}
| |
n [ MARL | MARS ] {1:1} n [ MARL | MARS ] {1:1}
+1 <<FAMILY_EVENT_DETAIL>> {0:1} +1 <<FAMILY_EVENT_DETAIL>> {0:1}
| |
n RESI {1:1} n RESI {1:1}
+1 <<FAMILY_EVENT_DETAIL>> {0:1} +1 <<FAMILY_EVENT_DETAIL>> {0:1}
| |
n EVEN [<EVENT_DESCRIPTOR> | <NULL>] {1:1} n EVEN [<EVENT_DESCRIPTOR> | <NULL>] {1:1}
+1 <<FAMILY_EVENT_DETAIL>> {0:1} +1 <<FAMILY_EVENT_DETAIL>> {0:1}
] ]
INDIVIDUAL_ATTRIBUTE_STRUCTURE:= INDIVIDUAL_ATTRIBUTE_STRUCTURE:=
[ [
n CAST <CASTE_NAME> {1:1} n CAST <CASTE_NAME> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n DSCR <PHYSICAL_DESCRIPTION> {1:1} n DSCR <PHYSICAL_DESCRIPTION> {1:1}
+1 [CONC | CONT ] <PHYSICAL_DESCRIPTION> {0:M}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n EDUC <SCHOLASTIC_ACHIEVEMENT> {1:1} n EDUC <SCHOLASTIC_ACHIEVEMENT> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n IDNO <NATIONAL_ID_NUMBER>  {1:1} n IDNO <ID_NUMBER> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n NATI <NATIONAL_OR_TRIBAL_ORIGIN> {1:1} n NATI <NATIONAL_OR_TRIBAL_ORIGIN> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n NCHI <COUNT_OF_CHILDREN> {1:1} n NCHI <COUNT_OF_CHILDREN> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n NMR <COUNT_OF_MARRIAGES>  {1:1} n NMR <NUMBER_OF_RELATONSHIPS> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n OCCU <OCCUPATION> {1:1} n OCCU <OCCUPATION> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n PROP <POSSESSIONS> {1:1} n PROP <POSSESSIONS> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n RELI <RELIGIOUS_AFFILIATION> {1:1} n RELI <RELIGIOUS_AFFILIATION> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n RESI {1:1} n RESI {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
|
n SSN <SOCIAL_SECURITY_NUMBER>  {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n TITL <NOBILITY_TYPE_TITLE> {1:1} n TITL <NOBILITY_TYPE_TITLE> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
| |
n FACT <ATTRIBUTE_DESCRIPTOR> {1:1} n FACT <ATTRIBUTE_DESCRIPTOR> {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 TYPE <USER_REFERENCE_TYPE> {0:1}
] ]
INDIVIDUAL_EVENT_DETAIL:= INDIVIDUAL_EVENT_DETAIL:=
n <<EVENT_DETAIL>> {1:1} n <<EVENT_DETAIL>> {1:1}
n AGE <AGE_AT_EVENT> {0:1} n AGE <AGE_AT_EVENT> {0:1}
INDIVIDUAL_EVENT_STRUCTURE:= INDIVIDUAL_EVENT_STRUCTURE:=
[ [
n [ BIRT | CHR ] [Y|<NULL>] {1:1} n BIRT {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 FAMC @<XREF:FAM>@ {0:1} +1 FAMC <XREF:FAM> {0:1}
|
n CHR [ Y | <NULL> ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 FAMC <XREF:FAM> {0:1}
| |
n DEAT [ Y | <NULL> ] {1:1} n DEAT [ Y | <NULL> ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n [ BURI | CREM ] {1:1} n [ BURI | CREM ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n ADOP {1:1} n ADOP {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
+1 FAMC @<XREF:FAM>@ {0:1} +1 FAMC <XREF:FAM> {0:1}
+2 ADOP <ADOPTED_BY_WHICH_PARENT> {0:1} +2 ADOP <ADOPTED_BY_WHICH_PARENT> {0:1}
| |
n [ BAPM | BARM | BASM | BLES ] {1:1} n [ BAPM | BARM | BASM ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n [ CHRA | CONF | FCOM | ORDN ] {1:1} n [ CHRA | CONF | FCOM ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n [ NATU | EMIG | IMMI ] {1:1} n [ NATU | EMIG | IMMI ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n [ CENS | PROB | WILL ] {1:1} n [ CENS | PROB | WILL ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n [ GRAD | RETI ] {1:1} n [ GRAD | RETI ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
| |
n EVEN  {1:1} n EVEN [ <EVENT_DESCRIPTOR> | <NULL> ] {1:1}
+1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1} +1 <<INDIVIDUAL_EVENT_DETAIL>> {0:1}
] ]
LDS_INDIVIDUAL_ORDINANCE:=
[
n [ BAPL | CONL ] {1:1}
+1 DATE <DATE_LDS_ORD> {0:1}
+1 TEMP <TEMPLE_CODE> {0:1}
+1 PLAC <PLACE_LIVING_ORDINANCE> {0:1}
+1 STAT <LDS_BAPTISM_DATE_STATUS> {0:1}
+2 DATE <CHANGE_DATE> {1:1}
+1 <<NOTE_STRUCTURE>> {0:M}
+1 <<SOURCE_CITATION>> {0:M}
|
n ENDL {1:1}
+1 DATE <DATE_LDS_ORD> {0:1}
+1 TEMP <TEMPLE_CODE> {0:1}
+1 PLAC <PLACE_LIVING_ORDINANCE> {0:1}
+1 STAT <LDS_ENDOWMENT_DATE_STATUS> {0:1}
+2 DATE <CHANGE_DATE> {1:1}
+1 <<NOTE_STRUCTURE>> {0:M}
+1 <<SOURCE_CITATION>> {0:M}
|
n SLGC {1:1}
+1 DATE <DATE_LDS_ORD> {0:1}
+1 TEMP <TEMPLE_CODE> {0:1}
+1 PLAC <PLACE_LIVING_ORDINANCE> {0:1}
+1 FAMC @<XREF:FAM>@ {1:1}
+1 STAT <LDS_CHILD_SEALING_DATE_STATUS> {0:1}
+2 DATE <CHANGE_DATE> {1:1}
+1 <<NOTE_STRUCTURE>> {0:M}
+1 <<SOURCE_CITATION>> {0:M}
]
LDS_SPOUSE_SEALING:=
n SLGS {1:1}
+1 DATE <DATE_LDS_ORD> {0:1}
+1 TEMP <TEMPLE_CODE> {0:1}
+1 PLAC <PLACE_LIVING_ORDINANCE> {0:1}
+1 STAT <LDS_SPOUSE_SEALING_DATE_STATUS>  {0:1}
+2 DATE <CHANGE_DATE>  {1:1}
+1 <<NOTE_STRUCTURE>>  {0:M}
+1 <<SOURCE_CITATION>>  {0:M}
MULTIMEDIA_LINK:= MULTIMEDIA_LINK:=
n OBJE @<XREF:OBJE>@  {1:1} n OBJE <XREF:OBJE> {1:1}
|
n OBJE
+1 FILE <MULTIMEDIA_FILE_REFN>  {1:M}
+2 FORM <MULTIMEDIA_FORMAT>  {1:1}
+3 MEDI  <SOURCE_MEDIA_TYPE>  {0:1}
+1 TITL <DESCRIPTIVE_TITLE>  {0:1}
NOTE_STRUCTURE:= NOTE_STRUCTURE:=
[ [
n NOTE @<XREF:NOTE>@  {1:1} n NOTE <XREF:NOTE> {1:1}
| |
n NOTE [<SUBMITTER_TEXT> | <NULL>]  {1:1} n NOTE <USER_TEXT> {1:1}
+1 [CONC|CONT] <SUBMITTER_TEXT>  {0:M}
] ]
PERSONAL_NAME_PIECES:= PERSONAL_NAME_PIECES:=
n NPFX <NAME_PIECE_PREFIX> {0:1} n NPFX <NAME_PIECE_PREFIX> {0:1}
n GIVN <NAME_PIECE_GIVEN> {0:1} n GIVN <NAME_PIECE_GIVEN> {0:1}
n NICK <NAME_PIECE_NICKNAME> {0:1} n NICK <NAME_PIECE_NICKNAME> {0:1}
n SPFX <NAME_PIECE_SURNAME_PREFIX {0:1} n SPFX <NAME_PIECE_SURNAME_PREFIX {0:1}
n SURN <NAME_PIECE_SURNAME> {0:1} n SURN <NAME_PIECE_SURNAME> {0:1}
n NSFX <NAME_PIECE_SUFFIX> {0:1} n NSFX <NAME_PIECE_SUFFIX> {0:1}
n <<NOTE_STRUCTURE>> {0:M} n <<NOTE_STRUCTURE>> {0:M}
n <<SOURCE_CITATION>> {0:M} n <<SOURCE_CITATION>> {0:M}
PERSONAL_NAME_STRUCTURE:= PERSONAL_NAME_STRUCTURE:=
n NAME <NAME_PERSONAL> {1:1} n NAME <NAME_PERSONAL> {1:1}
+1 TYPE <NAME_TYPE> {0:1} +1 TYPE <NAME_TYPE> {0:1}
+1 <<PERSONAL_NAME_PIECES>> {0:1} +1 <<PERSONAL_NAME_PIECES>> {0:1}
+1 FONE <NAME_PHONETIC> {0:M} +1 FONE <NAME_PHONETIC> {0:M}
+2 TYPE <PHONETISATION_METHOD> {1:1} +2 TYPE <PHONETISATION_METHOD> {1:1}
+2 <<PERSONAL_NAME_PIECES>> {0:1} +2 <<PERSONAL_NAME_PIECES>> {0:1}
+1 ROMN <NAME_ROMANISED> {0:M} +1 ROMN <NAME_ROMANISED> {0:M}
+2 TYPE <ROMANISATION_METHOD> {1:1} +2 TYPE <ROMANISATION_METHOD> {1:1}
+2 <<PERSONAL_NAME_PIECES>>  {0:1} +2 <<PERSONAL_NAME_PIECES>> {1:1}
PLACE_STRUCTURE:= PLACE_STRUCTURE:=
n PLAC <PLACE_NAME> {1:1} n PLAC <PLACE_NAME> {1:1}
+1 FORM <PLACE_HIERARCHY>  {0:1}
+1 FONE <PLACE_PHONETIC_VARIATION> {0:M} +1 FONE <PLACE_PHONETIC> {0:M}
+2 TYPE <PHONETIC_TYPE> {1:1} +2 TYPE <PHONETISATION_METHOD> {0:1}
+1 ROMN <PLACE_ROMANIZED_VARIATION> {0:M} +1 ROMN <PLACE_ROMANISED> {0:M}
+2 TYPE <ROMANIZED_TYPE> {1:1} +2 TYPE <ROMANISATION_METHOD> {1:1}
+1 MAP {0:1} +1 MAP {0:1}
+2 LATI <PLACE_LATITUDE> {1:1} +2 LATI <PLACE_LATITUDE> {1:1}
+2 LONG <PLACE_LONGITUDE> {1:1} +2 LONG <PLACE_LONGITUDE> {1:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
SOURCE_CITATION:= SOURCE_CITATION:=
[
n SOUR @<XREF:SOUR>@ {1:1} n SOUR <XREF:SOUR> {1:1}
+1 PAGE <WHERE_WITHIN_SOURCE> {0:1} +1 PAGE <WHERE_WITHIN_SOURCE> {0:1}
+1 EVEN <EVENT_TYPE_CITED_FROM> {0:1} +1 EVEN <EVENT_TYPE_CITED_FROM> {0:1}
+2 ROLE <ROLE_IN_EVENT> {0:1} +2 ROLE <ROLE_IN_EVENT> {0:1}
+1 DATA {0:1} +1 DATA {0:1}
+2 DATE <ENTRY_RECORDING_DATE> {0:1} +2 DATE <ENTRY_RECORDING_DATE> {0:1}
+2 TEXT <TEXT_FROM_SOURCE> {0:M} +2 TEXT <TEXT_FROM_SOURCE> {0:M}
+3 [CONC|CONT] <TEXT_FROM_SOURCE> {0:M}
+1 <<MULTIMEDIA_LINK>> {0:M} +1 <<MULTIMEDIA_LINK>> {0:M}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
+1 QUAY <CERTAINTY_ASSESSMENT> {0:1} +1 QUAY <CERTAINTY_ASSESSMENT> {0:1}
|
n SOUR <SOURCE_DESCRIPTION> {1:1}
+1 [CONC|CONT] <SOURCE_DESCRIPTION> {0:M}
+1 TEXT <TEXT_FROM_SOURCE> {0:M}
+2 [CONC|CONT] <TEXT_FROM_SOURCE> {0:M}
+1 <<MULTIMEDIA_LINK>> {0:M}
+1 <<NOTE_STRUCTURE>> {0:M}
+1 QUAY <CERTAINTY_ASSESSMENT> {0:1}
]
SOURCE_REPOSITORY_CITATION:= SOURCE_REPOSITORY_CITATION:=
n REPO [ @XREF:REPO@ | <NULL>] {1:1} n REPO <XREF:REPO> {1:1}
+1 <<NOTE_STRUCTURE>> {0:M}
+1 CALN <SOURCE_CALL_NUMBER> {0:M} +1 CALN <SOURCE_CALL_NUMBER> {0:1}
+2 MEDI <SOURCE_MEDIA_TYPE> {0:1} +2 MEDI <SOURCE_MEDIA_TYPE> {0:1}
SPOUSE_TO_FAMILY_LINK:= SPOUSE_TO_FAMILY_LINK:=
n FAMS @<XREF:FAM>@ {1:1} n FAMS <XREF:FAM> {1:1}
+1 <<NOTE_STRUCTURE>> {0:M} +1 <<NOTE_STRUCTURE>> {0:M}
ADDRESS_CITY:= {Size=1:60} ADDRESS_CITY:= {Size=1:60}
ADDRESS_COUNTRY:= {Size=1:60} ADDRESS_COUNTRY:= {Size=1:60}
ADDRESS_EMAIL:= {Size=5:120} ADDRESS_EMAIL:= {Size=5:120}
ADDRESS_FAX:= {Size=5:60} ADDRESS_FAX:= {Size=5:60}
ADDRESS_LINE:= {Size=1:60}
ADDRESS_LINE1:= {Size=1:60} ADDRESS_LINE1:= {Size=1:60}
ADDRESS_LINE2:= {Size=1:60} ADDRESS_LINE2:= {Size=1:60}
ADDRESS_LINE3:= {Size=1:60} ADDRESS_LINE3:= {Size=1:60}
ADDRESS_POSTAL_CODE:= {Size=1:10} ADDRESS_POSTAL_CODE:= {Size=1:10}
ADDRESS_STATE:= {Size=1:60} ADDRESS_STATE:= {Size=1:60}
ADDRESS_WEB_PAGE:= {Size=5:120} ADDRESS_WEB_PAGE:= {Size=4:2047}
ADOPTED_BY_WHICH_PARENT:= {Size=4:4} ADOPTED_BY_WHICH_PARENT:= {Size=4:4}
[ HUSB | WIFE | BOTH ] [ HUSB | WIFE | BOTH ]
AGE_AT_EVENT:= {Size=1:12} AGE_AT_EVENT:= {Size=2:13}
[ < | > | <NULL>] [ NULL | < + space | > + space ]
[ YYy MMm DDDd | YYy | MMm | DDDd | [ YYY + y + space + MM + m + space + DDD + d | YYY + y | MM + m | DDD + d
YYy MMm | YYy DDDd | MMm DDDd | | YYY + y + space + MM + m | YYY+ y + space + DDD + d | MM + m + space + DDD + d
CHILD | INFANT | STILLBORN ] CHILD | INFANT | STILLBORN ]
ANCESTRAL_FILE_NUMBER:= {Size=1:12}
APPROVED_SYSTEM_ID:= {Size=1:20} SYSTEM_ID:= {Size=1:20}
ATTRIBUTE_DESCRIPTOR:= {Size=1:90} ATTRIBUTE_DESCRIPTOR:= {Size=1:90}
ATTRIBUTE_TYPE:= {Size=1:4} ATTRIBUTE_TYPE:= {Size=4:4}
[ CAST | EDUC | NATI | OCCU | PROP | RELI | RESI | TITL | FACT ] [ CAST | EDUC | NATI | OCCU | PROP | RELI | RESI | TITL | FACT ]
AUTOMATED_RECORD_ID:= {Size=1:12} AUTOMATED_RECORD_ID:= {Size=1:12}
BEFORE_COMMON_ERA:= {Size=2:4}
[ BCE | BC | B.C. ]
CASTE_NAME:= {Size=1:90} CASTE_NAME:= {Size=1:90}
CAUSE_OF_EVENT:= {Size=1:90} CAUSE_OF_EVENT:= {Size=1:90}
CERTAINTY_ASSESSMENT:= {Size=1:1} CERTAINTY_ASSESSMENT:= {Size=1:1}
[0|1|2|3] [0|1|2|3]
CHANGE_DATE:= {Size=10:11} (double definition in 5.5.1)
<DATE_EXACT>
CHILD_LINKAGE_STATUS:= {Size=1:15}
[ challenged | disproven | proven ]
COPYRIGHT_GEDCOM_FILE:= {Size=1:90} COPYRIGHT_GEDCOM_FILE:= {Size=1:248}
COPYRIGHT_SOURCE_DATA:= {Size=1:90} COPYRIGHT_SOURCE_DATA:= {Size=1:248}
COUNT_OF_CHILDREN:= {Size=1:3} COUNT_OF_CHILDREN:= {Size=1:3}
COUNT_OF_MARRIAGES:= {Size=1:3}
DATE:= {Size=4:35} DATE:= {Size=4:35}
[ [
<DATE_CALENDAR_ESCAPE> | <NULL> <DATE_CALENDAR>
] |
<DATE_CALENDER> <DATE_CALENDAR_ESCAPE> + space + <DATE_CALENDAR>
]
DATE_APPROXIMATED:= {Size=4:35} DATE_APPROXIMATED:= {Size=8:39}
[ [
ABT <DATE> | ABT + space + <DATE> |
CAL <DATE> | CAL + space + <DATE> |
EST <DATE> EST + space + <DATE>
] ]
DATE_CALENDAR:= {Size=4:35} DATE_CALENDAR:= {Size=4:35}
[ <DATE_GREG> | <DATE_JULN> | <DATE_HEBR> | <DATE_FREN> | <DATE_FUTURE> ] [ <DATE_GREG> | <DATE_JULN> | <DATE_HEBR> | <DATE_FREN> ]
DATE_CALENDAR_ESCAPE:= {Size=4:15} DATE_CALENDAR_ESCAPE:= {Size=4:15}
[ @#DHEBREW@ | @#DROMAN@ | @#DFRENCH R@ | @#DGREGORIAN@ | @#DJULIAN@ | @#DUNKNOWN@ ] [ @#DHEBREW@ | @#DFRENCH R@ | @#DGREGORIAN@ | @#DJULIAN@ | @#DUNKNOWN@ ]
DATE_EXACT:= {Size=10:11} DATE_EXACT:= {Size=10:11}
<DAY> <MONTH> <YEAR_GREG> <DAY> + space + <MONTH> + space + <YEAR>
DATE_FREN:= {Size=4:35} DATE_FREN:= {Size=4:35}
[ [
<YEAR>[B.C.] <YEAR>
| |
<MONTH_FREN> <YEAR> <MONTH_FREN> + space + <YEAR>
| |
<DAY> <MONTH_FREN> <YEAR> <DAY> + space + <MONTH_FREN> + space + <YEAR>
] ]
DATE_GREG:= {Size=4:35} DATE_GREG:= {Size=4:35}
[ [
<YEAR_GREG>[B.C.] <YEAR> [ + space + <BEFORE_COMMON_ERA> ]
| |
<MONTH>  <YEAR_GREG> <MONTH> + space + <YEAR>
| |
<DAY> <MONTH> <YEAR_GREG> <DAY> + space + <MONTH> + space + <YEAR>
|
<DAY> + space + <MONTH>
|
<MONTH> + space + <DUAL_STYLE_YEAR>
|
<DAY> + space + <MONTH> + space + <DUAL_STYLE_YEAR>
] ]
DATE_HEBR:= {Size=4:35} DATE_HEBR:= {Size=4:35}
[ [
<YEAR> [B.C.] <YEAR>
| |
<MONTH_HEBR> <YEAR> <MONTH_HEBR> + space + <YEAR>
| |
<DAY> <MONTH_HEBR> <YEAR> <DAY> + space + <MONTH_HEBR> + space + <YEAR>
] ]
DATE_JULN:= {Size=4:35} DATE_JULN:= {Size=4:35}
[ [
<YEAR> [B.C.] <YEAR> [ + space + <BEFORE_COMMON_ERA> ]
| |
<MONTH> <YEAR> <MONTH> + space + <YEAR>
| |
<DAY>  <MONTH>  <YEAR> <DAY> + space + <MONTH> + space + <YEAR>
|
<MONTH> + space + <DUAL_STYLE_YEAR>
|
<DAY> + space + <MONTH> + space + <DUAL_STYLE_YEAR>
] ]
DATE_PERIOD:= {Size=7:35} DATE_PERIOD:= {Size=7:35}
[ [
FROM <DATE> FROM + space + <DATE>
| |
TO <DATE> TO + space + <DATE>
| |
FROM <DATE> TO <DATE> FROM + space + <DATE> + space + TO + space + <DATE>
] ]
DATE_PHRASE:= {Size=1:35} DATE_PHRASE:= {Size=1:35}
<TEXT> <TEXT>
DATE_RANGE:= {Size=8:35} DATE_RANGE:= {Size=8:35}
[ [
BEF <DATE> | BEF + space + <DATE> |
AFT <DATE> | AFT + space + <DATE> |
BET <DATE> AND <DATE> BET + space + <DATE> + space + AND + space + <DATE>
] ]
DATE_VALUE:= {Size=1:35} DATE_VALUE:= {Size=1:35}
[ [
<DATE> <DATE>
| |
<DATE_PERIOD> <DATE_PERIOD>
| |
<DATE_RANGE> <DATE_RANGE>
| |
<DATE_APPROXIMATED> <DATE_APPROXIMATED>
| |
(<DATE_PHRASE>) (<DATE_PHRASE>)
| |
INT <DATE> (<DATE_PHRASE>) INT + space + <DATE> + space + (<DATE_PHRASE>)
] ]
DAY:= {Size=1:2} DAY:= {Size=1:2}
dd dd
DESCRIPTIVE_TITLE:= {Size=1:248} DESCRIPTIVE_TITLE:= {Size=1:248}
DIGIT:= {Size=1:1} DIGIT:= {Size=1:1}
DUAL_STYLE_YEAR:= {Size=3:7}
<YEAR> + slash + <DIGIT> + <DIGIT>
ENTRY_RECORDING_DATE:= {Size=1:90} ENTRY_RECORDING_DATE:= {Size=1:90}
<DATE_VALUE> <DATE_VALUE>
EVENT_ATTRIBUTE_TYPE:= {Size=1:15} EVENT_ATTRIBUTE_TYPE:= {Size=1:15}
[ <EVENT_TYPE_INDIVIDUAL> | <EVENT_TYPE_FAMILY> | <ATTRIBUTE_TYPE> ] [ <EVENT_TYPE_INDIVIDUAL> | <EVENT_TYPE_FAMILY> | <ATTRIBUTE_TYPE> ]
EVENT_DESCRIPTOR:= {Size=1:90} EVENT_DESCRIPTOR:= {Size=1:90}
EVENT_OR_FACT_CLASSIFICATION:= {Size=1:90} EVENT_OR_FACT_CLASSIFICATION:= {Size=1:90}
EVENT_TYPE_CITED_FROM:= {Size=1:15} EVENT_TYPE_CITED_FROM:= {Size=1:15}
[ <EVENT_ATTRIBUTE_TYPE> ] [ <EVENT_ATTRIBUTE_TYPE> ]
EVENT_TYPE_FAMILY:= {Size=3:4} EVENT_TYPE_FAMILY:= {Size=3:4}
[ ANUL | CENS | DIV | DIVF | ENGA | MARR | MARB | MARC | MARL | MARS | EVEN ] [ ANUL | CENS | DIV | DIVF | ENGA | MARR | MARB | MARC | MARL | MARS | EVEN ]
EVENT_TYPE_INDIVIDUAL:= {Size=3:4} EVENT_TYPE_INDIVIDUAL:= {Size=3:4}
[ ADOP | BIRT | BAPM | BARM | BASM | BLES | BURI | CENS | CHR | CHRA | CONF | CREM | DEAT | EMIG | FCOM | GRAD | IMMI | NATU | ORDN | RETI | PROB | WILL | EVEN ] [ ADOP | BIRT | BAPM | BARM | BASM | BURI | CENS | CHR | CHRA | CONF | CREM | DEAT | EMIG | FCOM | GRAD | IMMI | NATU | RETI | PROB | WILL | EVEN ]
EVENTS_RECORDED:= {Size=1:90} EVENTS_RECORDED:= {Size=1:90}
[<EVENT_ATTRIBUTE_TYPE> | <EVENTS_RECORDED>, <EVENT_ATTRIBUTE_TYPE>] [<EVENT_ATTRIBUTE_TYPE> | <EVENTS_RECORDED>, <EVENT_ATTRIBUTE_TYPE>]
FILE_CREATION_DATE:= {Size=10:11}
<DATE_EXACT>
GEDCOM_CONTENT_DESCRIPTION:= {Size=1:248} GEDCOM_CONTENT_DESCRIPTION:= {Size=1:248}
GENERATIONS_OF_ANCESTORS:= {Size=1:4}
GENERATIONS_OF_DESCENDANTS:= {Size=1:4}
FILE_NAME:= {Size=1:90} GEDCOM_FILE_NAME:= {Size=5:248}
NATIONAL_ID_NUMBER:= {Size=1:30} ID_NUMBER:= {Size=1:30}
LANGUAGE_ID:= {Size=1:15} LANGUAGE_ID:= {Size=1:15}
[ Afrikaans | Albanian | Anglo-Saxon | Catalan | Catalan_Spn | Czech | Danish | Dutch | English | Esperanto | Estonian | Faroese | Finnish | French | German | Hawaiian | Hungarian | Icelandic | Indonesian | Italian | Latvian | Lithuanian | Navaho | Norwegian | Polish | Portuguese | Romanian | Serbo_Croa | Slovak | Slovene | Spanish | Swedish | Turkish | Wendic ] [ Afrikaans | Albanian | Anglo-Saxon | Catalan | Catalan_Spn | Czech | Danish | Dutch | English | Esperanto | Estonian | Faroese | Finnish | French | German | Hawaiian | Hungarian | Icelandic | Indonesian | Italian | Latvian | Lithuanian | Navaho | Norwegian | Polish | Portuguese | Romanian | Serbo_Croa | Slovak | Slovene | Spanish | Swedish | Turkish | Wendic ]
[ Amharic | Arabic | Armenian | Assamese | Belorusian | Bengali | Braj | Bulgarian | Burmese | Cantonese | Church-Slavic | Dogri | Georgian | Greek | Gujarati | Hebrew | Hindi | Japanese | Kannada | Khmer | Konkani | Korean | Lahnda | Lao | Macedonian | Maithili | Malayalam | Mandarin | Manipuri | Marathi | Mewari | Nepali | Oriya | Pahari | Pali | Panjabi | Persian | Prakrit | Pusto | Rajasthani | Russian | Sanskrit | Serb | Tagalog | Tamil | Telugu | Thai | Tibetan | Ukrainian | Urdu | Vietnamese | Yiddish ] [ Amharic | Arabic | Armenian | Assamese | Belorusian | Bengali | Braj | Bulgarian | Burmese | Cantonese | Church-Slavic | Dogri | Georgian | Greek | Gujarati | Hebrew | Hindi | Japanese | Kannada | Khmer | Konkani | Korean | Lahnda | Lao | Macedonian | Maithili | Malayalam | Mandarin | Manipuri | Marathi | Mewari | Nepali | Oriya | Pahari | Pali | Panjabi | Persian | Prakrit | Pusto | Rajasthani | Russian | Sanskrit | Serb | Tagalog | Tamil | Telugu | Thai | Tibetan | Ukrainian | Urdu | Vietnamese | Yiddish ]
LANGUAGE_OF_TEXT:= {Size=1:15} LANGUAGE_OF_TEXT:= {Size=1:15}
[ <LANGUAGE_ID> ] [ <LANGUAGE_ID> ]
LANGUAGE_OF_PREFERENCE:= {Size=1:15}
[ <LANGUAGE_ID> ]
LDS_BAPTISM_DATE_STATUS:= {Size=5:10}
[ CHILD | COMPLETED | EXCLUDED | PRE-1970 |  STILLBORN | SUBMITTED | UNCLEARED ]
LDS_CHILD_SEALING_DATE_STATUS:= {Size=5:10}
[ BIC | COMPLETED | EXCLUDED | DNS | PRE-1970 |  STILLBORN | SUBMITTED | UNCLEARED ]
LDS_ENDOWMENT_DATE_STATUS:= {Size=5:10}
[ CHILD | COMPLETED | EXCLUDED | PRE-1970 |  STILLBORN | SUBMITTED | UNCLEARED ]
LDS_SPOUSE_SEALING_DATE_STATUS:= {Size=3:10}
[ CANCELED | COMPLETED | DNS | EXCLUDED |  DNS/CAN | PRE-1970 | SUBMITTED | UNCLEARED ]
MONTH:= {Size=3} MONTH:= {Size=3}
[ JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC ] [ JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC ]
MONTH_FREN:= {Size=4} MONTH_FREN:= {Size=4}
[ VEND | BRUM | FRIM | NIVO | PLUV | VENT | GERM | FLOR | PRAI | MESS | THER | FRUC | COMP ] [ VEND | BRUM | FRIM | NIVO | PLUV | VENT | GERM | FLOR | PRAI | MESS | THER | FRUC | COMP ]
MONTH_HEBR:= {Size=3} MONTH_HEBR:= {Size=3}
[ TSH | CSH | KSL | TVT | SHV | ADR | ADS | NSN | IYR | SVN | TMZ | AAV | ELL ] [ TSH | CSH | KSL | TVT | SHV | ADR | ADS | NSN | IYR | SVN | TMZ | AAV | ELL ]
MULTIMEDIA_FILE_REFERENCE:= {Size=1:30} MULTIMEDIA_FILE_REFERENCE:= {Size=1:259}
MULTIMEDIA_FORMAT:= {Size=3:4} MULTIMEDIA_FORMAT:= {Size=3:4}
[ bmp | gif | jpg | ole | pcx | tif | wav ] [ AAC | AVI | BMP | ePub | FLAC | GIF | JPEG | JPG | MKV | mobi | MP3 | PCX | PDF | PNG | TIFF | TIF | WAV ]
NAME_OF_BUSINESS:= {Size=1:90} NAME_OF_BUSINESS:= {Size=1:90}
NAME_OF_FAMILY_FILE:= {Size=1:120}
NAME_OF_PRODUCT:= {Size=1:90} NAME_OF_PRODUCT:= {Size=1:90}
NAME_OF_REPOSITORY:= {Size=1:90} NAME_OF_REPOSITORY:= {Size=1:90}
NAME_OF_SOURCE_DATA:= {Size=1:90} NAME_OF_SOURCE_DATA:= {Size=1:90}
NAME_PERSONAL:= {Size=1:120} NAME_PERSONAL:= {Size=1:120}
[ [
<NAME_TEXT> <NAME_TEXT>
| |
/<NAME_TEXT>/ /<NAME_TEXT>/
| |
<NAME_TEXT> /<NAME_TEXT>/ <NAME_TEXT> + space + /<NAME_TEXT>/
| |
/<NAME_TEXT>/ <NAME_TEXT> /<NAME_TEXT>/ + space + <NAME_TEXT>
| |
<NAME_TEXT> /<NAME_TEXT>/ <NAME_TEXT> <NAME_TEXT> + space + /<NAME_TEXT>/ + space + <NAME_TEXT>
] ]
NAME_PHONETIC_VARIATION:= {Size=1:120} NAME_PHONETIC:= {Size=1:120}
NAME_PIECE:= {Size=1:90} NAME_PIECE:= {Size=1:90}
NAME_PIECE_GIVEN:= {Size=1:120} NAME_PIECE_GIVEN:= {Size=1:120}
[ <NAME_PIECE> | <NAME_PIECE_GIVEN>, <NAME_PIECE> ] [ <NAME_PIECE> | <NAME_PIECE_GIVEN>, <NAME_PIECE> ]
NAME_PIECE_NICKNAME:= {Size=1:30} NAME_PIECE_NICKNAME:= {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_NICKNAME>, <NAME_PIECE> ] [ <NAME_PIECE> | <NAME_PIECE_NICKNAME>, <NAME_PIECE> ]
NAME_PIECE_PREFIX:= {Size=1:30} NAME_PIECE_PREFIX:= {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_PREFIX>, <NAME_PIECE> ] [ <NAME_PIECE> | <NAME_PIECE_PREFIX>, <NAME_PIECE> ]
NAME_PIECE_SUFFIX:= {Size=1:30} NAME_PIECE_SUFFIX:= {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_SUFFIX>, <NAME_PIECE> ] [ <NAME_PIECE> | <NAME_PIECE_SUFFIX>, <NAME_PIECE> ]
NAME_PIECE_SURNAME:= {Size=1:120} NAME_PIECE_SURNAME:= {Size=1:120}
[ <NAME_PIECE> | <NAME_PIECE_SURNAME>, <NAME_PIECE> ] [ <NAME_PIECE> | <NAME_PIECE_SURNAME>, <NAME_PIECE> ]
NAME_PIECE_SURNAME_PREFIX:= {Size=1:30} NAME_PIECE_SURNAME_PREFIX:= {Size=1:30}
[ <NAME_PIECE> | <NAME_PIECE_SURNAME>, <NAME_PIECE> ] [ <NAME_PIECE> ]
NAME_ROMANISED_VARIATION:= {Size=1:120} NAME_ROMANISED:= {Size=1:120}
NAME_TEXT:= {Size=1:120} NAME_TEXT:= {Size=1:120}
<TEXT> <TEXT> excluding commas, numbers, special characters not considered diacritics.
NAME_TYPE:= {Size=5:30} NAME_TYPE:= {Size=5:30}
[ aka | birth | immigrant | maiden | married | <user defined>] [ aka | birth | immigrant | maiden | married | <user defined>]
NATIONAL_OR_TRIBAL_ORIGIN:= {Size=1:120} NATIONAL_OR_TRIBAL_ORIGIN:= {Size=1:120}
NEW_TAG:= {Size=1:15}
NOBILITY_TYPE_TITLE:= {Size=1:120} NOBILITY_TYPE_TITLE:= {Size=1:120}
NULL:= {Size=0:0} NULL:= {Size=0:0}
NUMBER:= {Size=3:4} NUMBER:= {Size=3:4}
[<DIGIT> | <NUMBER>+<DIGIT>] [<DIGIT> | <NUMBER>+<DIGIT>]
NUMBER_OF_RELATIONSHIPS:= {Size=1:3}
OCCUPATION:= {Size=1:90} OCCUPATION:= {Size=1:90}
ORDINANCE_PROCESS_FLAG:= {Size=2:3}
[ yes | no ]
PEDIGREE_LINKAGE_TYPE:= {Size=5:7} PEDIGREE_LINKAGE_TYPE:= {Size=5:7}
[ adopted | birth | foster | sealing] [ adopted | birth | foster ]
PERMANENT_RECORD_FILE_NUMBER:= {Size=1:90}
<REGISTERED_RESOURCE_IDENTIFIER>:<RECORD_IDENTIFIER>
PHONE_NUMBER:= {Size=1:25} PHONE_NUMBER:= {Size=1:25}
PHONETIC_TYPE:= {Size=5:30} PHONETISATION_METHOD:= {Size=5:30}
[<user defined> | hangul | kana ] [<user defined> | hangul | kana ]
PHYSICAL_DESCRIPTION:= {Size=1:248} PHYSICAL_DESCRIPTION:= {Size=1:4095}
PLACE_HIERARCHY:= {Size=1:120}
PLACE_LATITUDE:= {Size=5:8} PLACE_LATITUDE:= {Size=2:10}
PLACE_LIVING_ORDINANCE:= {Size=1:120}
<PLACE_NAME>
PLACE_LONGITUDE:= {Size=5:8} PLACE_LONGITUDE:= {Size=2:11}
PLACE_NAME:= {Size=1:120} PLACE_NAME:= {Size=1:120}
[ [
<PLACE_TEXT> | <PLACE_TEXT> |
<PLACE_TEXT>, <PLACE_NAME> <PLACE_TEXT>, + space + <PLACE_NAME>
] ]
PLACE_PHONETIC_VARIATION:= {Size=1:120} PLACE_PHONETIC:= {Size=1:120}
PLACE_ROMANISED_VARIATION:= {Size=1:120} PLACE_ROMANISED:= {Size=1:120}
PLACE_TEXT:= {Size=1:120} PLACE_TEXT:= {Size=1:120}
POSSESSIONS:= {Size=1:248} POSSESSIONS:= {Size=1:248}
PRODUCT_VERSION_NUMBER:= {Size=3:15}
MMM + dot + mmm [ + dot + rrr [ + dot + bbb ] ]
PUBLICATION_DATE:= {Size=10:11} PUBLICATION_DATE:= {Size=10:11}
<DATE_EXACT> <DATE_EXACT>
RECEIVING_SYSTEM_NAME:= {Size=1:20} RECEIVING_SYSTEM_NAME:= {Size=1:20}
RECORD_IDENTIFIER:= {Size=1:18}
REGISTERED_RESOURCE_IDENTIFIER:= {Size=1:25}
RELATION_IS_DESCRIPTOR:= {Size=1:25} RELATION_IS_DESCRIPTOR:= {Size=1:25}
RELIGIOUS_AFFILIATION:= {Size=1:90} RELIGIOUS_AFFILIATION:= {Size=1:90}
RESPONSIBLE_AGENCY:= {Size=1:120} RESPONSIBLE_AGENCY:= {Size=1:120}
RESTRICTION_NOTICE:= {Size=6:7}
[confidential | locked | privacy ]
ROLE_DESCRIPTOR:= {Size=1:25} ROLE_DESCRIPTOR:= {Size=1:25}
ROLE_IN_EVENT:= {Size=1:15} ROLE_IN_EVENT:= {Size=3:27}
[ CHIL | HUSB | WIFE | MOTH | FATH | SPOU | ( <ROLE_DESCRIPTOR> ) ] [ CHIL | HUSB | WIFE | MOTH | FATH | SPOU | ( <ROLE_DESCRIPTOR> ) ]
ROMANISATION_TYPE:= {Size=5:30} ROMANISATION_METHOD:= {Size=5:30}
[<user defined> | pinyin | romaji | wadegiles] [<user defined> | pinyin | romaji | wadegiles]
SCHOLASTIC_ACHIEVEMENT:= {Size=1:248} SCHOLASTIC_ACHIEVEMENT:= {Size=1:248}
SEX_VALUE:= {Size=1:1} SEX_VALUE:= {Size=1:1}
[ M | F | U ] [ M | F | X | U | N ]
SOCIAL_SECURITY_NUMBER:= {Size=9:11}
SOURCE_CALL_NUMBER:= {Size=1:120} SOURCE_CALL_NUMBER:= {Size=1:120}
SOURCE_DESCRIPTION:= {Size=1:248}
SOURCE_DESCRIPTIVE_TITLE:= {Size=1:248} SOURCE_DESCRIPTIVE_TITLE:= {Size=1:4095}
SOURCE_FILED_BY_ENTRY:= {Size=1:60} SOURCE_FILED_BY_ENTRY:= {Size=1:60}
SOURCE_JURISDICTION_PLACE:= {Size=1:120} SOURCE_JURISDICTION_PLACE:= {Size=1:120}
<PLACE_NAME> <PLACE_NAME>
SOURCE_MEDIA_TYPE:= {Size=1:15} SOURCE_MEDIA_TYPE:= {Size=1:15}
[ audio | book | card | electronic | fiche | film | magazine | manuscript | map | newspaper | photo | tombstone | video ] [ audio | book | card | electronic | fiche | film | magazine | manuscript | map | newspaper | photo | tombstone | video ]
SOURCE_ORIGINATOR:= {Size=1:248} SOURCE_ORIGINATOR:= {Size=1:255}
SOURCE_PUBLICATION_FACTS:= {Size=1:248} SOURCE_PUBLICATION_FACTS:= {Size=1:4095}
SUBMITTER_NAME:= {Size=1:60} SUBMITTER_NAME:= {Size=1:60}
TEMPLE_CODE:= {Size=4:5}
TEXT:= {Size=1:248} TEXT:= {Size=1:32767}
TEXT_FROM_SOURCE:= {Size=1:248} TEXT_FROM_SOURCE:= {Size=1:32767}
<TEXT> <TEXT>
TIME_VALUE:= {Size=1:12} TIME_VALUE:= {Size=7:12}
[ hh:mm:ss.fs] hh:mm[:ss[.fs]]
TRANSMISSION_DATE:= {Size=10:11}
<DATE_EXACT>
USER_REFERENCE_NUMBER:= {Size=1:20} USER_REFERENCE_NUMBER:= {Size=1:20}
USER_REFERENCE_TYPE:= {Size=1:40} USER_REFERENCE_TYPE:= {Size=1:40}
USER_TEXT:= {Size=1:32767}
WHERE_WITHIN_SOURCE:= {Size=1:248} WHERE_WITHIN_SOURCE:= {Size=1:248}
XREF:= {Size=1:22} XREF:= {Size=3:22}
XREF:FAM:= {Size=1:22} XREF:FAM:= {Size=3:22}
XREF:INDI:= {Size=1:22} XREF:INDI:= {Size=3:22}
XREF:NOTE:= {Size=1:22} XREF:NOTE:= {Size=3:22}
XREF:OBJE:= {Size=1:22} XREF:OBJE:= {Size=3:22}
XREF:REPO:= {Size=1:22} XREF:REPO:= {Size=3:22}
XREF:SOUR:= {Size=1:22} XREF:SOUR:= {Size=3:22}
XREF:SUBM:= {Size=1:22} XREF:SUBM:= {Size=3:22}
XREF:SUBN:= {Size=1:22}
YEAR:= {Size=3:4} YEAR:= {Size=3:4}
YEAR_GREG:= {Size=3:7}
[ <NUMBER> | <NUMBER>/<DIGIT><DIGIT> ]

Some notes

Strangely enough, the definition of SEX_VALUE isn’t written in a grammar, but valid values are enumerated in text. This was the case in GEDCOM 5.5.1 and still is in GEDCOM 5.5.5. In the table above, I but the valid values in grammar, so the difference is notable ( [ M | F | U ] versus [ M | F | X | U | N ] ). I hope a future GEDCOM version will put the values in the grammar.

A change in the GEDCOM 5.5.5 grammar is that in various places the space is explicitly included, like: DATE_EXACT:= <DAY> + space + <MONTH> + space + <YEAR>. I don’t think this makes the grammar more readable. Usually characters are used as literals, now sometimes it’s more of an operator in the grammar… And, this explicit notation of spaces isn’t use consistenlty in the grammar.

At first glace, the definition of CHARACTER_ENCODING hasn’t changed: [ UTF-8 | UNICODE | ANSEL | ASCII ] But, if you read the GEDCOM 5.5.5 Specification PDF, you’ll read:

The ASCII and ANSEL character sets are obsolete; the ASCII and ANSEL encoding are not legal in GEDCOM 5.5.5.

This kind of definition does the specification no good! I hope, in a future version a more formal (and complete) notation will be used for the grammar.