summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Richard W.M. Jones [Mon, 6 Jan 2020 20:51:39 +0000 (20:51 +0000)]
parser: Fix tracking of beginning of line for error messages.
Richard W.M. Jones [Mon, 6 Jan 2020 12:53:15 +0000 (12:53 +0000)]
Copy system environment into initial env, and also add %stdlib.
Richard W.M. Jones [Mon, 6 Jan 2020 09:51:15 +0000 (09:51 +0000)]
Allow functions "returning strings" (etc), redefine sort function.
Richard W.M. Jones [Sun, 5 Jan 2020 21:23:59 +0000 (21:23 +0000)]
Standardize running code in a single function, include prelude.sh.
Richard W.M. Jones [Sun, 5 Jan 2020 21:09:45 +0000 (21:09 +0000)]
Update TODO
Richard W.M. Jones [Sun, 5 Jan 2020 13:10:43 +0000 (13:10 +0000)]
Functions return expressions instead of only lists of strings.
Richard W.M. Jones [Sat, 4 Jan 2020 12:02:24 +0000 (12:02 +0000)]
build: Create dependencies for Goalfile itself.
Richard W.M. Jones [Sat, 4 Jan 2020 11:56:00 +0000 (11:56 +0000)]
stdlib: Implement sort function.
Richard W.M. Jones [Sat, 4 Jan 2020 11:48:22 +0000 (11:48 +0000)]
Update TODO.
Richard W.M. Jones [Sat, 4 Jan 2020 09:49:21 +0000 (09:49 +0000)]
build: Generate complete OCaml dependencies.
Because we didn't use -I src on the ocamldep command line, ocamldep
didn't generate the complete set of dependencies.
Richard W.M. Jones [Sat, 4 Jan 2020 09:41:52 +0000 (09:41 +0000)]
Ast: Standard location for ocamldoc comments.
Richard W.M. Jones [Fri, 3 Jan 2020 21:45:34 +0000 (21:45 +0000)]
stdlib: Implement wildcard function.
Richard W.M. Jones [Fri, 3 Jan 2020 21:33:48 +0000 (21:33 +0000)]
Implement functions.
Richard W.M. Jones [Fri, 3 Jan 2020 21:10:16 +0000 (21:10 +0000)]
Ast: Remove functions which were moved to Eval module.
Updates commit
f36210fd16a8e4e4d6ecdd8825bf8b8307943472.
Richard W.M. Jones [Fri, 3 Jan 2020 19:26:13 +0000 (19:26 +0000)]
build: Add depend goal and 'make depend'.
Richard W.M. Jones [Fri, 3 Jan 2020 19:24:24 +0000 (19:24 +0000)]
build: Don't always pass -d to goals.
We can enable debugging on a case-by-case basis when necessary.
Richard W.M. Jones [Fri, 3 Jan 2020 19:23:50 +0000 (19:23 +0000)]
build: Fix construction of parser.mli
Richard W.M. Jones [Fri, 3 Jan 2020 19:19:01 +0000 (19:19 +0000)]
build: Fix ocamldep invocation.
Richard W.M. Jones [Fri, 3 Jan 2020 19:18:48 +0000 (19:18 +0000)]
build: Fix 'goals clean' rule.
Richard W.M. Jones [Fri, 3 Jan 2020 19:07:11 +0000 (19:07 +0000)]
stdlib: Fix *file tactic.
Broken test if there is more than one dependency.
Richard W.M. Jones [Fri, 3 Jan 2020 19:07:07 +0000 (19:07 +0000)]
run: Fix whitespace.
Richard W.M. Jones [Fri, 3 Jan 2020 18:49:31 +0000 (18:49 +0000)]
run: Better debugging and error messages for goals and tactics.
Richard W.M. Jones [Fri, 3 Jan 2020 15:09:28 +0000 (15:09 +0000)]
run: If multiple goals match a tactic, at most one must have a CODE section.
This now works the same way as make.
Richard W.M. Jones [Fri, 3 Jan 2020 15:12:02 +0000 (15:12 +0000)]
Don't default to echoing tactic command.
Richard W.M. Jones [Fri, 3 Jan 2020 11:24:24 +0000 (11:24 +0000)]
Update TODO
Richard W.M. Jones [Fri, 3 Jan 2020 14:50:55 +0000 (14:50 +0000)]
In dependency file, use ; between statements.
So this parses correctly.
Richard W.M. Jones [Fri, 3 Jan 2020 14:48:54 +0000 (14:48 +0000)]
parser: Optional semicolon between statements.
Richard W.M. Jones [Fri, 3 Jan 2020 11:35:56 +0000 (11:35 +0000)]
Simplify Constructor -> Ctor.
Richard W.M. Jones [Fri, 3 Jan 2020 11:33:31 +0000 (11:33 +0000)]
Rename Eval -> Run, split out some Ast functions into new Eval.
This gives us more consistent nomenclature:
- "Run" for running targets.
- "Eval" for simplifying and evaluating expressions, etc.
- "Ast" is a library of AST-related structures.
Richard W.M. Jones [Fri, 3 Jan 2020 08:11:18 +0000 (08:11 +0000)]
eval: Don't check target was rebuilt if there is no code.
A pure dependency rule like:
"foo.o": "foo.c"
doesn't contain any code, so it doesn't make sense to check if the
target has been rebuilt.
Richard W.M. Jones [Mon, 30 Dec 2019 21:27:57 +0000 (21:27 +0000)]
Use goals itself exclusively to build.
Richard W.M. Jones [Fri, 3 Jan 2020 08:02:29 +0000 (08:02 +0000)]
eval: Goals with no targets always need a rebuild.
Richard W.M. Jones [Fri, 3 Jan 2020 07:54:11 +0000 (07:54 +0000)]
eval: If multiple goals match a tactic, run them all.
Richard W.M. Jones [Fri, 3 Jan 2020 07:44:21 +0000 (07:44 +0000)]
lexer: Fix parsing of { characters in CODE sections.
Richard W.M. Jones [Fri, 3 Jan 2020 07:44:00 +0000 (07:44 +0000)]
eval: Explicit function to evaluate goal arguments.
Richard W.M. Jones [Fri, 3 Jan 2020 07:28:10 +0000 (07:28 +0000)]
Revert "eval: Expand goal args before running the goal."
This reverts commit
8509cad9b10205b7bec23eb59ba63e88c3d0fcb3.
Richard W.M. Jones [Thu, 2 Jan 2020 16:11:39 +0000 (16:11 +0000)]
eval: Expand goal args before running the goal.
Richard W.M. Jones [Thu, 2 Jan 2020 16:00:56 +0000 (16:00 +0000)]
Lexer: Allow "-" char in the middle of identifier names.
This allows eg maintainer-clean to be a goal name.
Richard W.M. Jones [Thu, 2 Jan 2020 15:59:48 +0000 (15:59 +0000)]
Ast: Rename ECallTactic to ETacticConstructor.
This is a constructor, it's not 'calling' anything.
Richard W.M. Jones [Thu, 2 Jan 2020 15:57:48 +0000 (15:57 +0000)]
Ast: Change EGoal -> EGoalDefn, ETactic -> ETacticDefn.
Richard W.M. Jones [Mon, 30 Dec 2019 21:37:22 +0000 (21:37 +0000)]
Implement -include (optional include) command.
Richard W.M. Jones [Tue, 31 Dec 2019 09:08:35 +0000 (09:08 +0000)]
Fix ‘goal’ when it appears as a target (meaning ‘goal()’).
Richard W.M. Jones [Tue, 31 Dec 2019 09:01:17 +0000 (09:01 +0000)]
More TODO ideas.
Richard W.M. Jones [Tue, 31 Dec 2019 09:01:08 +0000 (09:01 +0000)]
Add some more debugging.
Richard W.M. Jones [Mon, 30 Dec 2019 21:51:40 +0000 (21:51 +0000)]
Implement -d (debug) option.
Richard W.M. Jones [Mon, 30 Dec 2019 21:41:17 +0000 (21:41 +0000)]
Change -V to -v for compat with make.
Richard W.M. Jones [Mon, 30 Dec 2019 21:27:20 +0000 (21:27 +0000)]
stdlib: Add some rules for OCaml code.
Richard W.M. Jones [Sat, 28 Dec 2019 18:43:25 +0000 (18:43 +0000)]
Implement stdlib directory, -I, --no-prelude, etc.
Richard W.M. Jones [Sat, 28 Dec 2019 19:54:50 +0000 (19:54 +0000)]
Define OCaml Config module in ./configure, ./run script, --version option.
Richard W.M. Jones [Sat, 28 Dec 2019 16:28:41 +0000 (16:28 +0000)]
Implement tactics.
Richard W.M. Jones [Sat, 28 Dec 2019 08:52:35 +0000 (08:52 +0000)]
Remove Ast.PVar.
Pure variables as patterns are disallowed. Patterns have a distinct
type from expressions so allowing an expression to be substituted
causes complications. In particular we want to know statically how
many targets a goal has, which is not possible if a variable can be
substituted here.
You can still write:
"%name": ...
Richard W.M. Jones [Sat, 28 Dec 2019 08:50:19 +0000 (08:50 +0000)]
Run code with set -e / set -x.
Richard W.M. Jones [Fri, 27 Dec 2019 20:26:43 +0000 (20:26 +0000)]
Actually run goal code.
Richard W.M. Jones [Fri, 27 Dec 2019 20:18:08 +0000 (20:18 +0000)]
Add implicit tactic rebuild.
We don't need to look for a goal covering every tactic, if the tactic
doesn't need rebuilding.
Richard W.M. Jones [Fri, 27 Dec 2019 19:47:16 +0000 (19:47 +0000)]
Substitute %<, %@ etc variables into code.
Richard W.M. Jones [Fri, 27 Dec 2019 19:56:19 +0000 (19:56 +0000)]
Add Ast.to_shell_script.
Previously we were confusing Ast.substitute with the place where we
need to shell quote.
Richard W.M. Jones [Fri, 27 Dec 2019 19:05:03 +0000 (19:05 +0000)]
Hard code *file tactic.
Richard W.M. Jones [Fri, 27 Dec 2019 14:45:00 +0000 (14:45 +0000)]
Implement tactic matching.
Richard W.M. Jones [Fri, 27 Dec 2019 13:37:55 +0000 (13:37 +0000)]
todo: Note default parameters.
Richard W.M. Jones [Thu, 26 Dec 2019 16:24:31 +0000 (16:24 +0000)]
Factor out param_decl and improvements to AST printing.
Richard W.M. Jones [Tue, 24 Dec 2019 18:10:57 +0000 (18:10 +0000)]
Refactor evaluation.
Also more work on pattern matching and when to rebuild.
Richard W.M. Jones [Wed, 25 Dec 2019 14:34:07 +0000 (14:34 +0000)]
Fix file() -> *file() in comment about tactics.
Updates commit
b14ff66c953e6a73e9ac2fe8d42dd68e92e58f53.
Richard W.M. Jones [Wed, 25 Dec 2019 14:30:38 +0000 (14:30 +0000)]
Rename Ast.StringMap -> Ast.Env
Richard W.M. Jones [Mon, 23 Dec 2019 20:44:01 +0000 (20:44 +0000)]
Begin converting Ast print functions so they can be used with format %a.
Richard W.M. Jones [Mon, 23 Dec 2019 20:43:08 +0000 (20:43 +0000)]
Send debug message to stderr.
Richard W.M. Jones [Mon, 23 Dec 2019 20:42:11 +0000 (20:42 +0000)]
Print errors (Failure exceptions) nicely.
Richard W.M. Jones [Mon, 23 Dec 2019 19:08:14 +0000 (19:08 +0000)]
Define *file() syntax for tactic constructors.
Alternative syntaxes considered where ~file and &file.
Richard W.M. Jones [Mon, 23 Dec 2019 18:00:51 +0000 (18:00 +0000)]
Attach parser location information to AST nodes.
Richard W.M. Jones [Mon, 23 Dec 2019 11:48:41 +0000 (11:48 +0000)]
Basic evaluation.
Richard W.M. Jones [Mon, 23 Dec 2019 11:53:09 +0000 (11:53 +0000)]
Implement -C / --directory option.
Richard W.M. Jones [Mon, 23 Dec 2019 08:05:24 +0000 (08:05 +0000)]
Add environment to store variables and goals.
Richard W.M. Jones [Sun, 22 Dec 2019 18:17:06 +0000 (18:17 +0000)]
Command line parsing of anon args.
Richard W.M. Jones [Sun, 22 Dec 2019 16:59:59 +0000 (16:59 +0000)]
Expose parsing of expressions from command line.
Richard W.M. Jones [Sat, 21 Dec 2019 20:46:46 +0000 (20:46 +0000)]
Continue command line parsing.
Richard W.M. Jones [Sat, 21 Dec 2019 17:01:52 +0000 (17:01 +0000)]
Rename parsing/ to src/
And some refactoring of the main code and command line parsing.
Richard W.M. Jones [Thu, 19 Dec 2019 12:18:25 +0000 (12:18 +0000)]
Initial commit of parser.