MCPcopy Create free account
hub / github.com/boostorg/build / parse_variable

Function parse_variable

v2/engine/function.c:1995–2100  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1993 */
1994
1995static VAR_PARSE * parse_variable( char const * * string )
1996{
1997 VAR_PARSE_VAR * const result = var_parse_var_new();
1998 VAR_PARSE_GROUP * const name = result->name;
1999 char const * s = *string;
2000 for ( ; ; )
2001 {
2002 if ( try_parse_variable( &s, string, name ) ) {}
2003 else if ( s[ 0 ] == ':' )
2004 {
2005 VAR_PARSE_GROUP * mod;
2006 var_parse_group_maybe_add_constant( name, *string, s );
2007 ++s;
2008 *string = s;
2009 mod = var_parse_var_new_modifier( result );
2010 for ( ; ; )
2011 {
2012 if ( try_parse_variable( &s, string, mod ) ) {}
2013 else if ( s[ 0 ] == ')' )
2014 {
2015 var_parse_group_maybe_add_constant( mod, *string, s );
2016 *string = ++s;
2017 return (VAR_PARSE *)result;
2018 }
2019 else if ( s[ 0 ] == '(' )
2020 {
2021 ++s;
2022 balance_parentheses( &s, string, mod );
2023 }
2024 else if ( s[ 0 ] == ':' )
2025 {
2026 var_parse_group_maybe_add_constant( mod, *string, s );
2027 *string = ++s;
2028 mod = var_parse_var_new_modifier( result );
2029 }
2030 else if ( s[ 0 ] == '[' )
2031 {
2032 parse_error("unexpected subscript");
2033 ++s;
2034 }
2035 else if ( s[ 0 ] == '\0' )
2036 {
2037 parse_error( "unbalanced parentheses" );
2038 var_parse_group_maybe_add_constant( mod, *string, s );
2039 *string = s;
2040 return (VAR_PARSE *)result;
2041 }
2042 else
2043 ++s;
2044 }
2045 }
2046 else if ( s[ 0 ] == '[' )
2047 {
2048 VAR_PARSE_GROUP * subscript = var_parse_group_new();
2049 result->subscript = subscript;
2050 var_parse_group_maybe_add_constant( name, *string, s );
2051 *string = ++s;
2052 for ( ; ; )

Callers 1

try_parse_variableFunction · 0.85

Calls 7

var_parse_var_newFunction · 0.85
try_parse_variableFunction · 0.85
balance_parenthesesFunction · 0.85
parse_errorFunction · 0.85
var_parse_group_newFunction · 0.85

Tested by

no test coverage detected