31a32
> import re
35a37,38
> from SCons.Scanner import Classic
>
56a60,63
> env['SLICC_PATH'] = str(protocol_dir)
> slicc_scanner = Classic("SliccScanner", ['.sm', '.slicc'], "SLICC_PATH",
> r'''include[ \t]["'](.*)["'];''')
> env.Append(SCANNERS=slicc_scanner)
58,64d64
< def slicc_scanner(node, env, path):
< contents = node.get_contents()
< files = [ line.strip() for line in contents.splitlines() if line ]
< return files
<
< env.Append(SCANNERS=Scanner(function=slicc_scanner,skeys=['.slicc']))
<
68,71c68,73
< slicc = SLICC(protocol, debug=True)
< print "SLICC parsing..."
< for name in slicc.load(files, verbose=True):
< print " %s" % name
---
> slicc = SLICC(protocol, verbose=False)
> slicc.load(files)
> slicc.process()
> slicc.writeCodeFiles(protocol_dir.abspath)
> if not env['NO_HTML']:
> slicc.writeHTMLFiles(html_dir.abspath)
73,95c75
< target.extend(sorted(slicc.files()))
< pdir = str(protocol_dir)
< hdir = str(html_dir)
<
< if not isdir(pdir):
< os.mkdir(pdir)
< if not isdir(hdir):
< os.mkdir(hdir)
<
< print "SLICC Generator pass 1..."
< slicc.findMachines()
<
< print "SLICC Generator pass 2..."
< slicc.generate()
<
< print "SLICC writing C++ files..."
< slicc.writeCodeFiles(pdir)
<
< if env['NO_HTML']:
< print "skipping HTML file creation"
< else:
< print "SLICC writing HTML files..."
< slicc.writeHTMLFiles(hdir)
---
> target.extend([protocol_dir.File(f) for f in sorted(slicc.files())])
100,101c80,86
< pdir = str(protocol_dir)
< hdir = str(html_dir)
---
> files = [s.srcnode().abspath for s in source[1:]]
> slicc = SLICC(protocol, verbose=True)
> slicc.load(files)
> slicc.process()
> slicc.writeCodeFiles(protocol_dir.abspath)
> if not env['NO_HTML']:
> slicc.writeHTMLFiles(html_dir.abspath)
103,106c88,89
< if not isdir(pdir):
< os.mkdir(pdir)
< if not isdir(hdir):
< os.mkdir(hdir)
---
> slicc_builder = Builder(action=MakeAction(slicc_action, Transform("SLICC")),
> emitter=slicc_emitter)
108,128d90
< slicc = SLICC(protocol, debug=True)
< files = [str(s) for s in source[1:]]
< slicc.load(files, verbose=False)
<
< print "SLICC Generator pass 1..."
< slicc.findMachines()
<
< print "SLICC Generator pass 2..."
< slicc.generate()
<
< print "SLICC writing C++ files..."
< slicc.writeCodeFiles(pdir)
<
< if env['NO_HTML']:
< print "skipping HTML file creation"
< else:
< print "SLICC writing HTML files..."
< slicc.writeHTMLFiles(hdir)
<
< slicc_builder = Builder(action=slicc_action, emitter=slicc_emitter)
<