summaryrefslogtreecommitdiffstats
path: root/lexer
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2019-01-29 17:56:45 +0100
committerDave Davenport <qball@gmpclient.org>2019-01-29 17:56:45 +0100
commit40da1b25e2e31ccb8c782b8bc73203a88d30d035 (patch)
treeaf03d04a57075ec7a99dc51a4b369d0dd7528b79 /lexer
parent964af7ad358ed948209858fc0621266df3bb611e (diff)
[Theme3.0] Change reference to use the CSS like var() syntax.
Supports defaults var(name, default); var(name); Where default can be another property. (https://www.w3schools.com/css/css3_variables.asp) This deprecates the @name syntax. Fixes: #876
Diffstat (limited to 'lexer')
-rw-r--r--lexer/theme-lexer.l130
-rw-r--r--lexer/theme-parser.y100
2 files changed, 129 insertions, 101 deletions
diff --git a/lexer/theme-lexer.l b/lexer/theme-lexer.l
index 385b28b8..d6a4c675 100644
--- a/lexer/theme-lexer.l
+++ b/lexer/theme-lexer.l
@@ -229,6 +229,8 @@ FORWARD_SLASH \/
LIST_OPEN \[
LIST_CLOSE \]
+VAR_START "var"
+
CPP_COMMENT "//"
C_COMMENT_OPEN "/*"
@@ -241,6 +243,8 @@ CONFIGURATION (?i:configuration)
%x INCLUDE
%x PROPERTIES
%x PROPERTIES_ENV
+%x PROPERTIES_VAR
+%x PROPERTIES_VAR_DEFAULT
%x PROPERTIES_LIST
%x NAMESTR
%x SECTION
@@ -419,30 +423,30 @@ if ( queue == NULL ){
/* After Namestr/Classstr we want to go to state str, then to { */
<INITIAL,SECTION>{WHITESPACE}+ ; // ignore all whitespace
-<PROPERTIES,PROPERTIES_ENV,PROPERTIES_LIST>{WHITESPACE}+ ; // ignore all whitespace
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT,PROPERTIES_LIST,PROPERTIES_VAR>{WHITESPACE}+ ; // ignore all whitespace
<SECTION>":" { g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) ); BEGIN(PROPERTIES); return T_PSEP; }
<PROPERTIES>";" { BEGIN(GPOINTER_TO_INT ( g_queue_pop_head ( queue ))); return T_PCLOSE;}
-<PROPERTIES,PROPERTIES_ENV>(true|false) { yylval->bval= g_strcmp0(yytext, "true") == 0; return T_BOOLEAN;}
-<PROPERTIES,PROPERTIES_ENV>{PNNUMBER}\.{NUMBER}+ { yylval->fval = g_ascii_strtod(yytext, NULL); return T_DOUBLE;}
-<PROPERTIES,PROPERTIES_ENV>{PNNUMBER} { yylval->ival = (int)g_ascii_strtoll(yytext, NULL, 10); return T_INT;}
-<PROPERTIES,PROPERTIES_ENV>{STRING} { yytext[yyleng-1] = '\0'; yylval->sval = g_strcompress(&yytext[1]); return T_STRING;}
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>(true|false) { yylval->bval= g_strcmp0(yytext, "true") == 0; return T_BOOLEAN;}
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{PNNUMBER}\.{NUMBER}+ { yylval->fval = g_ascii_strtod(yytext, NULL); return T_DOUBLE;}
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{PNNUMBER} { yylval->ival = (int)g_ascii_strtoll(yytext, NULL, 10); return T_INT;}
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{STRING} { yytext[yyleng-1] = '\0'; yylval->sval = g_strcompress(&yytext[1]); return T_STRING;}
-<PROPERTIES,PROPERTIES_ENV>@{WORD} {
- yylval->sval = g_strdup(yytext);
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>@{WORD} {
+ yylval->sval = g_strdup(yytext+1);
return T_LINK;
}
-<PROPERTIES,PROPERTIES_ENV>{EM} { return T_UNIT_EM; }
-<PROPERTIES,PROPERTIES_ENV>{CH} { return T_UNIT_CH; }
-<PROPERTIES,PROPERTIES_ENV>{PX} { return T_UNIT_PX; }
-<PROPERTIES,PROPERTIES_ENV>{PERCENT} { return T_PERCENT; }
-<PROPERTIES,PROPERTIES_ENV>{LS_SOLID} { return T_SOLID; }
-<PROPERTIES,PROPERTIES_ENV>{LS_DASH} { return T_DASH; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{EM} { return T_UNIT_EM; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{CH} { return T_UNIT_CH; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{PX} { return T_UNIT_PX; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{PERCENT} { return T_PERCENT; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{LS_SOLID} { return T_SOLID; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{LS_DASH} { return T_DASH; }
-<PROPERTIES,PROPERTIES_ENV>{INHERIT} { return T_INHERIT; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{INHERIT} { return T_INHERIT; }
-<PROPERTIES,PROPERTIES_ENV>{ENV} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ENV} {
yytext[yyleng-1] = '\0';
const char *val = g_getenv(yytext+2);
if ( val ) {
@@ -468,54 +472,74 @@ if ( queue == NULL ){
* Color parsing. It is easier to do this at lexer level.
* Other schemes are done at yacc level.
*/
-<PROPERTIES,PROPERTIES_ENV>#{HEX}{8} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>#{HEX}{8} {
yylval->colorval.red = rofi_theme_parse_convert_hex(yytext[1],yytext[2]);
yylval->colorval.green = rofi_theme_parse_convert_hex(yytext[3],yytext[4]);
yylval->colorval.blue = rofi_theme_parse_convert_hex(yytext[5],yytext[6]);
yylval->colorval.alpha = rofi_theme_parse_convert_hex(yytext[7],yytext[8]);
return T_COLOR;
}
-<PROPERTIES,PROPERTIES_ENV>#{HEX}{6} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>#{HEX}{6} {
yylval->colorval.alpha = 1.0;
yylval->colorval.red = rofi_theme_parse_convert_hex(yytext[1],yytext[2]);
yylval->colorval.green = rofi_theme_parse_convert_hex(yytext[3],yytext[4]);
yylval->colorval.blue = rofi_theme_parse_convert_hex(yytext[5],yytext[6]);
return T_COLOR;
}
-<PROPERTIES,PROPERTIES_ENV>#{HEX}{3} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>#{HEX}{3} {
yylval->colorval.alpha = 1.0;
yylval->colorval.red = rofi_theme_parse_convert_hex(yytext[1],yytext[1]);
yylval->colorval.green = rofi_theme_parse_convert_hex(yytext[2],yytext[2]);
yylval->colorval.blue = rofi_theme_parse_convert_hex(yytext[3],yytext[3]);
return T_COLOR;
}
-<PROPERTIES,PROPERTIES_ENV>#{HEX}{4} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>#{HEX}{4} {
yylval->colorval.alpha = rofi_theme_parse_convert_hex(yytext[4],yytext[4]);
yylval->colorval.red = rofi_theme_parse_convert_hex(yytext[1],yytext[1]);
yylval->colorval.green = rofi_theme_parse_convert_hex(yytext[2],yytext[2]);
yylval->colorval.blue = rofi_theme_parse_convert_hex(yytext[3],yytext[3]);
return T_COLOR;
}
-<PROPERTIES,PROPERTIES_ENV>argb:{HEX}{8} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>argb:{HEX}{8} {
yylval->colorval.alpha = rofi_theme_parse_convert_hex(yytext[5],yytext[6]);
yylval->colorval.red = rofi_theme_parse_convert_hex(yytext[7],yytext[8]);
yylval->colorval.green = rofi_theme_parse_convert_hex(yytext[9],yytext[10]);
yylval->colorval.blue = rofi_theme_parse_convert_hex(yytext[11],yytext[12]);
return T_COLOR;
}
-<PROPERTIES,PROPERTIES_ENV>argb:{HEX}{7} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>argb:{HEX}{7} {
return T_ERROR_ARGB_SPEC;
}
/* Color schemes */
-<PROPERTIES,PROPERTIES_ENV>{RGBA} { return T_COL_RGBA; }
-<PROPERTIES,PROPERTIES_ENV>{HSL} { return T_COL_HSL; }
-<PROPERTIES,PROPERTIES_ENV>{HWB} { return T_COL_HWB; }
-<PROPERTIES,PROPERTIES_ENV>{CMYK} { return T_COL_CMYK; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{RGBA} { return T_COL_RGBA; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{HSL} { return T_COL_HSL; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{HWB} { return T_COL_HWB; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{CMYK} { return T_COL_CMYK; }
/* Fluff */
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{VAR_START}{S_T_PARENT_LEFT} {
+ g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) );
+ BEGIN(PROPERTIES_VAR);
+ return T_VAR_START;
+}
+<PROPERTIES_VAR>{S_T_PARENT_RIGHT} {
+ BEGIN(GPOINTER_TO_INT(g_queue_pop_head ( queue )));
+ return T_VAR_CLOSE;
+}
+<PROPERTIES_VAR>{COMMA} {
+ g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) );
+ BEGIN(PROPERTIES_VAR_DEFAULT);
+ return T_COMMA;
+}
+<PROPERTIES_VAR_DEFAULT>{S_T_PARENT_RIGHT} {
+ // Pop 2.
+ g_queue_pop_head ( queue );
+ BEGIN(GPOINTER_TO_INT(g_queue_pop_head ( queue )));
+ return T_VAR_CLOSE;
+}
<PROPERTIES,PROPERTIES_ENV>{S_T_PARENT_LEFT} { return T_PARENT_LEFT; }
<PROPERTIES,PROPERTIES_ENV>{S_T_PARENT_RIGHT} { return T_PARENT_RIGHT; }
-<PROPERTIES,PROPERTIES_ENV,PROPERTIES_LIST>{COMMA} { return T_COMMA; }
-<PROPERTIES,PROPERTIES_ENV>{LIST_OPEN} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT,PROPERTIES_LIST>{COMMA} { return T_COMMA; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{LIST_OPEN} {
g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) );
BEGIN(PROPERTIES_LIST);
return T_LIST_OPEN;
@@ -524,33 +548,33 @@ if ( queue == NULL ){
BEGIN(GPOINTER_TO_INT(g_queue_pop_head ( queue )));
return T_LIST_CLOSE;
}
-<PROPERTIES,PROPERTIES_ENV>{FORWARD_SLASH} { return T_FORWARD_SLASH; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{FORWARD_SLASH} { return T_FORWARD_SLASH; }
/* Position */
-<PROPERTIES,PROPERTIES_ENV>{CENTER} { return T_POS_CENTER; }
-<PROPERTIES,PROPERTIES_ENV>{EAST} { return T_POS_EAST; }
-<PROPERTIES,PROPERTIES_ENV>{WEST} { return T_POS_WEST; }
-<PROPERTIES,PROPERTIES_ENV>{SOUTH} { return T_POS_SOUTH; }
-<PROPERTIES,PROPERTIES_ENV>{NORTH} { return T_POS_NORTH; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{CENTER} { return T_POS_CENTER; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{EAST} { return T_POS_EAST; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{WEST} { return T_POS_WEST; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{SOUTH} { return T_POS_SOUTH; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{NORTH} { return T_POS_NORTH; }
/* Highlight style */
-<PROPERTIES,PROPERTIES_ENV>{NONE} { return T_NONE; }
-<PROPERTIES,PROPERTIES_ENV>{BOLD} { return T_BOLD; }
-<PROPERTIES,PROPERTIES_ENV>{ITALIC} { return T_ITALIC; }
-<PROPERTIES,PROPERTIES_ENV>{UNDERLINE} { return T_UNDERLINE; }
-<PROPERTIES,PROPERTIES_ENV>{STRIKETHROUGH} { return T_STRIKETHROUGH; }
-<PROPERTIES,PROPERTIES_ENV>{SMALLCAPS} { return T_SMALLCAPS; }
-
-<PROPERTIES,PROPERTIES_ENV>{ANGLE_DEG} { return T_ANGLE_DEG; }
-<PROPERTIES,PROPERTIES_ENV>{ANGLE_RAD} { return T_ANGLE_RAD; }
-<PROPERTIES,PROPERTIES_ENV>{ANGLE_GRAD} { return T_ANGLE_GRAD; }
-<PROPERTIES,PROPERTIES_ENV>{ANGLE_TURN} { return T_ANGLE_TURN; }
-
-<PROPERTIES,PROPERTIES_ENV>{ORIENTATION_HORI} { return ORIENTATION_HORI; }
-<PROPERTIES,PROPERTIES_ENV>{ORIENTATION_VERT} { return ORIENTATION_VERT; }
-
-<PROPERTIES,PROPERTIES_ENV>{COLOR_TRANSPARENT} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{NONE} { return T_NONE; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{BOLD} { return T_BOLD; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ITALIC} { return T_ITALIC; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{UNDERLINE} { return T_UNDERLINE; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{STRIKETHROUGH} { return T_STRIKETHROUGH; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{SMALLCAPS} { return T_SMALLCAPS; }
+
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ANGLE_DEG} { return T_ANGLE_DEG; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ANGLE_RAD} { return T_ANGLE_RAD; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ANGLE_GRAD} { return T_ANGLE_GRAD; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ANGLE_TURN} { return T_ANGLE_TURN; }
+
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ORIENTATION_HORI} { return ORIENTATION_HORI; }
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{ORIENTATION_VERT} { return ORIENTATION_VERT; }
+
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{COLOR_TRANSPARENT} {
return T_COLOR_TRANSPARENT;
}
-<PROPERTIES,PROPERTIES_ENV>{COLOR_NAME} {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{COLOR_NAME} {
for ( unsigned int iter = 0; iter < num_CSSColors; iter++){
if ( strcasecmp(yytext, CSSColors[iter].name )== 0 ) {
yylval->colorval.alpha = 1.0;
@@ -563,7 +587,7 @@ if ( queue == NULL ){
REJECT;
}
-<INITIAL,PROPERTIES_ENV><<EOF>> {
+<INITIAL,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT><<EOF>> {
ParseObject *po = g_queue_pop_head ( file_queue );
if ( po ) {
if ( po->type == PT_FILE ){
@@ -610,7 +634,7 @@ if ( queue == NULL ){
<SECTION>. {
return T_ERROR_SECTION;
}
-<PROPERTIES_LIST>{WORD} {
+<PROPERTIES_LIST,PROPERTIES_VAR>{WORD} {
yylval->sval = g_strdup(yytext);
return T_ELEMENT;
}
@@ -620,7 +644,7 @@ if ( queue == NULL ){
return T_ELEMENT;
}
-<PROPERTIES,PROPERTIES_ENV,PROPERTIES_LIST>. {
+<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT,PROPERTIES_LIST>. {
return T_ERROR_PROPERTY;
}
<NAMESTR>. {
diff --git a/lexer/theme-parser.y b/lexer/theme-parser.y
index 0aa0d227..642d583c 100644
--- a/lexer/theme-parser.y
+++ b/lexer/theme-parser.y
@@ -199,6 +199,8 @@ static ThemeColor hwb_to_rgb ( double h, double w, double b)
%token T_COL_HWB "hwb colorscheme"
%token T_COL_CMYK "cmyk colorscheme"
+%token T_VAR_START "Variable"
+%token T_VAR_CLOSE "Variable close"
%token T_PARENT_LEFT "Parent left ('(')"
%token T_PARENT_RIGHT "Parent right (')')"
%token T_COMMA "comma separator (',')"
@@ -228,6 +230,7 @@ static ThemeColor hwb_to_rgb ( double h, double w, double b)
%type <list> t_entry_name_path
%type <list> t_entry_name_path_selectors
%type <property> t_property
+%type <property> t_property_element
%type <property_list> t_property_list
%type <property_list> t_property_list_optional
%type <colorval> t_property_color
@@ -361,85 +364,86 @@ t_property_list:
;
t_property
-: t_property_name T_PSEP T_INHERIT T_PCLOSE {
- $$ = rofi_theme_property_create ( P_INHERIT );
+: t_property_name T_PSEP t_property_element T_PCLOSE {
+ $$ = $3;
+ $$->name = $1;
+ }
+| t_property_name T_PSEP T_VAR_START T_ELEMENT T_VAR_CLOSE T_PCLOSE{
+ $$ = rofi_theme_property_create ( P_LINK );
$$->name = $1;
+ $$->value.link.name = $4;
}
-| t_property_name T_PSEP T_INT T_PCLOSE {
- $$ = rofi_theme_property_create ( P_INTEGER );
+| t_property_name T_PSEP T_VAR_START T_ELEMENT T_COMMA t_property_element T_VAR_CLOSE T_PCLOSE{
+ $$ = rofi_theme_property_create ( P_LINK );
$$->name = $1;
- $$->value.i = $3;
+ $$->value.link.name = $4;
+ $$->value.link.def_value = $6;
+ }
+
+t_property_element
+: T_INHERIT {
+ $$ = rofi_theme_property_create ( P_INHERIT );
+ }
+| T_INT {
+ $$ = rofi_theme_property_create ( P_INTEGER );
+ $$->value.i = $1;
}
-| t_property_name T_PSEP T_DOUBLE T_PCLOSE {
+| T_DOUBLE {
$$ = rofi_theme_property_create ( P_DOUBLE );
- $$->name = $1;
- $$->value.f = $3;
+ $$->value.f = $1;
}
-| t_property_name T_PSEP T_STRING T_PCLOSE {
+| T_STRING {
$$ = rofi_theme_property_create ( P_STRING );
- $$->name = $1;
- $$->value.s = $3;
+ $$->value.s = $1;
}
-| t_property_name T_PSEP T_LINK T_PCLOSE {
+| T_LINK {
$$ = rofi_theme_property_create ( P_LINK );
- $$->name = $1;
- $$->value.link.name = $3;
+ $$->value.link.name = $1;
}
-| t_property_name T_PSEP T_BOOLEAN T_PCLOSE {
+| T_BOOLEAN {
$$ = rofi_theme_property_create ( P_BOOLEAN );
- $$->name = $1;
- $$->value.b = $3;
+ $$->value.b = $1;
}
-| t_property_name T_PSEP t_property_distance T_PCLOSE {
+| t_property_distance {
$$ = rofi_theme_property_create ( P_PADDING );
- $$->name = $1;
- $$->value.padding = (RofiPadding){ $3, $3, $3, $3 };
+ $$->value.padding = (RofiPadding){ $1, $1, $1, $1 };
}
-| t_property_name T_PSEP t_property_distance_zero t_property_distance_zero T_PCLOSE {
+| t_property_distance_zero t_property_distance_zero {
$$ = rofi_theme_property_create ( P_PADDING );
- $$->name = $1;
- $$->value.padding = (RofiPadding){ $3, $4, $3, $4 };
+ $$->value.padding = (RofiPadding){ $1, $2, $1, $2 };
}
-| t_property_name T_PSEP t_property_distance_zero t_property_distance_zero t_property_distance_zero T_PCLOSE {
+| t_property_distance_zero t_property_distance_zero t_property_distance_zero {
$$ = rofi_theme_property_create ( P_PADDING );
- $$->name = $1;
- $$->value.padding = (RofiPadding){ $3, $4, $5, $4 };
+ $$->value.padding = (RofiPadding){ $1, $2, $3, $2 };
}
-| t_property_name T_PSEP t_property_distance_zero t_property_distance_zero t_property_distance_zero t_property_distance_zero T_PCLOSE {
+| t_property_distance_zero t_property_distance_zero t_property_distance_zero t_property_distance_zero {
$$ = rofi_theme_property_create ( P_PADDING );
- $$->name = $1;
- $$->value.padding = (RofiPadding){ $3, $4, $5, $6 };
+ $$->value.padding = (RofiPadding){ $1, $2, $3, $4 };
}
-| t_property_name T_PSEP t_property_position T_PCLOSE{
+| t_property_position {
$$ = rofi_theme_property_create ( P_POSITION );
- $$->name = $1;
- $$->value.i = $3;
+ $$->value.i = $1;
}
-| t_property_name T_PSEP t_property_highlight_styles t_property_color T_PCLOSE {
+| t_property_highlight_styles t_property_color {
$$ = rofi_theme_property_create ( P_HIGHLIGHT );
- $$->name = $1;
- $$->value.highlight.style = $3|ROFI_HL_COLOR;
- $$->value.highlight.color = $4;
+ $$->value.highlight.style = $1|ROFI_HL_COLOR;
+ $$->value.highlight.color = $2;
}
-| t_property_name T_PSEP t_property_highlight_styles T_PCLOSE {
+| t_property_highlight_styles {
$$ = rofi_theme_property_create ( P_HIGHLIGHT );
- $$->name = $1;
- $$->value.highlight.style = $3;
+ $$->value.highlight.style = $1;
}
-| t_property_name T_PSEP t_property_color T_PCLOSE {
+| t_property_color {
$$ = rofi_theme_property_create ( P_COLOR );
- $$->name = $1;
- $$->value.color = $3;
+ $$->value.color = $1;
}
-| t_property_name T_PSEP T_LIST_OPEN t_property_element_list_optional T_LIST_CLOSE T_PCLOSE {
+| T_LIST_OPEN t_property_element_list_optional T_LIST_CLOSE {
$$ = rofi_theme_property_create ( P_LIST );
- $$->name = $1;
- $$->value.list = $4;
+ $$->value.list = $2;
}
-| t_property_name T_PSEP t_property_orientation T_PCLOSE {
+| t_property_orientation {
$$ = rofi_theme_property_create ( P_ORIENTATION );
- $$->name = $1;
- $$->value.i = $3;
+ $$->value.i = $1;
}
;