javacc-6.1.2.examples.JavaGrammars.cpp.main.cc Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javacc Show documentation
Show all versions of javacc Show documentation
JavaCC is a parser/scanner generator for Java.
#include
#include
#include
#include
#include
#include "gen/JavaParserConstants.h"
#include "gen/CharStream.h"
#include "gen/JavaParser.h"
#include "gen/JavaParserTokenManager.h"
using namespace java::parser;
using namespace std;
JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
JAVACC_STRING_TYPE s;
#if WIDE_CHAR
wifstream fp_in;
#else
ifstream fp_in;
#endif
fp_in.open(file_name, ios::in);
// Very inefficient.
while (!fp_in.eof()) {
s += fp_in.get();
}
return s;
}
int main(int argc, char **argv) {
if (argc < 2) {
cout << "Usage: wjavaparser " << endl;
exit(1);
}
JAVACC_STRING_TYPE s = ReadFileFully(argv[1]);
CharStream *stream = new CharStream(s.c_str(), s.size() - 1, 1, 1);
JavaParserTokenManager *scanner = new JavaParserTokenManager(stream);
JavaParser parser(scanner);
parser.setErrorHandler(new MyErrorHandler());
parser.CompilationUnit();
SimpleNode *root = (SimpleNode*)parser.jjtree.peekNode();
if (root) {
JAVACC_STRING_TYPE buffer;
#if WIDE_CHAR
//root->dumpToBuffer(L" ", L"\n", &buffer);
//wcout << buffer << "\n";
root->dump(L" ");
#else
root->dumpToBuffer(" ", "\n", &buffer);
printf("%s\n", buffer.c_str());
#endif
}
}