===
Changes for RFC 1123 sec 2.1
violations.xml: comment out IP_V4_HAS_FOUR_COMPONENTS
PattenCompiler: remove entry using IP_V4_HAS_FOUR_COMPONENTS in for ipV4Address[]

=== JFlex

See src-dev to project.
Add JFlex.jar: /home/afs/sys/jflex-1.4.3/lib/JFlex.jar

Build:
See dev.buildlexer.MainGenerateLexers which does step 1-3

1/ BuildViolationCodes.main(args) (violations.xml => Java code)

2/ PatternCompiler.main (writes host.jflex)

3/ AbsLexer.main (writes other jflex files)

then refresh in Eclipse.

Edit to remove errors and warnings.
change yytext to 
@Override final String yytext()

=== What builds what
TestCreator:
  uris.xml -> test.xml

AbsLexerBuilder
        // violation.xml ==> ViolationCodes
        BuildViolationCodes.main(args) ;
        
        // host.jflex
        PatternCompilerBuilder.main(args) ;
        
        // Other jflex files
        AbsLexerBuilder.main(args) ;
====


/*
host => (@{regname})
regname => ((@{label}\\.)*@{label}\\.?)
label => (@{labelPrefix}(@{labelInside}@{labelPostfix})?)
labelInside => (@{labelSingleDashInside}?)
labelPrefix => (@{labelChar})
labelChar => (@{unreservedDNSLabel})
unreservedDNSLabel => (@{letterDigit}|_)
letterDigit => ([a-z0-9])
labelSingleDashInside => ((@{labelChar}+-)*@{labelChar}+)
labelPostfix => (@{labelChar})
*/

--------------

[[
RFC 1123, sec 2.1

      The syntax of a legal Internet host name was specified in RFC-952
      [DNS:4].  One aspect of host name syntax is hereby changed: the
      restriction on the first character is relaxed to allow either a
      letter or a digit.  Host software MUST support this more liberal
      syntax.
]]

I can't find an updated official grammar and I only came across by googling
to get the authoritive text to show it was illegal.  I happened on a nice
web page of DNS standards which mentioned it.

RFC 3986, sec 3.2.2, talks about the ambiguity.

The 1123 text isn't entirely clear - does it mean the first char of the
whole DNS host name or every component?

So a host of "1752" is now legal (albeit silly and unlikely to work very well).
-----------------
IP_V4_OCTET_RANGE
IP_V4_HAS_FOUR_COMPONENTS 
are no longer MUST
