grammar CssUnit;

import BaseNumbers;

length:
    number unit
    ;

unit
    : unitAbs
    | unitRel
    ;

unitAbs
    : CSS2_UNIT_PX
    | CSS2_UNIT_PT
    | CSS2_UNIT_CM
    | CSS2_UNIT_MM
    | CSS2_UNIT_Q
    | CSS2_UNIT_IN
    | CSS2_UNIT_PC
    ;

unitRel
    : 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_VB
    | CSS2_UNIT_VI
    ;

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_VB : 'vb';
CSS2_UNIT_VI : 'vi';

