This repository has been archived by the owner on Jan 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
manipulate a php codebase using haskell to transform the abstract-syntax-tree
License
facebookarchive/lex-pass
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Archived Repo ------------- This is an archived project and is no longer supported or updated by Facebook. Please do not file issues or pull-requests against this repo. If you wish to continue to develop this code yourself, we recommend you fork it. ------------- Mailing list at: http://groups.google.com/group/lex-pass lex-pass allows you to automate changes to a php codebase, by writing abstract-syntax-tree transformers in haskell. haskell is good because it is well-suited for language manipulation and because it has good parsing libraries that enable us to work with a nice abstract-syntax-tree. to install - ./install depends on - futil (git://github.com/facebook/futil.git) to use - run `lex-pass` to see options - to see an example run, run `lex-pass example-global` with a codebase in ~/www that uses some globals (e.g. "global $a;") - note a large codebase could takes tens of minutes the first run because no ast's are cached yet - you can ^C it early after it does 'Saving' on a few files to see how the changes work - to write a new transformer - see src/Transf/ for examples - src/do-codegen (which is run by ./install) automatically detects new transformers in src/Transf/ - if you are using git you may want to use a separate repo instead of just a branch in an existing repo. files have mtime updated by branch-switching, so there will be some unnecessary re-parsing. notes for those hacking on lex-pass itself - todo - php: b'' type string literals - maintain cached asts for codebase somewhere so ppl don't have to wait on their first lex-pass run? - better error on one-arg transf's if args wrong? - better way to specify args in transf doc? - make showing full transf list an option instead of default help? - we might actually get better perf with our own lexer, or at least not restarting php over and over again to do lexing. but not worth looking into any time soon? - resolve xWs/xWS, xAst/xAST variable-capitalization indecision - future langs - css - easy and relevant, but maybe a css-preprocessor is better to use - js - relevant - bash (we should probably just stop using..), c, python
About
manipulate a php codebase using haskell to transform the abstract-syntax-tree
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published