Implement symbolic constants

Symbolic constants like icmp-echoreply et al are not currently supported, and should be implemented.

Note that there are two kinds of symbolic constant, AIUI: symbolic constants in arithmetic expressions, where they just evaluate to a value, and symbolic constants in logical operators, e.g. port http.  Perhaps symbolic constants are only valid in some operators (like "port").  Some investigation is needed.
I think this can be useful if I wanted to split the string into its parts, for instance "ftp-data-http" => ('ftp', 'data', 'http'), but I'm more interested only in the positions of the hyphen character. Later I divide the string into two groups: ("ftp", "data-http") or ("ftp-data", "http). This works also for expressions with only one hyphen like "80-90" => (80, 90) (the first attempt success so I don't try the second attempt).

I could use that expression also to get only the positions, but I don't see the advantage of it. I still need to iterate through th regex until pos is nil.