-
avocadocx workspace
- bin: "avocadocx"
-
abogado compiler
abogado-common
- things like the
specialize
macro and maybe error reporting stuff
- things like the
abogado-lex
- can come from a plain text file or a docx
- produces tokens with the metadata attached
abogado-parse
- goes from the tokens in
lex
to the ast inast
- goes from the tokens in
abogado-passes
- has a pass manager (you can add passes and they wrap, etc.; returns an impl PassPipeline)
- should have passes like:
- resolve deps
- finds the imports; grabs em if they're not already there
- not sure if this should be a pass
- cycles should be allowed
- finds the imports; grabs em if they're not already there
- chk namespaces (fonts)
- text files (i.e. std) should have no font (no namespace) and can be called from anywhere
- chk privacy (boxes)
- resolve deps
- abogado-codegen
- links against
runtime
; includes it in the binaries it makes - this is not wasm compatible
- links against
-
avocadocx-interpreter
- depends on
runtime
, just calls it - should take a
Writer
to write output into
- depends on
-
avocadocx-runtime
-
avocadocx-std
- just
include!("std.cado")
-> lex -> parse -> AST
- just
-
avocadocx-web
- main page (first):
- single text box for the google doc id
- support drag and drop for docx files like UTP does
- an xterm-js-sys terminal on the page; redirect errors + the output of the intepreter there
- don't bother with Elm or anything; just an html file that calls our function with the id of the input box and the id of the terminal
- and we'll do the rest in Rust
- extra page (later, never):
- ACE editor box (Elm) w/syntax highlighting
- an xterm-js-sys terminal
- a run button
- Elm drives the top level, etc.
- main page (first):
-
avocadocx
bin:run
command: takes a google doc ID or a file path (ending in docx or cado)- just calls the interpreter after producing the AST, error reporting, etc.
compile
command- later, maybe not at all
- also takes a google doc ID or a file path
- produces a binary using
codegen
fetch
command:- takes a google doc ID, outputs to a file
translate
command:- takes a google doc ID, converts to an AST, pretty prints
-
std:
input
- terminal input on desktop,
input
box on web
- terminal input on desktop,
print
,println
, etc.- terminal output on desktop, the integrated thing on the web
-
need to make the logo
- use it as the favicon
- use it as the crate logo for all the crates
- use it as the gh repo logo thing
-
(eventually or when bored) the usual CI things
- rip the gh publish flow with parcel and friends for the webpage (or do it in bazel)
- publish binaries on CI runs, etc.
- crates.io, whatever
-
ariadne
-
spans for the tokens when lexing docx files can be actually correct? like, page 1, line 4 (etc.)
- unsure if possible
-
syntax highlighting for
.cado
, the text form -
fix the email address on commits?
-
tests that take .docx inputs and check stderr, etc.
-
make a PR for
docx-rs
-
fix compilation on stable
-
superscript for exponentiation
- do we want to have a printable form for the extra attributes?
- I say no; we should have the pretty printer have some way of printing them but I think we don't expose them in
.cado
- i.e. we don't extend the grammar to have textual constructs for them
- I say no; we should have the pretty printer have some way of printing them but I think we don't expose them in