summaryrefslogtreecommitdiffstats
path: root/src/lexer.h
Commit message (Collapse)AuthorAgeFilesLines
* Add validation nodes to ninjaColin Cross2021-10-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A common problem in the Android build is inserting rules that perform some sort of error checking that doesn't produce any artifacts needed by the build, for example static analysis tools. There are a few patterns currently used, both of which have downsides. The first is to have a rule that depends on all of the static analysis results. This ensures they run, but requires running static analysis over everything, and not just the active parts of the build graph. The second is to insert the static analysis rule into the build graph between the artifact producing rule and anything that depends on it, often copying the artifact as the output of the static analysis rule. This increases the critical path of the build, often reducing parallelism. In the case of copying the artifact, it also wastes disk space. This patch adds "validation nodes" to edges in Ninja. A build statement can specify validation nodes using "|@" in the edge inputs. The validation nodes are not used as an input to the edge (the edge can run before the validation node is ready), but are added to the initial nodes of the build graph whenever the edge is part of the build graph. The edge that outputs the validation node can depend on the output of the edge that is being validated if desired. Test: ninja_test Change-Id: Ife27086c50c1b257a26509373199664680b2b247
* Remove 'using namespace std' from header files, properly namespace all std ↵Michael Jones2020-09-301-6/+6
| | | | symbols
* block parse method doneRobert Iannucci2012-11-101-0/+1
|
* reject tabs (and CRs) in input files more aggressivelyEvan Martin2012-08-021-2/+5
|
* Header guards were missing from some header files.Jonathan Sternberg2012-05-301-0/+4
|
* parse $:Peter Kuemmel2012-01-291-0/+4
| | | | | '$:' is a valid string now, it expands to ':' update error messages and show a hint when something went wrong.
* windows: more build fixesScott Graham2012-01-041-0/+5
|
* switch the core ninja parser to use re2c for the lexerEvan Martin2011-12-291-0/+88
- Delete the old "Tokenizer" code. - Write separate tests for the lexer distinct from the parser. - Switch the parser to use the new code. - New lexer error output has file:line numbers so e.g. Emacs can jump your editor to the syntax error. - The EvalEnv ($-interpolation) code is now part of the lexer as well.