File: main.cpp

package info (click to toggle)
antlr 2.7.7%2Bdfsg-14
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,016 kB
  • sloc: java: 54,649; cs: 12,537; makefile: 8,854; cpp: 7,359; pascal: 5,273; sh: 4,333; python: 4,297; lisp: 1,969; xml: 220; lex: 192; ansic: 127
file content (57 lines) | stat: -rw-r--r-- 1,003 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <fstream>
#include <exception>
#include <antlr/ANTLRException.hpp>

#include "L.hpp"

using std::cin;
using std::cerr;
using std::endl;
using std::istream;
using std::ifstream;

int main(int argc, char **argv)
{
	ifstream s;

	if( argc == 1 )
	{
		cerr << "Usage: " << argv[0] << "<files>|-" << endl;
		return 1;
	}

	try {
		for( int i = 1; i < argc; i++ )
		{
			istream *in = 0;
			if( argv[i][0] == '-' && strlen(argv[i]) == 1 )
				in = &cin;
			else
			{
				s.open(argv[i]);
				in = &s;
			}

			UnicodeCharBuffer input(*in);
			L lexer(input);
			lexer.done = false;

			while ( ! lexer.done )
			{
				antlr::RefToken t = lexer.nextToken();
				std::cout << "Token: " << t->getType() << " '" << t->getText() << "'" << std::endl;
			}
			s.close();
		}
	}
	catch (antlr::ANTLRException& e) {
		cerr << "parser exception: " << e.toString() << endl;
		return 2;
	}
	catch (std::exception& e) {
		cerr << "exception: " << e.what() << endl;
		return 2;
	}
	return 0;
}