aboutsummaryrefslogtreecommitdiff
path: root/build2/parser.cxx
AgeCommit message (Collapse)AuthorFilesLines
2017-02-13Implement target_set locking, including extension updateBoris Kolpackov1-1/+4
2017-02-13Redesign target_set interface in preparation for lockingBoris Kolpackov1-1/+1
2017-02-13Pass const scope& where modification should not happenBoris Kolpackov1-1/+1
2017-02-13Add load generation to global variable_map valuesBoris Kolpackov1-7/+11
2017-02-13Add notion of load phase generationBoris Kolpackov1-1/+1
2017-02-13Add model mutex, make var_pool const by defaultBoris Kolpackov1-9/+16
2017-01-23Go back to storing scope instead of target in prerequisiteBoris Kolpackov1-8/+10
Turns out this was semantically the right way to do it.
2017-01-23Implement automatic loading of directory buildfilesBoris Kolpackov1-43/+20
Now instead of explicitly writing: d = foo/ bar/ ./: $d include $d We can (usually) just write: ./: foo/ bar/
2017-01-20Remove prerequisite caching in scopeBoris Kolpackov1-45/+36
We don't share them often and those that are shared (e.g., cxx{} in obja/objs{}) are lightweight (SOO).
2017-01-19Get rid of extension_poolBoris Kolpackov1-7/+7
2017-01-19Get rid of project_name_poolBoris Kolpackov1-24/+29
With small string optimizations this is most likely a hindrance rather that an optimization.
2017-01-09Make use of operator<<(ostream, exception)Karen Arutyunov1-9/+9
2017-01-06Store platform targets as typed target_tripletBoris Kolpackov1-11/+12
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-12-17Add support for specifying individual paths of imported targetsBoris Kolpackov1-2/+1
The new config.import.* variable format is: config.import.<proj>.<name>[.<type>] For example: b config.import.build2.b=/opt/build2/bin/b b config.import.build2.b.exe=b-boot
2016-12-16Minor code cleanupBoris Kolpackov1-11/+19
2016-12-07Make use of butl::path::current(), butl::path::parent()Karen Arutyunov1-2/+2
2016-12-06Work around wrong static initialization order in VCBoris Kolpackov1-11/+13
2016-12-05Eliminate the use of '/...' paths on WindowsKaren Arutyunov1-22/+14
2016-12-05Use empty path for root scopeKaren Arutyunov1-6/+3
2016-12-05Adapt to semantics change of path::normalize()Karen Arutyunov1-1/+3
2016-12-05Use new convert() in if-else, assert parsingBoris Kolpackov1-27/+16
2016-12-05Add comma, ternary, logical operators support in eval contextBoris Kolpackov1-149/+340
2016-12-01Allow implicit (lexical) typed-to-typed conversionBoris Kolpackov1-22/+32
2016-11-30Add support for typed/untyped concatenated expansionBoris Kolpackov1-224/+438
2016-11-25Distinguish token quoting type and completenessBoris Kolpackov1-2/+5
2016-11-23Implement value type propagation on expansionBoris Kolpackov1-56/+76
Currently, we only propagate types of sole, unquoted expansions (variable, function call, or eval context), similar to NULL. To untypify the value, simply quote it.
2016-11-23Implement assert directiveBoris Kolpackov1-23/+70
The grammar is as follows: assert <expression> [<description>] assert! <expression> [<description>] The expression must evaluate to 'true' or 'false', just like in if-else.
2016-11-22Minor fixBoris Kolpackov1-7/+7
2016-11-22Use diagnostics facility from libbutlBoris Kolpackov1-2/+1
2016-11-18Add function machinery, implement path.normalize()Boris Kolpackov1-26/+20
Note that multi-argument functions are not yet "callable" since there is no support for value packs.
2016-11-18Make names and vector<name> different types, add typed value constructorBoris Kolpackov1-1/+1
2016-11-11Get rid of lexer modes overriding pair separatorsBoris Kolpackov1-8/+8
2016-11-04Handle explicit test scopesBoris Kolpackov1-1/+1
2016-11-04Handle pre-parsing of simple pairs in parse_names()Boris Kolpackov1-38/+51
2016-11-04Use special mode for attribute lexingBoris Kolpackov1-9/+3
2016-11-04Add support for ignoring separators inside namesBoris Kolpackov1-11/+19
2016-11-04When assigning always ignore existing value typeBoris Kolpackov1-20/+22
For example: x = [uint64] 1 x = a # Ok.
2016-11-04Minor cleanupBoris Kolpackov1-7/+7
2016-11-04Implement pre-parsing mode for subset of buildfile parsing functionsBoris Kolpackov1-190/+243
2016-11-04Various minor buildfile lexer/parser changesBoris Kolpackov1-18/+27
2016-11-04Keep track of lexer mode in parser replay mechanismBoris Kolpackov1-8/+11
2016-11-04Change token type 'name' to more general 'word'Boris Kolpackov1-21/+21
2016-11-04Add support for lexer name scanning customizationBoris Kolpackov1-2/+1
2016-11-04Use parse_* naming for parsing functionsBoris Kolpackov1-133/+133
2016-11-04Add variable lookup hook to parserBoris Kolpackov1-39/+48
2016-11-04Allow customizing names parsing diagnosticsBoris Kolpackov1-7/+11
2016-11-04Minor fixesBoris Kolpackov1-2/+2
2016-11-04Handle printing of extended tokensBoris Kolpackov1-7/+8
2016-11-04Various design/implementation cleanupsBoris Kolpackov1-38/+26