https://github.com/jamespwilliams/ebnf-shipping-forecast Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} jamespwilliams / ebnf-shipping-forecast Public * Notifications * Fork 0 * Star 13 * EBNF specification of the BBC's shipping forecast 13 stars 0 forks Star Notifications * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 0 tags Code Latest commit @jamespwilliams jamespwilliams Add note to README about specification strictness ... 2c943f7 Feb 6, 2022 Add note to README about specification strictness 2c943f7 Git stats * 3 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time README.md Add note to README about specification strictness Feb 6, 2022 shipping-forecast.ebnf Allow hours 20-23 Feb 6, 2022 View code README.md ebnf-shipping-forecast The BBC Shipping Forecast has a very strict format. This repo contains a specification for Shipping Forecasts in EBNF. Actual shipping forecasts will deviate from these rules - there's a bit more wiggle room in the general synopsis and the wording of the area forecasts. Nonetheless, this specification captures the general structure and will cover most parts of most forecasts. One fun result of this is that random shipping forecasts can be generated - select "Test against non-terminal" and press "GENERATE RANDOM ". e.g: And now the Shipping Forecast, issued by the Met Office on behalf of the Maritime and Coastguard Agency at 14:23 today. There are warnings of gales in all areas except German Bight and Irish Sea. The general synopsis: Low 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. The area forecasts for the next 24 hours: Dogger and Fair Isle. East hurricane force 12 to gale 8. Light showers. Very poor, occasionally good. Trafalgar, German Bight, and Biscay. Southwest storm 10 to hurricane force 12. Heavy snow. Moderate. Moderate icing. Bits which don't make sense (mostly because of the limitations of EBNF): * Lists of areas, lists of wind strengths, etc. can contain duplicate elements: + For example "FitzRoy, FitzRoy and FitzRoy: ..." is possible, but makes no sense * In reality, all areas must be covered in the area forecast - this isn't enforced * The general synopsis is actually fairly free-form, some synopses won't be covered by this * In reality, the forecast must be less than 350 words * There's some duplication I don't like in the EBNF, especially as a result of capitalised and uncapitalised terminals - maybe there's a better way to do this that I'm missing? About EBNF specification of the BBC's shipping forecast Resources Readme Stars 13 stars Watchers 1 watching Forks 0 forks Releases No releases published Packages 0 No packages published * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.