diff options
Diffstat (limited to 'xkbcomp/xkbparse.y')
-rw-r--r-- | xkbcomp/xkbparse.y | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/xkbcomp/xkbparse.y b/xkbcomp/xkbparse.y index d2b23b0e3..87dd07f20 100644 --- a/xkbcomp/xkbparse.y +++ b/xkbcomp/xkbparse.y @@ -145,7 +145,7 @@ unsigned int parseDebug; %type <str> KeyName MapName OptMapName KeySym %type <sval> FieldSpec Ident Element String %type <any> DeclList Decl -%type <expr> OptExprList ExprList Expr Term Lhs Terminal ArrayInit +%type <expr> OptExprList ExprList Expr Term Lhs Terminal ArrayInit KeySyms %type <expr> OptKeySymList KeySymList Action ActionList Coord CoordList %type <var> VarDecl VarDeclList SymbolsBody SymbolsVarDecl %type <vmod> VModDecl VModDefList VModDef @@ -721,8 +721,12 @@ OptKeySymList : KeySymList { $$= $1; } KeySymList : KeySymList COMMA KeySym { $$= AppendKeysymList($1,$3); } + | KeySymList COMMA KeySyms + { $$= AppendKeysymList($1,strdup("NoSymbol")); } | KeySym { $$= CreateKeysymList($1); } + | KeySyms + { $$= CreateKeysymList(strdup("NoSymbol")); } ; KeySym : IDENT { $$= strdup(scanBuf); } @@ -734,6 +738,10 @@ KeySym : IDENT { $$= strdup(scanBuf); } } ; +KeySyms : OBRACE KeySymList CBRACE + { $$= $2; } + ; + SignedNumber : MINUS Number { $$= -$2; } | Number { $$= $1; } ; |