mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 08:24:39 +00:00
![Erik Ernst](/assets/img/avatar_default.png)
Change-Id: I3d9b133afd56f5b40bc38a4dab4eac73d5a2341a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195922 Commit-Queue: Erik Ernst <eernst@google.com> Reviewed-by: Alexander Thomas <athom@google.com>
45 lines
1.6 KiB
Python
Executable file
45 lines
1.6 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
#
|
|
# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
# This script runs the parser which is generated using ANTLR 4 from
|
|
# docs/language/Dart.g. It relies on a certain environment and is hence
|
|
# usable locally where this environment can be obtained, but it may not be
|
|
# possible to run it, e.g., on build bots. The requirements are as follows:
|
|
#
|
|
# - `make parser` in spec_parser has been executed successfully.
|
|
# - A suitable JVM is in the PATH and may be executed as 'java'.
|
|
# - the ANTLR3 jar is available as /usr/share/java/antlr4-runtime.jar.
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def Help(missing):
|
|
print('Execution of the spec parser failed. Missing: ' + missing)
|
|
print('Please read the comment near the top of spec_parse.py.\n')
|
|
sys.exit(1)
|
|
|
|
|
|
def Main():
|
|
args = sys.argv[1:]
|
|
tools_dir = os.path.dirname(os.path.realpath(__file__))
|
|
spec_parser_dir = os.path.join(tools_dir, 'spec_parser')
|
|
spec_parser_file = os.path.join(spec_parser_dir, 'SpecParser.class')
|
|
antlr_jar = '/usr/share/java/antlr4-runtime.jar'
|
|
class_path = ':'.join([spec_parser_dir, antlr_jar])
|
|
command = ['java', '-cp', class_path, 'SpecParser'] + args
|
|
|
|
if not os.path.exists(antlr_jar): Help(antlr_jar)
|
|
if not os.path.exists(spec_parser_file):
|
|
Help('"make parser" in spec_parser')
|
|
|
|
return subprocess.call(command)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(Main())
|