コード例 #1
0
ファイル: Scanners.cs プロジェクト: leontius/Ragnarok
        /// <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"));
        }
コード例 #2
0
ファイル: Operators.cs プロジェクト: leontius/Ragnarok
        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));
        }
コード例 #3
0
ファイル: Scanners.cs プロジェクト: leontius/Ragnarok
        /// <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"));
        }