grammar CssUnit;

import BasePrimitives;

length:
    number unitLength
    ;

length2
    : length WS length
    | length CS length
    ;

length4
    : length WS length WS length WS length
    | length CS length CS length CS length
    ;

lengths
    : length (WS length)+
    | length (CS length)+
    ;

angle:
    number unitAngle?
    ;

unitLength
    : CSS2_UNIT_PX
    | CSS2_UNIT_PT
    | CSS2_UNIT_CM
    | CSS2_UNIT_MM
    | CHAR_Q
    | CSS2_UNIT_IN
    | CSS2_UNIT_PC

    | CSS2_UNIT_EM
    | CSS2_UNIT_EX
    | CSS2_UNIT_CAP
    | CSS2_UNIT_CH
    | CSS2_UNIT_IC
    | CSS2_UNIT_LH

    | CSS2_UNIT_REM
    | CSS2_UNIT_REX
    | CSS2_UNIT_RCAP
    | CSS2_UNIT_RCH
    | CSS2_UNIT_RIC
    | CSS2_UNIT_RLH

    | CSS2_UNIT_VW
    | CSS2_UNIT_VH
    | CSS2_UNIT_VMAX
    | CSS2_UNIT_VMIN
    | CSS2_UNIT_VB
    | CSS2_UNIT_VI
    ;

unitAngle
    : CSS4_DEG
    | CSS4_GRAD
    | CSS4_RAD
    | CSS4_TURN
    ;

CSS2_UNIT_PX : 'px';
CSS2_UNIT_PT : 'pt';
CSS2_UNIT_CM : 'cm';
CSS2_UNIT_MM : 'mm';
//CSS2_UNIT_Q  : 'q';
CSS2_UNIT_IN : 'in';
CSS2_UNIT_PC : 'pc';

CSS2_UNIT_EM : 'em';
CSS2_UNIT_EX : 'ex';
CSS2_UNIT_CAP : 'cap';
CSS2_UNIT_CH : 'ch';
CSS2_UNIT_IC : 'ic';
CSS2_UNIT_LH : 'lh';

CSS2_UNIT_REM : 'rem';
CSS2_UNIT_REX : 'rex';
CSS2_UNIT_RCAP : 'rcap';
CSS2_UNIT_RCH : 'rch';
CSS2_UNIT_RIC : 'ric';
CSS2_UNIT_RLH : 'rlh';

CSS2_UNIT_VW : 'vw';
CSS2_UNIT_VH : 'vh';
CSS2_UNIT_VMAX : 'vmax';
CSS2_UNIT_VMIN : 'vmin';
CSS2_UNIT_VB : 'vb';
CSS2_UNIT_VI : 'vi';

CSS4_DEG :  'deg';
CSS4_GRAD : 'grad';
CSS4_RAD :  'rad';
CSS4_TURN : 'turn';