%% %% Integers are named DNumber. Floats are named LNumber. %% Automatic conversion from Int to float when the Integer is to %% big should happen on application detail. %% %% @author Eric Bouwers module languages/php/common/literals/NumberLiterals exports sorts LNumber DNumber Deci Octa Hexa lexical syntax %%An integer can either be decimal, hexidecimal or octal [1-9][0-9]* -> Deci [0] -> Deci [0][xX][0-9a-fA-F]+ -> Hexa %%Should actually be: %%[0][0-7]+ -> Octa %%But that is the definition of interpertation, 8 and 9 should %%be parseable [0][0-9]+ -> Octa [0-9]*[\.][0-9]+ -> DNumber {prefer} [0-9]+[\.][0-9]* -> DNumber ([0-9]+ | DNumber)[eE][\+\-]?[0-9]+ -> DNumber [0-9]+ -> DNumber {reject} lexical restrictions Deci -/- [0-9\.] Hexa -/- [0-9a-fA-F] Octa -/- [0-9] DNumber -/- [0-9] context-free syntax Deci -> LNumber{cons("Deci")} Hexa -> LNumber{cons("Hexa")} Octa -> LNumber{cons("Octa")}