aboutsummaryrefslogtreecommitdiffstats
path: root/utils/Burg/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/Burg/main.c')
-rw-r--r--utils/Burg/main.c312
1 files changed, 156 insertions, 156 deletions
diff --git a/utils/Burg/main.c b/utils/Burg/main.c
index 01d77d2..19b62a3 100644
--- a/utils/Burg/main.c
+++ b/utils/Burg/main.c
@@ -20,163 +20,163 @@ extern int main ARGS((int argc, char **argv));
int
main(argc, argv) int argc; char **argv;
{
- int i;
- extern int atoi ARGS((const char *));
-
- for (i = 1; argv[i]; i++) {
- char **needStr = 0;
- int *needInt = 0;
-
- if (argv[i][0] == '-') {
- switch (argv[i][1]) {
- case 'V':
- fprintf(stderr, "%s\n", version);
- break;
- case 'p':
- needStr = (char**)&prefix;
- break;
- case 'o':
- needStr = &outFileName;
- break;
- case 'I':
- internals = 1;
- break;
- case 'T':
- simpleTables = 1;
- break;
- case '=':
+ int i;
+ extern int atoi ARGS((const char *));
+
+ for (i = 1; argv[i]; i++) {
+ char **needStr = 0;
+ int *needInt = 0;
+
+ if (argv[i][0] == '-') {
+ switch (argv[i][1]) {
+ case 'V':
+ fprintf(stderr, "%s\n", version);
+ break;
+ case 'p':
+ needStr = (char**)&prefix;
+ break;
+ case 'o':
+ needStr = &outFileName;
+ break;
+ case 'I':
+ internals = 1;
+ break;
+ case 'T':
+ simpleTables = 1;
+ break;
+ case '=':
#ifdef NOLEX
- fprintf(stderr, "'%s' was not compiled to support lexicographic ordering\n", argv[0]);
+ fprintf(stderr, "'%s' was not compiled to support lexicographic ordering\n", argv[0]);
#else
- lexical = 1;
+ lexical = 1;
#endif /* NOLEX */
- break;
- case 'O':
- needInt = &principleCost;
- break;
- case 'c':
- needInt = &prevent_divergence;
- break;
- case 'e':
- needInt = &exceptionTolerance;
- break;
- case 'd':
- diagnostics = 1;
- break;
- case 'S':
- speedflag = 1;
- break;
- case 't':
- trimflag = 1;
- break;
- case 'G':
- grammarflag = 1;
- break;
- default:
- fprintf(stderr, "Bad option (%s)\n", argv[i]);
- exit(1);
- }
- } else {
- if (inFileName) {
- fprintf(stderr, "Unexpected Filename (%s) after (%s)\n", argv[i], inFileName);
- exit(1);
- }
- inFileName = argv[i];
- }
- if (needInt || needStr) {
- char *v;
- char *opt = argv[i];
-
- if (argv[i][2]) {
- v = &argv[i][2];
- } else {
- v = argv[++i];
- if (!v) {
- fprintf(stderr, "Expection argument after %s\n", opt);
- exit(1);
- }
- }
- if (needInt) {
- *needInt = atoi(v);
- } else if (needStr) {
- *needStr = v;
- }
- }
- }
-
- if (inFileName) {
- if(freopen(inFileName, "r", stdin)==NULL) {
- fprintf(stderr, "Failed opening (%s)", inFileName);
- exit(1);
- }
- }
-
- if (outFileName) {
- if ((outfile = fopen(outFileName, "w")) == NULL) {
- fprintf(stderr, "Failed opening (%s)", outFileName);
- exit(1);
- }
- } else {
- outfile = stdout;
- }
-
-
- yyparse();
-
- if (!rules) {
- fprintf(stderr, "ERROR: No rules present\n");
- exit(1);
- }
-
- findChainRules();
- findAllPairs();
- doGrammarNts();
- build();
-
- debug(debugTables, foreachList((ListFn) dumpOperator_l, operators));
- debug(debugTables, printf("---final set of states ---\n"));
- debug(debugTables, dumpMapping(globalMap));
-
-
- startBurm();
- makeNts();
- if (simpleTables) {
- makeSimple();
- } else {
- makePlanks();
- }
-
- startOptional();
- makeLabel();
- makeKids();
-
- if (internals) {
- makeChild();
- makeOpLabel();
- makeStateLabel();
- }
- endOptional();
-
- makeOperatorVector();
- makeNonterminals();
- if (internals) {
- makeOperators();
- makeStringArray();
- makeRuleDescArray();
- makeCostArray();
- makeDeltaCostArray();
- makeStateStringArray();
- makeNonterminalArray();
- /*
- makeLHSmap();
- */
- }
- makeClosureArray();
-
- if (diagnostics) {
- reportDiagnostics();
- }
-
- yypurge();
- exit(0);
+ break;
+ case 'O':
+ needInt = &principleCost;
+ break;
+ case 'c':
+ needInt = &prevent_divergence;
+ break;
+ case 'e':
+ needInt = &exceptionTolerance;
+ break;
+ case 'd':
+ diagnostics = 1;
+ break;
+ case 'S':
+ speedflag = 1;
+ break;
+ case 't':
+ trimflag = 1;
+ break;
+ case 'G':
+ grammarflag = 1;
+ break;
+ default:
+ fprintf(stderr, "Bad option (%s)\n", argv[i]);
+ exit(1);
+ }
+ } else {
+ if (inFileName) {
+ fprintf(stderr, "Unexpected Filename (%s) after (%s)\n", argv[i], inFileName);
+ exit(1);
+ }
+ inFileName = argv[i];
+ }
+ if (needInt || needStr) {
+ char *v;
+ char *opt = argv[i];
+
+ if (argv[i][2]) {
+ v = &argv[i][2];
+ } else {
+ v = argv[++i];
+ if (!v) {
+ fprintf(stderr, "Expection argument after %s\n", opt);
+ exit(1);
+ }
+ }
+ if (needInt) {
+ *needInt = atoi(v);
+ } else if (needStr) {
+ *needStr = v;
+ }
+ }
+ }
+
+ if (inFileName) {
+ if(freopen(inFileName, "r", stdin)==NULL) {
+ fprintf(stderr, "Failed opening (%s)", inFileName);
+ exit(1);
+ }
+ }
+
+ if (outFileName) {
+ if ((outfile = fopen(outFileName, "w")) == NULL) {
+ fprintf(stderr, "Failed opening (%s)", outFileName);
+ exit(1);
+ }
+ } else {
+ outfile = stdout;
+ }
+
+
+ yyparse();
+
+ if (!rules) {
+ fprintf(stderr, "ERROR: No rules present\n");
+ exit(1);
+ }
+
+ findChainRules();
+ findAllPairs();
+ doGrammarNts();
+ build();
+
+ debug(debugTables, foreachList((ListFn) dumpOperator_l, operators));
+ debug(debugTables, printf("---final set of states ---\n"));
+ debug(debugTables, dumpMapping(globalMap));
+
+
+ startBurm();
+ makeNts();
+ if (simpleTables) {
+ makeSimple();
+ } else {
+ makePlanks();
+ }
+
+ startOptional();
+ makeLabel();
+ makeKids();
+
+ if (internals) {
+ makeChild();
+ makeOpLabel();
+ makeStateLabel();
+ }
+ endOptional();
+
+ makeOperatorVector();
+ makeNonterminals();
+ if (internals) {
+ makeOperators();
+ makeStringArray();
+ makeRuleDescArray();
+ makeCostArray();
+ makeDeltaCostArray();
+ makeStateStringArray();
+ makeNonterminalArray();
+ /*
+ makeLHSmap();
+ */
+ }
+ makeClosureArray();
+
+ if (diagnostics) {
+ reportDiagnostics();
+ }
+
+ yypurge();
+ exit(0);
}