Skip to content

Instantly share code, notes, and snippets.

Created March 28, 2017 22:06
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save anonymous/04e1f3c66a6b406d38418c8f2f79813c to your computer and use it in GitHub Desktop.
grammar Pkg {
token TOP { <ws> <name> ['-' <ver>]? ['-' <arch>]? ['-' <build>]? [. <ext>]? }
token name { <alnum>+ }
token ver { <digit>+ ['.'<digit>+]* }
token arch { <alnum>+ }
token build { <digit>+ }
token ext { <alnum>+ }
}
# grammar should match successfully when passed:
# name (rakudo)
# name and ver (rakudo-5.3.2)
# name, ver and arch (rakudo-5.3.2-x86_64)
# name, ver, arch and build (rakudo-5.3.2-x86_64-7)
# name, ver, arch, build and ext (rakudo-5.3.2-x86_64-7.pkg)
my $m = Pkg.parse('rakudo-5.3.2-x86_64-7.pkg');
#my $m = Pkg.parse('rakudo-star-5.3.2-x86_64-7.xyz'); # What to do to allow "-" in package name!
say "name: $m<name>";
say "ver: $m<ver>";
say "arch: $m<arch>";
say "build: $m<build>";
say "ext: $m<ext>";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment