{"id":42630071,"url":"https://github.com/jamespwilliams/ebnf-shipping-forecast","last_synced_at":"2026-01-29T05:16:51.816Z","repository":{"id":135907268,"uuid":"456250279","full_name":"jamespwilliams/ebnf-shipping-forecast","owner":"jamespwilliams","description":"EBNF specification of the BBC's shipping forecast","archived":false,"fork":false,"pushed_at":"2022-11-14T17:13:41.000Z","size":8,"stargazers_count":43,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-01-27T00:48:29.006Z","etag":null,"topics":["ebnf","forecast","shipping"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamespwilliams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-02-06T19:27:02.000Z","updated_at":"2024-01-04T17:05:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"f24eb243-1bc6-4540-8d67-9f55e1559b23","html_url":"https://github.com/jamespwilliams/ebnf-shipping-forecast","commit_stats":{"total_commits":5,"total_committers":2,"mean_commits":2.5,"dds":"0.19999999999999996","last_synced_commit":"6085316aa4700d6a291c8fa7ea2495c0955f6065"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jamespwilliams/ebnf-shipping-forecast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamespwilliams%2Febnf-shipping-forecast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamespwilliams%2Febnf-shipping-forecast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamespwilliams%2Febnf-shipping-forecast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamespwilliams%2Febnf-shipping-forecast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamespwilliams","download_url":"https://codeload.github.com/jamespwilliams/ebnf-shipping-forecast/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamespwilliams%2Febnf-shipping-forecast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28857232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"ssl_error","status_checked_at":"2026-01-28T22:56:00.861Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebnf","forecast","shipping"],"created_at":"2026-01-29T05:16:51.328Z","updated_at":"2026-01-29T05:16:51.798Z","avatar_url":"https://github.com/jamespwilliams.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ebnf-shipping-forecast\n\nThe BBC Shipping Forecast has a [very strict\nformat](https://en.wikipedia.org/wiki/Shipping_Forecast#Broadcast_format). This\nrepo contains a specification for Shipping Forecasts in EBNF.\n\nActual shipping forecasts will deviate from these rules - there's a bit more\nwiggle room in the general synopsis and the wording of the area forecasts.\nNonetheless, this specification captures the general structure and will cover\nmost parts of most forecasts.\n\nOne fun result of this is that [random shipping forecasts can be generated](https://bnfplayground.pauliankline.com/?bnf=%2F*%20https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FShipping_Forecast%23Broadcast_format%20*%2F%0A%0A%3Cdigit%3E%20%3A%3A%3D%20%5B0-9%5D%0A%0A%3Chour%3E%20%20%20%20%20%20%20%20%3A%3A%3D%20%5B0-1%5D%20%3Cdigit%3E%20%7C%20%222%22%20%5B0-3%5D%0A%3Cminute%3E%20%20%20%20%20%20%3A%3A%3D%20%5B0-5%5D%20%3Cdigit%3E%0A%3Ctime%3E%20%20%20%20%20%20%20%20%3A%3A%3D%20%3Chour%3E%20%22%3A%22%20%3Cminute%3E%0A%3Cfuture_time%3E%20%3A%3A%3D%20%3Ctime%3E%20%22%20tomorrow%22%3F%0A%0A%3Ccompass_direction%3E%20%20%20%20%20%20%3A%3A%3D%20%22north%22%20(%22west%22%20%7C%20%22east%22)%20%7C%20%22east%22%20%7C%20%22south%22%20(%22west%22%20%7C%20%22east%22)%20%7C%20%22west%22%0A%3Ccompass_direction_caps%3E%20%3A%3A%3D%20%22North%22%20(%22west%22%20%7C%20%22east%22)%20%7C%20%22East%22%20%7C%20%22South%22%20(%22west%22%20%7C%20%22east%22)%20%7C%20%22West%22%20%0A%0A%3Carea%3E%20%3A%3A%3D%20%22Viking%22%20%7C%20%22North%20Utsire%22%20%7C%20%22South%20Utsire%22%20%7C%20%22Forties%22%20%20%20%20%20%20%7C%20%22Cromarty%22%20%20%7C%20%22Forth%22%20%20%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%22Tyne%22%20%20%20%7C%20%22Dogger%22%20%20%20%20%20%20%20%7C%20%22Fisher%22%20%20%20%20%20%20%20%7C%20%22German%20Bight%22%20%7C%20%22Humber%22%20%20%20%20%7C%20%22Thames%22%20%20%7C%20%22Dover%22%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%22Wight%22%20%20%7C%20%22Portland%22%20%20%20%20%20%7C%20%22Plymouth%22%20%20%20%20%20%7C%20%22Biscay%22%20%20%20%20%20%20%20%7C%20%22Trafalgar%22%20%7C%20%22FitzRoy%22%20%7C%20%22Sole%22%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%22Lundy%22%20%20%7C%20%22Fastnet%22%20%20%20%20%20%20%7C%20%22Irish%20Sea%22%20%20%20%20%7C%20%22Shannon%22%20%20%20%20%20%20%7C%20%22Rockall%22%20%20%20%7C%20%22Malin%22%20%20%20%7C%20%22Hebrides%22%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%22Bailey%22%20%7C%20%22Fair%20Isle%22%20%20%20%20%7C%20%22Faeroes%22%20%20%20%20%20%20%7C%20%22Southeast%20Iceland%22%20%0A%0A%3Cintroduction%3E%20%3A%3A%3D%20%22And%20now%20the%20Shipping%20Forecast%2C%20issued%20by%20the%20Met%20Office%20on%20behalf%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22of%20the%20Maritime%20and%20Coastguard%20Agency%20at%20%22%20%3Ctime%3E%20%22%20today.%22%0A%0A%3Cat_least_two_comma_separated_areas%3E%20%3A%3A%3D%20%3Carea%3E%20%22%2C%20%22%20%3Carea%3E%20%7C%20%3Carea%3E%20%22%2C%20%22%20%3Cat_least_two_comma_separated_areas%3E%0A%3Carea_list%3E%20%3A%3A%3D%20%3Carea%3E%20%7C%20%3Carea%3E%20%22%20and%20%22%20%3Carea%3E%20%7C%20%3Cat_least_two_comma_separated_areas%3E%20%22%2C%20and%20%22%20%3Carea%3E%0A%0A%3Cgale_warnings%3E%20%3A%3A%3D%20%22There%20are%20warnings%20of%20gales%20in%20%22%20%3Carea_list%3E%20%22.%22%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22There%20are%20warnings%20of%20gales%20in%20all%20areas%20except%20%22%20%3Carea_list%3E%20%22.%22%0A%0A%3Crate_of_change%3E%20%20%20%20%20%20%20%3A%3A%3D%20%22more%20slowly%22%20%7C%20%22slowly%22%20%7C%20%22quickly%22%20%7C%20%22very%20rapidly%22%0A%3Cpressure%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20(%229%22%20%7C%20%2210%22)%20%3Cdigit%3E%20%3Cdigit%3E%0A%3Cpressure_description%3E%20%3A%3A%3D%20%22High%22%20%7C%20%22Medium%22%20%7C%20%22Low%22%0A%3Cpressure_change%3E%20%20%20%20%20%20%3A%3A%3D%20%22deepening%22%20%7C%20%22clearing%22%0A%0A%3Cgeneral_synopsis_pressure_area%3E%20%3A%3A%3D%20%3Ccompass_direction%3E%20%22%20of%20%22%20%3Carea%3E%20%22%20%22%20%3Cpressure%3E%0A%3Cgeneral_synopsis_line%3E%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20%3Cpressure_description%3E%20%22%20%22%20%3Cgeneral_synopsis_pressure_area%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22%2C%20%22%20%3Cpressure_change%3E%20%22%20%22%20%3Crate_of_change%3E%20%22%2C%22)%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%20expected%20%22%20%3Cgeneral_synopsis_pressure_area%3E%20%22%20by%20%22%20%3Cfuture_time%3E%20%22.%22%0A%3Cgeneral_synopsis_body%3E%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20%3Cgeneral_synopsis_line%3E%20%7C%20%3Cgeneral_synopsis_line%3E%20%22%20%22%20%3Cgeneral_synopsis_body%3E%0A%3Cgeneral_synopsis%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20%22The%20general%20synopsis%3A%5Cn%5Cn%22%20%3Cgeneral_synopsis_body%3E%0A%0A%3Cprecipitation_modifier%3E%20%3A%3A%3D%20%22Thundery%22%20%7C%20%22Wintry%22%20%7C%20%22Squally%22%20%7C%20%22Occasionally%22%20%7C%20%22Heavy%22%20%7C%20%22Light%22%0A%3Cprecipitation_type%3E%20%20%20%20%20%3A%3A%3D%20%22showers%22%20%7C%20%22rain%22%20%7C%20%22snow%22%0A%3Cprecipitation%3E%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20%3Cprecipitation_modifier%3E%20%22%20%22%20%3Cprecipitation_type%3E%0A%0A%2F*%20https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBeaufort_scale%20*%2F%0A%3Cwind_strength%3E%20%20%20%3A%3A%3D%20%5B0-7%5D%20%7C%20%22gale%208%22%20%7C%20%22severe%20gale%209%22%20%7C%20%22storm%2010%22%20%7C%20%22violent%20storm%2011%22%20%7C%20%22hurricane%20force%2012%22%0A%3Cwind_change%3E%20%20%20%20%20%3A%3A%3D%20%22becoming%20cyclonic%22%20%7C%20%22veering%22%20%7C%20%22backing%22%0A%3Cinitial_wind%3E%20%20%20%20%3A%3A%3D%20%3Ccompass_direction_caps%3E%20%22%20%22%20%3Cwind_strength%3E%20(%22%20to%20%22%20%3Cwind_strength%3E)%0A%3Csubsequent_wind%3E%20%3A%3A%3D%20%3Ccompass_direction%3E%20%22%20%22%20%3Cwind_strength%3E%20%22%20later%22%3F%0A%3Cwind%3E%20%20%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20%3Cinitial_wind%3E%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinitial_wind%3E%20%22%2C%20%22%20%3Cwind_change%3E%20%22%20%22%20%3Csubsequent_wind%3E%20(%22%2C%20occasionally%20%22%20%3Csubsequent_wind%3E)%3F%0A%0A%3Cinitial_visibility%3E%20%20%20%20%3A%3A%3D%20%22Good%22%20%7C%20%22Moderate%22%20%7C%20%22Poor%22%20%7C%20%22Very%20poor%22%20%0A%3Csubsequent_visibility%3E%20%3A%3A%3D%20%22good%22%20%7C%20%22moderate%22%20%7C%20%22poor%22%20%7C%20%22very%20poor%22%0A%3Cvisibility%3E%20%20%20%20%20%20%20%20%20%20%20%20%3A%3A%3D%20%3Cinitial_visibility%3E%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinitial_visibility%3E%20%22%20or%20%22%20%3Csubsequent_visibility%3E%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinitial_visibility%3E%20%22%2C%20occasionally%20%22%20%3Csubsequent_visibility%3E%20%22%20later%22%3F%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinitial_visibility%3E%20%22%2C%20becoming%20%22%20%3Csubsequent_visibility%3E%20%22%20later%22%3F%0A%0A%3Cicing%3E%20%3A%3A%3D%20(%22Moderate%22%20%7C%20%22Severe%22)%20%22%20icing%22%0A%0A%3Carea_forecast%3E%20%20%3A%3A%3D%20%3Carea_list%3E%20%22.%20%22%20%3Cwind%3E%20%22.%20%22%20%3Cprecipitation%3E%20%22.%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cvisibility%3E%20%22.%22%20(%22%20%22%20%3Cicing%3E%20%22.%22)%3F%0A%3Carea_forecasts%3E%20%3A%3A%3D%20%22The%20area%20forecasts%20for%20the%20next%2024%20hours%3A%5Cn%5Cn%22%20(%3Carea_forecast%3E%20%22%5Cn%22)%2B%0A%0A%3Cforecast%3E%20%3A%3A%3D%20%3Cintroduction%3E%20%22%5Cn%5Cn%22%20%3Cgale_warnings%3E%20%22%5Cn%5Cn%22%20%3Cgeneral_synopsis%3E%20%22%5Cn%5Cn%22%20%3Carea_forecasts%3E%0A\u0026name=) - select \"Test against non-terminal\" and press \"GENERATE RANDOM \\\u003cFORECAST\\\u003e\".\n\ne.g:\n\n```\nAnd now the Shipping Forecast, issued by the Met Office on behalf of the Maritime and Coastguard Agency at 14:23 today.\n\nThere are warnings of gales in all areas except German Bight and Irish Sea.\n\nThe general synopsis:\n\nLow east of German Bight 964, deepening quickly, expected northwest of Bailey 935 by 17:46 tomorrow. Medium east of Southeast Iceland 991, clearing very rapidly, expected west of Shannon 960 by 00:04.\n\nThe area forecasts for the next 24 hours:\n\nDogger and Fair Isle. East hurricane force 12 to gale 8. Light showers. Very poor, occasionally good.\nTrafalgar, German Bight, and Biscay. Southwest storm 10 to hurricane force 12. Heavy snow. Moderate. Moderate icing.\n```\n\nBits which don't make sense (mostly because of the limitations of EBNF):\n\n* Lists of areas, lists of wind strengths, etc. can contain duplicate elements:\n   * For example \"FitzRoy, FitzRoy and FitzRoy: ...\" is possible, but makes no\n     sense\n* In reality, all areas must be covered in the area forecast - this isn't enforced\n* The general synopsis is actually fairly free-form, some synopses won't be covered by this\n* In reality, the forecast must be less than 350 words\n* There's some duplication I don't like in the EBNF, especially as a result of\n  capitalised and uncapitalised terminals - maybe there's a better way to do\n  this that I'm missing?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamespwilliams%2Febnf-shipping-forecast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamespwilliams%2Febnf-shipping-forecast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamespwilliams%2Febnf-shipping-forecast/lists"}