Message file to generate source for.
--output-dir
Destination directory for generated files.
[--file-prefix ] Name prefix for generated files. Default: "struct_".
EOD;
}
$name = "";
$input_file = "";
$output_dir = "";
for ($i = 1; $i < $argc;) {
$arg = $argv[$i++];
switch ($arg) {
case "--name":
$name = $argv[$i++];
break;
case "--input-file":
$input_file = $argv[$i++];
break;
case "--output-dir":
$output_dir = $argv[$i++];
break;
case "--help":
print_help($argv[0]);
exit(0);
default:
fatal_error("Unknown option: {$arg}");
}
}
if ($name == "") {
fatal_error("--name missing");
}
if ($input_file == "") {
fatal_error("--input-file missing");
}
if ($output_dir == "") {
fatal_error("--output-dir missing");
}
if (($data = file_get_contents($input_file)) === FALSE) {
fatal_error("Failed to read input file");
}
if (!tokenize($data, $tokens)) {
fatal_error("Failed to tokenize");
}
$parser = new parse_engine(new StructParser());
try {
foreach ($tokens as $token) {
$parser->eat($token[0], $token[1]);
}
$parser->eat_eof();
} catch (parse_error $e) {
fatal_error("$input_file: Parse error: ".$e->getMessage());
}
$data = generate_header($name, $parser->semantic["directives"], $parser->semantic["structures"]);
if (file_put_contents("{$output_dir}/{$name}.h", $data) === NULL) {
fatal_error("{$input_file}: Failed to write .h file");
}