Exemple #1
0
        public void Parse(string file_path)
        {
            Source source  = new Source(file_path);
            var    scanner = new PascalScanner(source);
            var    parser  = new PascalParser(scanner);

            parser.Parse();
        }
Exemple #2
0
        public void NextChar_ShouldReturnNextChar()
        {
            const char expectedNextChar = 'a';

            var scanner = new PascalScanner(Mock.Of <ISource>(source => source.NextChar() == expectedNextChar));

            scanner.NextChar().Should().Be(expectedNextChar);
        }
 public static Parser createParser(string language, string type, Source source)
 {
     if (StringComparer.CurrentCultureIgnoreCase.Equals(language, "Pascal") && StringComparer.CurrentCultureIgnoreCase.Equals(type, "top-down"))
     {
         Scanner scanner = new PascalScanner(source);
         return(new PascalParserTD(scanner));
     }
     else if (!StringComparer.CurrentCultureIgnoreCase.Equals(language, "Pascal"))
     {
         throw new Exception("Parser factory: Invalid language '" + language + "'");
     }
     else
     {
         throw new Exception("Parser factory: Invalid type '" + type + "'");
     }
 }
Exemple #4
0
        public static Parser CreateParser(string language, string type, Source source)
        {
            var lang = language.ToLower();
            var t    = type.ToLower();

            if (lang == "pascal" && t == "top-down")
            {
                var scanner = new PascalScanner(source);
                return(new PascalParserTD(scanner));
            }
            else if (lang != "pascal")
            {
                throw new Exception($"Parser factory: invalid language '{language}'");
            }
            else
            {
                throw new Exception($"Parser factory: invalid type '{type}'");
            }
        }
Exemple #5
0
        public void NextToken_ShouldReturnCharTokenIfCurrentCharIsNotEndOfFile()
        {
            var scanner = new PascalScanner(Mock.Of <ISource>(source => source.CurrentChar() == 'a'));

            scanner.NextToken().Should().BeOfType(typeof(CharToken));
        }
Exemple #6
0
        public void NextToken_ShouldReturnEndOfFileTokenIfCurrentCharIsEndOfFile()
        {
            var scanner = new PascalScanner(Mock.Of <ISource>(source => source.CurrentChar() == Constants.EOF));

            scanner.NextToken().Should().BeOfType(typeof(EofToken));
        }