Skip to content

Commit 5a2331b

Browse files
committed
parse names with genus and species hybrid (close #287)
1 parent 81415e5 commit 5a2331b

6 files changed

Lines changed: 4478 additions & 4443 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
## [v1.11.6] - 2025-04-01 Tue
6+
7+
- Add [#287]: parse names with genus and species hybrid.
8+
59
## [v1.11.5] - 2025-03-30 Sun
610

711
- Fix [#286]: parse names with named hybrid and comparison.
@@ -520,7 +524,8 @@
520524

521525
This document follows [changelog guidelines]
522526

523-
527+
[v1.11.6]: https://github.com/gnames/gnparser/compare/v1.11.5...v1.11.6
528+
[v1.11.5]: https://github.com/gnames/gnparser/compare/v1.11.4...v1.11.5
524529
[v1.11.4]: https://github.com/gnames/gnparser/compare/v1.11.3...v1.11.4
525530
[v1.11.3]: https://github.com/gnames/gnparser/compare/v1.11.2...v1.11.3
526531
[v1.11.2]: https://github.com/gnames/gnparser/compare/v1.11.1...v1.11.2

ent/parser/ast.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,16 @@ func (p *Engine) newNamedGenusHybridNode(n *node32) *namedGenusHybridNode {
300300
annot := parsed.NoAnnot
301301
hybr := p.newWordNode(n, parsed.HybridCharType)
302302
n = n.next
303+
if n.pegRule == ruleNamedSpeciesHybrid {
304+
annot = parsed.NamedHybridAnnot
305+
p.hybrid = &annot
306+
name = p.newNamedSpeciesHybridNode(n)
307+
nhn = &namedGenusHybridNode{
308+
Hybrid: hybr,
309+
nameData: name,
310+
}
311+
return nhn
312+
}
303313
n = n.up
304314
p.addWarn(parsed.HybridNamedWarn)
305315
if n.begin == 1 {

ent/parser/grammar.peg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ HybridFormulaPart <- HybridChar _ SpeciesEpithet (_ InfraspGroup)?
1919

2020
NamedHybrid <- NamedGenusHybrid / NamedSpeciesHybrid
2121

22+
NamedGenusHybrid <- HybridChar _? (NamedSpeciesHybrid / SingleName)
23+
2224
NamedSpeciesHybrid <- GenusWord (_ Subgenus)? (_ Comparison)? _ HybridChar _?
2325
SpeciesEpithet (_ InfraspGroup)?
2426

25-
NamedGenusHybrid <- HybridChar _? SingleName
26-
2727
GraftChimeraFormula <- SingleName (_ (GraftChimeraFormulaPart / GraftChimeraFormulaFull))+
2828

2929
GraftChimeraFormulaFull <- GraftChimeraChar (_ SingleName)?

0 commit comments

Comments
 (0)