---
name: "Gedcom::Grammar"
section: "3pm"
platform: "linux"
package: "libgedcom-perl"
version: "1.22-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Gedcom::Grammar"
---

# Gedcom::Grammar(3pm)

a module to manipulate GEDCOM grammars Version 1.22 - 15th November 2019

## NAME

Gedcom::Grammar - a module to manipulate GEDCOM grammars

Version 1.22 - 15th November 2019

## SYNOPSIS

```
  use Gedcom::Grammar;
  my $st = $grammar->structure("GEDCOM");
  my @sgr = $grammar->item("DATE");
  my @items = $grammar->valid_items;
  my $min = $grammar->min;
  my $max = $grammar->max;
  my @items = $grammar->items;
```

## DESCRIPTION

A selection of subroutines to handle the grammar of a GEDCOM file.

Derived from Gedcom::Item.

## HASH MEMBERS

Some of the more important hash members are:

### $grammar-\>{top}

The top of the grammar tree.

### $grammar-\>{top}{structures}

A reference to a hash mapping the names of all structures to the grammar objects.

## METHODS

### structures

```
  my $st = $grammar->structure("GEDCOM");
```

Return the grammar item of the specified structure, if it exists, or undef.

### item

```
  my @sgr = $grammar->item("DATE");
```

Return a list of the possible grammar items of the specified sub-item, if it exists.

### min

```
  my $min = $grammar->min;
```

Return the minimum permissible number of `$grammar` items

### max

```
  my $max = $grammar->max;
```

Return the maximum permissible number of `$grammar` items

### items

```
  my @items = $grammar->items;
```

Return a list of tags of the grammar's sub-items

### valid\_items

```
  my @items = $grammar->valid_items;
```

Return a hash detailing all the valid sub-items of the grammar item. The key is the tag of the sub-item and the value is an array of hashes with three members:

```
  grammar => the sub-item grammar
  min     => the minimum permissible number of these sub-items
  max     => the maximum permissible number of these sub-items
```
