Open pieterbos opened 6 years ago
In addition, to match the trailing slashes in https://www.test.example/
and https://www.test.example/aa/bb/
correctly, we need:
fragment URI_PATH : '/' | ( '/' URI_XPALPHA+ )+ ('/')?;
probably still not perfect
The following URI in ODIN is not recognized as an URI by the lexer:
They are however both valid URIs.
The lexer does not recognize this because of the following lexer rules:
On first glance it looks like this can be fixed with a simple
URI_PATH?
. However, this clashes with the labels of the expression grammar. So I tried:Which is better, but it still clashes with the following rule statement:
because it matches
label:/path/to/value
as an URI.So the remaining fixes are:
Require the URI_AUTHORITY:
fragment URI_HIER_PART : ( '//' URI_AUTHORITY ) URI_PATH? ;
Match the
<>
-characters that must always surround a URL in the lexerFind a way to implement different lexer modes for different parts of the archetype
would be best I think. however, there is no easy way in the current ADL language design to implement lexer mode switching without resorting to rather complicated target language constructions. So I stuck with the first solution for now for archie, which is at least better than the alternatives. A better fix would be good though!