mirror of
https://github.com/myhdl/myhdl.git
synced 2025-01-24 21:52:56 +08:00
64 lines
1.8 KiB
Plaintext
64 lines
1.8 KiB
Plaintext
|
#! /usr/bin/env python
|
||
|
# -*- Python -*-
|
||
|
|
||
|
import fileinput
|
||
|
import getopt
|
||
|
import glob
|
||
|
import os
|
||
|
import re
|
||
|
import sys
|
||
|
|
||
|
|
||
|
declare_rx = re.compile(
|
||
|
r"\\declaremodule(?:\[[a-zA-Z0-9]*\]*)?{[a-zA-Z_0-9]+}{([a-zA-Z_0-9]+)}")
|
||
|
|
||
|
module_rx = re.compile(r"\\module{([a-zA-Z_0-9]+)}")
|
||
|
|
||
|
def main():
|
||
|
try:
|
||
|
just_list = 0
|
||
|
print_lineno = 0
|
||
|
opts, args = getopt.getopt(sys.argv[1:], "ln", ["list", "number"])
|
||
|
for opt, arg in opts:
|
||
|
if opt in ("-l", "--list"):
|
||
|
just_list = 1
|
||
|
elif opt in ("-n", "--number"):
|
||
|
print_lineno = 1
|
||
|
files = args
|
||
|
if not files:
|
||
|
files = glob.glob("*.tex")
|
||
|
files.sort()
|
||
|
modulename = None
|
||
|
for line in fileinput.input(files):
|
||
|
if line[:9] == r"\section{":
|
||
|
modulename = None
|
||
|
continue
|
||
|
if line[:16] == r"\modulesynopsys{":
|
||
|
continue
|
||
|
m = declare_rx.match(line)
|
||
|
if m:
|
||
|
modulename = m.group(1)
|
||
|
continue
|
||
|
if not modulename:
|
||
|
continue
|
||
|
m = module_rx.search(line)
|
||
|
if m:
|
||
|
name = m.group(1)
|
||
|
if name != modulename:
|
||
|
filename = fileinput.filename()
|
||
|
if just_list:
|
||
|
print filename
|
||
|
fileinput.nextfile()
|
||
|
modulename = None
|
||
|
elif print_lineno:
|
||
|
print "%s(%d):%s" \
|
||
|
% (filename, fileinput.filelineno(), line[:-1])
|
||
|
else:
|
||
|
print "%s:%s" % (filename, line[:-1])
|
||
|
except KeyboardInterrupt:
|
||
|
sys.exit(1)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|