X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=inline;f=openbox%2Fparse.y;h=125f18038dc02bee22cf9d1f9929232e10421a14;hb=fb1696659672386bcfc0f753b67f9eeda74e93b9;hp=37bd3dc394eb91b2edbe1d1fb9be01356319e1cc;hpb=5da148530ee8931c8ed7771c373146afaf2b14e1;p=chaz%2Fopenbox diff --git a/openbox/parse.y b/openbox/parse.y index 37bd3dc3..125f1803 100644 --- a/openbox/parse.y +++ b/openbox/parse.y @@ -13,7 +13,7 @@ char *identifier; gboolean bool; char character; - GSList *list; + GList *list; } %{ @@ -31,6 +31,7 @@ static ParseToken t; /* in parse.c */ void parse_token(ParseToken *token); +void parse_assign(char *name, ParseToken *token); void parse_set_section(char *section); %} @@ -54,31 +55,32 @@ void parse_set_section(char *section); %% sections: - | sections '[' IDENTIFIER ']' { parse_set_section($3); } '\n' lines + | sections '[' IDENTIFIER ']' { parse_set_section($3); } '\n' + { ++yylineno; } lines ; lines: - | lines tokens '\n' { t.type = $3; t.data.character = $3; parse_token(&t); } + | lines tokens { t.type='\n'; t.data.character='\n'; parse_token(&t); } '\n' + { ++yylineno; } + | lines IDENTIFIER '=' listtoken { parse_assign($2, &t); } '\n' + { ++yylineno; } ; tokens: - tokens token - | token + tokens token { parse_token(&t); } + | token { parse_token(&t); } ; token: - REAL { t.type = TOKEN_REAL; t.data.real = $1; parse_token(&t); } - | INTEGER { t.type = TOKEN_INTEGER; t.data.integer = $1; - parse_token(&t); } - | STRING { t.type = TOKEN_STRING; t.data.string = $1; parse_token(&t); } - | IDENTIFIER { t.type = TOKEN_IDENTIFIER; t.data.identifier = $1; - parse_token(&t);} - | BOOL { t.type = TOKEN_BOOL; t.data.bool = $1; parse_token(&t); } - | list { t.type = TOKEN_LIST; t.data.list = $1; parse_token(&t); } - | '{' { t.type = $1; t.data.character = $1; parse_token(&t); } - | '}' { t.type = $1; t.data.character = $1; parse_token(&t); } - | '=' { t.type = $1; t.data.character = $1; parse_token(&t); } - | ',' { t.type = $1; t.data.character = $1; parse_token(&t); } + REAL { t.type = TOKEN_REAL; t.data.real = $1; } + | INTEGER { t.type = TOKEN_INTEGER; t.data.integer = $1; } + | STRING { t.type = TOKEN_STRING; t.data.string = $1; } + | IDENTIFIER { t.type = TOKEN_IDENTIFIER; t.data.identifier = $1; } + | BOOL { t.type = TOKEN_BOOL; t.data.bool = $1; } + | list { t.type = TOKEN_LIST; t.data.list = $1; } + | '{' { t.type = $1; t.data.character = $1; } + | '}' { t.type = $1; t.data.character = $1; } + | ',' { t.type = $1; t.data.character = $1; } ; list: @@ -89,12 +91,12 @@ listtokens: listtokens listtoken { ParseToken *nt = g_new(ParseToken, 1); nt->type = t.type; nt->data = t.data; - $$ = g_slist_append($1, nt); + $$ = g_list_append($1, nt); } - | token { ParseToken *nt = g_new(ParseToken, 1); + | listtoken { ParseToken *nt = g_new(ParseToken, 1); nt->type = t.type; nt->data = t.data; - $$ = g_slist_append(NULL, nt); + $$ = g_list_append(NULL, nt); } ; @@ -107,7 +109,6 @@ listtoken: | list { t.type = TOKEN_LIST; t.data.list = $1; } | '{' { t.type = $1; t.data.character = $1; } | '}' { t.type = $1; t.data.character = $1; } - | '=' { t.type = $1; t.data.character = $1; } | ',' { t.type = $1; t.data.character = $1; } ;