/// <summary> a scanner with a CharPattern for double quoted string literal. /// backslash '\' is used as escape character. /// </summary> /// <returns> the scanner. /// </returns> public static Scanner IsQuotedString() { /* * final CharPattern q = Patterns.IsChar('"'); * final CharPattern open = q.Seq(quoted().Many()); * return isPattern(open, "\"").Seq(name, isPattern(q, "\"")); */ Scanner q = Scanners.IsChar('"'); Scanner qc = IsPattern("string quoted", quoted_str, "quoted string"); return(qc.Between(q, q).Rename("quoted string")); }
internal static WordsData instance(string[] names) { Hashtable operators = new Hashtable(); string[] ops = sort(names); Lexer[] lxs = new Lexer[ops.Length]; for (int i = 0; i < ops.Length; i++) { string s = ops[i]; Scanner scanner = s.Length == 1 ? Scanners.IsChar(s[0]) : Scanners.IsString(s); object tok = Tokens.CreateReservedWordToken(s); operators[s] = tok; Lexer lx = Lexers.Lex(scanner, Tokenizers.ForValue(tok)); lxs[i] = lx; } return(new WordsData(Functors.AsMap <string, object>(operators), lxs)); }
/// <summary> scanner for a c/c++/java style character literal. such as 'a' or '\\'.</summary> /// <returns> the scanner. /// </returns> public static Scanner IsQuotedChar() { //final Scanner q = isChar('\''); /* * final CharPattern q = Patterns.IsChar('\''); * final CharPattern qc = Patterns.or( * Patterns.IsString("\\'"), * Patterns.NotChar('\'') * ); * return isPattern(q.Seq(qc), "'").Seq(name, isPattern(q, "'")); */ Scanner q = Scanners.IsChar('\''); Scanner qc = IsPattern("char quoted", quoted_char, "quoted char"); return(qc.Between(q, q).Rename("quoted char")); }