Skip to content

This interpreter is used to lex and parse URIs in order to identify its components, specially to distinguish whether the host is IPv4, IPv6, or Registered Name.

License

Notifications You must be signed in to change notification settings

spjuanjoc/uri_interpreter_cpp

Repository files navigation

URI interpreter C++

CI Platform Compiler Build Status
Github Actions Linux Ubuntu gcc linux
Github Actions MacOS clang macos
AppVeyor Windows MSVC ??

URI stands for Uniform Resource Identifier.

This interpreter is used to perform lexical and grammatical analysis (lex and parse) for URIs in order to identify its components, specially to distinguish whether the host is IPv4, IPv6, or Registered Name.


URI components:

  • Scheme
  • Authority
  • Path
  • Query
  • Fragment

Where the authority's components are:

  • Userinfo
  • Host
  • Port

And the host can be:

  • IPv6
  • IPv4
  • Registered Name

The minimum required components are:

  • Scheme
  • Host ?
  • Path

URI generic syntax:

URI = scheme:[//authority]path[?query][#fragment]

where the authority component divides into three subcomponents:

authority = [userinfo@]host[:port]

img

See the Wiki for URI

Tools

  • CMake > 3.1
  • gcc-7 c++17
  • conan
  • Catch2

About

This interpreter is used to lex and parse URIs in order to identify its components, specially to distinguish whether the host is IPv4, IPv6, or Registered Name.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published