Ejemplo n.º 1
0
        static void OldMain(string[] args)
        {
            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
            watch.Start();
            int    count  = 100000000;
            double answer = 0;

            watch.Start();
            for (int i = 0; i < count; i++)
            {
                answer = Math.Sqrt(Math.Tan(i));
            }
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds);
            watch.Reset();
            watch.Start();
            Parallel.For(0, count, (i) => answer = Math.Sqrt(Math.Tan(i)));
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds);
            Console.ReadKey();
            return;

            //"var number:int:=.0\nvar text:string:=\"yo yo yo, this shouldn't match a var\""
            var    file   = new System.IO.StreamReader("test.t");
            var    output = new System.IO.StreamWriter("test.txt");
            string input  = file.ReadToEnd() + " ";

            file.Close();
            //Console.WriteLine(input);
            var          grammar       = BuildGrammar();
            var          lexicalTokens = BuildTSharpLexer();
            List <Token> tokens        = LexicalAnalyzer(lexicalTokens, input);

            PrintLexicalAnalysis(tokens, output);
            output.Close();
            GrammarTokenMatch.Matches(grammar, lexicalTokens, tokens, 0, tokens.Count, "expression");

            //string line = ConvertToCSharpPreDef(LexicalAnalyzer(BuildTSharpLexer(), input));
            //Console.WriteLine(line);
            //output.WriteLine(line);
            Console.WriteLine("==============================================");
            Console.WriteLine("done");
            Console.ReadKey();
        }
Ejemplo n.º 2
0
        static List <GrammarTokenMatch> BuildGrammar()
        {
            List <GrammarTokenMatch> grammarMatches = new List <GrammarTokenMatch>();
            var file = new System.IO.StreamReader("grammar.txt");

            while (!file.EndOfStream)
            {
                string[] line = file.ReadLine().Split('=', ':');
                if (line.Length > 0)
                {
                    GrammarTokenMatch match = new GrammarTokenMatch();
                    match.type       = line[0].Trim();
                    match.precedence = line.Length > 2 ? int.Parse(line[2]) : int.MaxValue;
                    match.matches    = line[1].Split(' ').Select((x) => x.Trim()).Where((x) => x != "").ToArray();
                    grammarMatches.Add(match);
                }
            }
            file.Close();
            return(grammarMatches);
        }