--- /dev/null
+{
+ module O = Options
+
+ let out s = if !O.debug_lexer then prerr_endline s
+}
+
+let OL = "(*"
+let CL = "*)"
+let UNI = ['\x80'-'\xBF']+
+let SPC = ['\r' '\n' '\t' ' ']+
+let QT = '"'
+
+rule token = parse
+ | OL { out "COM"; block lexbuf; token lexbuf }
+ | QT { out "STR"; O.count := !O.count + str lexbuf; token lexbuf }
+ | SPC { out "SPC"; incr O.count; token lexbuf }
+ | UNI { out "UNI"; token lexbuf }
+ | _ { out "CHR"; incr O.count; token lexbuf }
+ | eof { out "EOF" }
+and str = parse
+ | QT { 2 }
+ | "\\\"" { succ (str lexbuf) }
+ | UNI { str lexbuf }
+ | _ { succ (str lexbuf) }
+and block = parse
+ | CL { () }
+ | OL { block lexbuf; block lexbuf }
+ | QT { let _ = str lexbuf in block lexbuf }
+ | _ { block lexbuf }
--- /dev/null
+module A = Arg
+module P = Printf
+
+module O = Options
+module L = Lexer
+
+let help = "Usage: mac [ -LX ]* [ <file> ]*"
+let help_L = " Activate lexer debugging"
+let help_Q = " Read data from standard input"
+let help_V = " Show version information"
+let help_X = " Reset options and counters"
+
+let active = ref false
+
+let process_channel ich =
+ let lexbuf = Lexing.from_channel ich in
+ L.token lexbuf; active := true
+
+let output_version () =
+ P.printf "mac 0.1.0 M - November 2012\n"
+
+let process_stdin () =
+ process_channel stdin
+
+let process_file fname =
+ let ich = open_in fname in
+ process_channel ich; close_in ich
+
+let output_count () =
+ if !active then P.printf "%u\n" !O.count
+
+let main () =
+ A.parse [
+ "-L", A.Set O.debug_lexer, help_L;
+ "-Q", Arg.Unit process_stdin, help_Q;
+ "-V", Arg.Unit output_version, help_V;
+ "-X", A.Unit O.clear, help_X;
+ ] process_file help;
+ output_count ()
+
+let _ = main ()
XOA = xoa.native
DEP_DIR = ../../../components/binaries/matitadep
DEP = matitadep.native
+MAC_DIR = ../../../components/binaries/mac
+MAC = mac.native
-CONF = ground_2/xoa.conf.xml
-TARGETS = ground_2/xoa_natation.ma ground_2/xoa.ma
+XOA_CONF = ground_2/xoa.conf.xml
+XOA_TARGETS = ground_2/xoa_natation.ma ground_2/xoa.ma
ORIG = . ./orig.sh
xoa: $(TARGETS)
-$(TARGETS): $(CONF)
- @echo " EXEC $(XOA) $(CONF)"
- $(H)MATITA_RT_BASE_DIR=../.. $(XOA_DIR)/$(XOA) $(CONF)
+$(XOA_TARGETS): $(XOA_CONF)
+ @echo " EXEC $(XOA) $(XOA_CONF)"
+ $(H)MATITA_RT_BASE_DIR=../.. $(XOA_DIR)/$(XOA) $(XOA_CONF)
# orig #######################################################################
%.stats: MAS = $(shell find $* -name "*.ma")
-%.stats: CHARS = $(shell cat $(MAS) | wc -c)
+%.stats: CHARS = $(shell $(MAC_DIR)/$(MAC) $(MAS))
%.stats:
@printf '\x1B[1;40;37m'
- @printf '%-15s %-43s' 'Statistics for:' $*
+ @printf '%-15s %-40s' 'Statistics for:' $*
@printf '\x1B[0m\n'
@printf '\x1B[1;40;35m'
@printf '%-8s %6i' Chars $(CHARS)
- @printf ' %-8s %5i' Lines `cat $(MAS) | wc -l`
- @printf ' %-6s %3i' Pages `echo $$(($(CHARS) / 5120))`
- @printf ' %-11s' ''
+ @printf ' %-8s %3i' Pages `echo $$(($(CHARS) / 5120))`
+ @printf ' %-23s' ''
@printf '\x1B[0m\n'
@printf '\x1B[1;40;36m'
@printf '%-8s %6i' Sources `ls $(MAS) | wc -l`
- @printf ' %-41s' ''
+ @printf ' %-38s' ''
# @printf ' %-8s %5i' Objs `ls *.vo | wc -l`
# @printf ' %-6s %3i' Files `ls *.v | wc -l`
@printf '\x1B[0m\n'
@printf '\x1B[1;40;32m'
@printf '%-8s %6i' Theorems `grep "theorem " $(MAS) | wc -l`
- @printf ' %-8s %5i' Lemmas `grep "lemma " $(MAS) | wc -l`
- @printf ' %-6s %3i' Facts `grep "fact " $(MAS) | wc -l`
+ @printf ' %-8s %3i' Lemmas `grep "lemma " $(MAS) | wc -l`
+ @printf ' %-5s %3i' Facts `grep "fact " $(MAS) | wc -l`
@printf ' %-6s %4i' Proofs `grep qed $(MAS) | wc -l`
@printf '\x1B[0m\n'
@printf '\x1B[1;40;33m'
- @printf '%-8s %6i' Defs `grep "definition\|let rec\|inductive\|record" $(MAS) | wc -l`
- @printf ' %-41s' ''
+ @printf '%-8s %6i' Declared `grep "inductive \|record " $(MAS) | wc -l`
+ @printf ' %-8s %3i' Defined `grep "definition \|let rec " $(MAS) | wc -l`
+ @printf ' %-23s' ''
# @printf ' %-8s %5i' Local `grep "Local" *.v | wc -l`
@printf '\x1B[0m\n'
@printf '\x1B[1;40;31m'
@printf '%-8s %6i' Axioms `grep axiom $(MAS) | wc -l`
- @printf ' %-8s %5i' Comments `grep "(\*[^*:]*$$" $(MAS) | wc -l`
- @printf ' %-6s %3i' Marks `grep "(\*\*)" $(MAS) | wc -l`
+ @printf ' %-8s %3i' Comments `grep "(\*[^*:]*$$" $(MAS) | wc -l`
+ @printf ' %-5s %3i' Marks `grep "(\*\*)" $(MAS) | wc -l`
@printf ' %-11s' ''
@printf '\x1B[0m\n'
TBLS += $$(TBL_$(1))
$$(TBL_$(1)): V1 := $$(shell ls $$(MAS_$(1)) | wc -l)
- $$(TBL_$(1)): V2 := $$(shell cat $$(MAS_$(1)) | wc -c)
+ $$(TBL_$(1)): V2 := $$(shell $$(MAC_DIR)/$$(MAC) $$(MAS_$(1)))
$$(TBL_$(1)): C1 := $$(shell grep "inductive \|record " $$(MAS_$(1)) | wc -l)
$$(TBL_$(1)): C2 := $$(shell grep "definition \|let rec " $$(MAS_$(1)) | wc -l)
$$(TBL_$(1)): C3 := $$(shell grep "inductive \|record \|definition \|let rec " $$(MAS_$(1)) | wc -l)