internal WhitespaceScanner(TextReader reader, ErrorReporter reporter)
     : base(reader, reporter)
 {
     whitespace = new HashSet<char>();
     whitespace.Add(' ');
     whitespace.Add('\t');
     whitespace.Add('\n');
 }
예제 #2
0
        public Lexer(string path, ErrorReporter reporter, int spacesPerTab=8)
        {
            reader = new TextReader(path, spacesPerTab);
            this.reporter = reporter;
            reporter.Lines = reader.Lines;

            backtrackBuffer = new BacktrackBuffer(BACKTRACK_BUFFER_SIZE);

            scanners = new List<TokenScanner>();
            scanners.Add(new WhitespaceScanner(reader, reporter));
            scanners.Add(new CommentScanner(reader, reporter));
            scanners.Add(new IdentifierAndKeywordScanner(reader, reporter));
            scanners.Add(new IntegerScanner(reader, reporter));
            scanners.Add(new StringScanner(reader, reporter));
            scanners.Add(new OperatorScanner(reader, reporter));
        }
예제 #3
0
 internal TokenScanner(TextReader reader, ErrorReporter reporter)
 {
     this.reader = reader;
     this.Reporter = reporter;
 }
 internal CommentScanner(TextReader reader, ErrorReporter reporter)
     : base(reader, reporter)
 {
     isMultilineComment = false;
 }