Re: multi-line Strings
On 12/18/2012 8:07 PM, Arne Vajh?j wrote:
On 12/15/2012 6:54 AM, Chris Uppal wrote:
Off-the-top-of-my-head (all classes and method are imaginary):
Regexp alpha = Regexp.fromList(java.lang.text.portable.Alphas);
alpha = alpha.or('_');
Regexp num = Regexp.fromList(java.lang.text.portable.Digits);
Regexp alphanum = alpha.or(num);
Regexp identifier = alpha.followedBy(alphanum.repeated());
I think that is what is widely known in the .NET world
as a fluent API.
better term maybe than "big pile o' nasty...".
yes, regex syntax could be nicer, but probably not by making it into a
big pile of API calls.
maybe something more EBNF-like can be used, like say:
SyntaxPattern pat = new SyntaxPattern(
"alpha = ('A'-'Z') | ('a'-'z');"
"alpha2 = alpha | '_';",
"hexalpha = ('A'-'F') | ('a'-'f');"
"num = ('0'-'9');",
"hexnum = num | hexalpha;",
"alphanum = alpha2 | num;",
"basenumber = num+;",
"realnumber = basenumber '.' basenumber ['e' basenumber ];",
"hexnumber = '0x' hexnum+;",
"integer = basenumber | hexnumber;",
"identifier = alpha2 alphanum*;",
...);
StringReader strr = new StringReader("foo 999 bar69");
String tok;
....
if(pat.match(strr, "identifier"))
{
tok=pat.readNext(strr, "identifier");
...
}
or:
tok=pat.tryMatchRead(strr, "identifier");
if(tok!=null)
{
...
}
or:
SyntaxParser parse = new SyntaxParser(strr, pat);
tok=parse.tryMatchRead("identifier");
if(tok!=null)
{
...
}
tok=parse.tryMatchRead("integer");
if(tok!=null)
{
...
}
granted, yes, all this is probably something a bit different than using
regexes, but oh well.
or something...