Jason Lowe-Power has uploaded this change for review. ( https://gem5-review.googlesource.com/10561

Change subject: ruby: Revamp standalone SLICC script
......................................................................

ruby: Revamp standalone SLICC script

There was some bitrot in the standalone SLICC script (util/slicc and
src/mem/slicc/main.py). Fix the changes to the SLICC interface and also
add some better documentation.

Change-Id: I91c0ec78d5072fba83edf32b661ae67967af7822
Signed-off-by: Jason Lowe-Power <ja...@lowepower.com>
---
M src/mem/slicc/main.py
1 file changed, 23 insertions(+), 6 deletions(-)



diff --git a/src/mem/slicc/main.py b/src/mem/slicc/main.py
index 05a5cdb..89de38e 100644
--- a/src/mem/slicc/main.py
+++ b/src/mem/slicc/main.py
@@ -32,13 +32,19 @@

 from slicc.parser import SLICC

-usage="%prog [options] <files> ... "
+usage="%prog [options] <slicc file> ... "
 version="%prog v0.4"
 brief_copyright='''
 Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
 Copyright (c) 2009 The Hewlett-Packard Development Company
 All Rights Reserved.
 '''
+help_details = '''This is intended to be used to process slicc files as a
+standalone script. This script assumes that it is running in a directory under
+gem5/ (e.g., gem5/temp). It takes a single argument: The path to a *.slicc
+file. By default it generates the C++ code in the directory generated/. This +script can also generate the html SLICC output. See src/mem/slicc/main.py for
+more details.'''

 def nprint(format, *args):
     pass
@@ -53,6 +59,7 @@
     import optparse

     parser = optparse.OptionParser(usage=usage, version=version,
+                                   epilog=help_details,
                                    description=brief_copyright)
     parser.add_option("-d", "--debug", default=False, action="store_true",
                       help="Turn on PLY debugging")
@@ -60,7 +67,7 @@
                       help="Path where C++ code output code goes")
     parser.add_option("-H", "--html-path",
                       help="Path where html output goes")
-    parser.add_option("-F", "--print-files",
+    parser.add_option("-F", "--print-files", action='store_true',
                       help="Print files that SLICC will generate")
     parser.add_option("--tb", "--traceback", action='store_true',
                       help="print traceback on error")
@@ -72,12 +79,21 @@
         parser.print_help()
         sys.exit(2)

+    slicc_file = files[0]
+    if not slicc_file.endswith('.slicc'):
+ print("Must specify a .slicc file with a list of state machine files")
+        parser.print_help()
+        sys.exit(2)
+
     output = nprint if opts.quiet else eprint

     output("SLICC v0.4")
     output("Parsing...")

- slicc = SLICC(files[0], verbose=True, debug=opts.debug, traceback=opts.tb) + protocol_base = os.path.join(os.getcwd(), '..', 'src', 'mem', 'protocol') + slicc = SLICC(slicc_file, protocol_base, verbose=True, debug=opts.debug,
+                  traceback=opts.tb)
+

     if opts.print_files:
         for i in sorted(slicc.files()):
@@ -86,13 +102,14 @@
         output("Processing AST...")
         slicc.process()

-        output("Writing C++ files...")
-        slicc.writeCodeFiles(opts.code_path)
-
         if opts.html_path:
             output("Writing HTML files...")
             slicc.writeHTMLFiles(opts.html_path)

+        output("Writing C++ files...")
+        slicc.writeCodeFiles(opts.code_path, [])
+
+
     output("SLICC is Done.")

 if __name__ == "__main__":

--
To view, visit https://gem5-review.googlesource.com/10561
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I91c0ec78d5072fba83edf32b661ae67967af7822
Gerrit-Change-Number: 10561
Gerrit-PatchSet: 1
Gerrit-Owner: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to