OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 App
le Inc. All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 App
le Inc. All rights reserved. |
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
6 * Copyright (C) 2012 Intel Corporation. All rights reserved. | 6 * Copyright (C) 2012 Intel Corporation. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 1652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1663 valid_expr: | 1663 valid_expr: |
1664 term { | 1664 term { |
1665 $$ = parser->createFloatingValueList(); | 1665 $$ = parser->createFloatingValueList(); |
1666 $$->addValue(parser->sinkFloatingValue($1)); | 1666 $$->addValue(parser->sinkFloatingValue($1)); |
1667 } | 1667 } |
1668 | valid_expr operator term { | 1668 | valid_expr operator term { |
1669 $$ = $1; | 1669 $$ = $1; |
1670 if ($$) { | 1670 if ($$) { |
1671 if ($2) { | 1671 if ($2) { |
1672 CSSParserValue v; | 1672 CSSParserValue v; |
1673 v.id = 0; | 1673 v.id = CSSValueInvalid; |
1674 v.unit = CSSParserValue::Operator; | 1674 v.unit = CSSParserValue::Operator; |
1675 v.iValue = $2; | 1675 v.iValue = $2; |
1676 $$->addValue(v); | 1676 $$->addValue(v); |
1677 } | 1677 } |
1678 $$->addValue(parser->sinkFloatingValue($3)); | 1678 $$->addValue(parser->sinkFloatingValue($3)); |
1679 } | 1679 } |
1680 } | 1680 } |
1681 ; | 1681 ; |
1682 | 1682 |
1683 expr_recovery: | 1683 expr_recovery: |
(...skipping 10 matching lines...) Expand all Loading... |
1694 $$ = ','; | 1694 $$ = ','; |
1695 } | 1695 } |
1696 | /* empty */ { | 1696 | /* empty */ { |
1697 $$ = 0; | 1697 $$ = 0; |
1698 } | 1698 } |
1699 ; | 1699 ; |
1700 | 1700 |
1701 term: | 1701 term: |
1702 unary_term maybe_space { $$ = $1; } | 1702 unary_term maybe_space { $$ = $1; } |
1703 | unary_operator unary_term maybe_space { $$ = $2; $$.fValue *= $1; } | 1703 | unary_operator unary_term maybe_space { $$ = $2; $$.fValue *= $1; } |
1704 | STRING maybe_space { $$.id = 0; $$.string = $1; $$.unit = CSSPrimitiveValue:
:CSS_STRING; } | 1704 | STRING maybe_space { $$.id = CSSValueInvalid; $$.string = $1; $$.unit = CSSP
rimitiveValue::CSS_STRING; } |
1705 | IDENT maybe_space { | 1705 | IDENT maybe_space { |
1706 $$.id = cssValueKeywordID($1); | 1706 $$.id = cssValueKeywordID($1); |
1707 $$.unit = CSSPrimitiveValue::CSS_IDENT; | 1707 $$.unit = CSSPrimitiveValue::CSS_IDENT; |
1708 $$.string = $1; | 1708 $$.string = $1; |
1709 } | 1709 } |
1710 /* We might need to actually parse the number from a dimension, but we can't j
ust put something that uses $$.string into unary_term. */ | 1710 /* We might need to actually parse the number from a dimension, but we can't j
ust put something that uses $$.string into unary_term. */ |
1711 | DIMEN maybe_space { $$.id = 0; $$.string = $1; $$.unit = CSSPrimitiveValue::
CSS_DIMENSION; } | 1711 | DIMEN maybe_space { $$.id = CSSValueInvalid; $$.string = $1; $$.unit = CSSPr
imitiveValue::CSS_DIMENSION; } |
1712 | unary_operator DIMEN maybe_space { $$.id = 0; $$.string = $2; $$.unit = CSSP
rimitiveValue::CSS_DIMENSION; } | 1712 | unary_operator DIMEN maybe_space { $$.id = CSSValueInvalid; $$.string = $2;
$$.unit = CSSPrimitiveValue::CSS_DIMENSION; } |
1713 | URI maybe_space { $$.id = 0; $$.string = $1; $$.unit = CSSPrimitiveValue::CS
S_URI; } | 1713 | URI maybe_space { $$.id = CSSValueInvalid; $$.string = $1; $$.unit = CSSPrim
itiveValue::CSS_URI; } |
1714 | UNICODERANGE maybe_space { $$.id = 0; $$.string = $1; $$.unit = CSSPrimitive
Value::CSS_UNICODE_RANGE; } | 1714 | UNICODERANGE maybe_space { $$.id = CSSValueInvalid; $$.string = $1; $$.unit
= CSSPrimitiveValue::CSS_UNICODE_RANGE; } |
1715 | HEX maybe_space { $$.id = 0; $$.string = $1; $$.unit = CSSPrimitiveValue::CS
S_PARSER_HEXCOLOR; } | 1715 | HEX maybe_space { $$.id = CSSValueInvalid; $$.string = $1; $$.unit = CSSPrim
itiveValue::CSS_PARSER_HEXCOLOR; } |
1716 | '#' maybe_space { $$.id = 0; $$.string = CSSParserString(); $$.unit = CSSPri
mitiveValue::CSS_PARSER_HEXCOLOR; } /* Handle error case: "color: #;" */ | 1716 | '#' maybe_space { $$.id = CSSValueInvalid; $$.string = CSSParserString(); $$
.unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; } /* Handle error case: "color:
#;" */ |
1717 | VARFUNCTION maybe_space IDENT closing_parenthesis maybe_space { | 1717 | VARFUNCTION maybe_space IDENT closing_parenthesis maybe_space { |
1718 $$.id = 0; | 1718 $$.id = CSSValueInvalid; |
1719 $$.string = $3; | 1719 $$.string = $3; |
1720 $$.unit = CSSPrimitiveValue::CSS_VARIABLE_NAME; | 1720 $$.unit = CSSPrimitiveValue::CSS_VARIABLE_NAME; |
1721 } | 1721 } |
1722 /* FIXME: according to the specs a function can have a unary_operator in front
. I know no case where this makes sense */ | 1722 /* FIXME: according to the specs a function can have a unary_operator in front
. I know no case where this makes sense */ |
1723 | function maybe_space { | 1723 | function maybe_space { |
1724 $$ = $1; | 1724 $$ = $1; |
1725 } | 1725 } |
1726 | calc_function maybe_space { | 1726 | calc_function maybe_space { |
1727 $$ = $1; | 1727 $$ = $1; |
1728 } | 1728 } |
1729 | min_or_max_function maybe_space { | 1729 | min_or_max_function maybe_space { |
1730 $$ = $1; | 1730 $$ = $1; |
1731 } | 1731 } |
1732 | '%' maybe_space { /* Handle width: %; */ | 1732 | '%' maybe_space { /* Handle width: %; */ |
1733 $$.id = 0; $$.unit = 0; | 1733 $$.id = CSSValueInvalid; $$.unit = 0; |
1734 } | 1734 } |
1735 ; | 1735 ; |
1736 | 1736 |
1737 unary_term: | 1737 unary_term: |
1738 INTEGER { $$.setFromNumber($1); $$.isInt = true; } | 1738 INTEGER { $$.setFromNumber($1); $$.isInt = true; } |
1739 | FLOATTOKEN { $$.setFromNumber($1); } | 1739 | FLOATTOKEN { $$.setFromNumber($1); } |
1740 | PERCENTAGE { $$.setFromNumber($1, CSSPrimitiveValue::CSS_PERCENTAGE); } | 1740 | PERCENTAGE { $$.setFromNumber($1, CSSPrimitiveValue::CSS_PERCENTAGE); } |
1741 | PXS { $$.setFromNumber($1, CSSPrimitiveValue::CSS_PX); } | 1741 | PXS { $$.setFromNumber($1, CSSPrimitiveValue::CSS_PX); } |
1742 | CMS { $$.setFromNumber($1, CSSPrimitiveValue::CSS_CM); } | 1742 | CMS { $$.setFromNumber($1, CSSPrimitiveValue::CSS_CM); } |
1743 | MMS { $$.setFromNumber($1, CSSPrimitiveValue::CSS_MM); } | 1743 | MMS { $$.setFromNumber($1, CSSPrimitiveValue::CSS_MM); } |
(...skipping 26 matching lines...) Expand all Loading... |
1770 | DPCM { $$.setFromNumber($1, CSSPrimitiveValue::CSS_DPCM); } | 1770 | DPCM { $$.setFromNumber($1, CSSPrimitiveValue::CSS_DPCM); } |
1771 | FR { $$.setFromNumber($1, CSSPrimitiveValue::CSS_FR); } | 1771 | FR { $$.setFromNumber($1, CSSPrimitiveValue::CSS_FR); } |
1772 ; | 1772 ; |
1773 | 1773 |
1774 function: | 1774 function: |
1775 FUNCTION maybe_space expr closing_parenthesis { | 1775 FUNCTION maybe_space expr closing_parenthesis { |
1776 if ($3) { | 1776 if ($3) { |
1777 CSSParserFunction* f = parser->createFloatingFunction(); | 1777 CSSParserFunction* f = parser->createFloatingFunction(); |
1778 f->name = $1; | 1778 f->name = $1; |
1779 f->args = parser->sinkFloatingValueList($3); | 1779 f->args = parser->sinkFloatingValueList($3); |
1780 $$.id = 0; | 1780 $$.id = CSSValueInvalid; |
1781 $$.unit = CSSParserValue::Function; | 1781 $$.unit = CSSParserValue::Function; |
1782 $$.function = f; | 1782 $$.function = f; |
1783 } else | 1783 } else |
1784 YYERROR; | 1784 YYERROR; |
1785 } | | 1785 } | |
1786 FUNCTION maybe_space closing_parenthesis { | 1786 FUNCTION maybe_space closing_parenthesis { |
1787 CSSParserFunction* f = parser->createFloatingFunction(); | 1787 CSSParserFunction* f = parser->createFloatingFunction(); |
1788 f->name = $1; | 1788 f->name = $1; |
1789 CSSParserValueList* valueList = parser->createFloatingValueList(); | 1789 CSSParserValueList* valueList = parser->createFloatingValueList(); |
1790 f->args = parser->sinkFloatingValueList(valueList); | 1790 f->args = parser->sinkFloatingValueList(valueList); |
1791 $$.id = 0; | 1791 $$.id = CSSValueInvalid; |
1792 $$.unit = CSSParserValue::Function; | 1792 $$.unit = CSSParserValue::Function; |
1793 $$.function = f; | 1793 $$.function = f; |
1794 } | | 1794 } | |
1795 FUNCTION maybe_space expr_recovery closing_parenthesis { | 1795 FUNCTION maybe_space expr_recovery closing_parenthesis { |
1796 YYERROR; | 1796 YYERROR; |
1797 } | 1797 } |
1798 ; | 1798 ; |
1799 | 1799 |
1800 calc_func_term: | 1800 calc_func_term: |
1801 unary_term { $$ = $1; } | 1801 unary_term { $$ = $1; } |
1802 | VARFUNCTION maybe_space IDENT closing_parenthesis { | 1802 | VARFUNCTION maybe_space IDENT closing_parenthesis { |
1803 $$.id = 0; | 1803 $$.id = CSSValueInvalid; |
1804 $$.string = $3; | 1804 $$.string = $3; |
1805 $$.unit = CSSPrimitiveValue::CSS_VARIABLE_NAME; | 1805 $$.unit = CSSPrimitiveValue::CSS_VARIABLE_NAME; |
1806 } | 1806 } |
1807 | unary_operator unary_term { $$ = $2; $$.fValue *= $1; } | 1807 | unary_operator unary_term { $$ = $2; $$.fValue *= $1; } |
1808 ; | 1808 ; |
1809 | 1809 |
1810 calc_func_operator: | 1810 calc_func_operator: |
1811 WHITESPACE '+' WHITESPACE { | 1811 WHITESPACE '+' WHITESPACE { |
1812 $$ = '+'; | 1812 $$ = '+'; |
1813 } | 1813 } |
(...skipping 11 matching lines...) Expand all Loading... |
1825 calc_maybe_space: | 1825 calc_maybe_space: |
1826 /* empty */ | 1826 /* empty */ |
1827 | WHITESPACE | 1827 | WHITESPACE |
1828 ; | 1828 ; |
1829 | 1829 |
1830 calc_func_paren_expr: | 1830 calc_func_paren_expr: |
1831 '(' maybe_space calc_func_expr calc_maybe_space closing_parenthesis { | 1831 '(' maybe_space calc_func_expr calc_maybe_space closing_parenthesis { |
1832 if ($3) { | 1832 if ($3) { |
1833 $$ = $3; | 1833 $$ = $3; |
1834 CSSParserValue v; | 1834 CSSParserValue v; |
1835 v.id = 0; | 1835 v.id = CSSValueInvalid; |
1836 v.unit = CSSParserValue::Operator; | 1836 v.unit = CSSParserValue::Operator; |
1837 v.iValue = '('; | 1837 v.iValue = '('; |
1838 $$->insertValueAt(0, v); | 1838 $$->insertValueAt(0, v); |
1839 v.iValue = ')'; | 1839 v.iValue = ')'; |
1840 $$->addValue(v); | 1840 $$->addValue(v); |
1841 } else | 1841 } else |
1842 YYERROR; | 1842 YYERROR; |
1843 } | 1843 } |
1844 | '(' maybe_space expr_recovery closing_parenthesis { | 1844 | '(' maybe_space expr_recovery closing_parenthesis { |
1845 YYERROR; | 1845 YYERROR; |
1846 } | 1846 } |
1847 ; | 1847 ; |
1848 | 1848 |
1849 calc_func_expr: | 1849 calc_func_expr: |
1850 valid_calc_func_expr | 1850 valid_calc_func_expr |
1851 | valid_calc_func_expr expr_recovery { $$ = 0; } | 1851 | valid_calc_func_expr expr_recovery { $$ = 0; } |
1852 ; | 1852 ; |
1853 | 1853 |
1854 valid_calc_func_expr: | 1854 valid_calc_func_expr: |
1855 calc_func_term { | 1855 calc_func_term { |
1856 $$ = parser->createFloatingValueList(); | 1856 $$ = parser->createFloatingValueList(); |
1857 $$->addValue(parser->sinkFloatingValue($1)); | 1857 $$->addValue(parser->sinkFloatingValue($1)); |
1858 } | 1858 } |
1859 | calc_func_expr calc_func_operator calc_func_term { | 1859 | calc_func_expr calc_func_operator calc_func_term { |
1860 if ($1 && $2) { | 1860 if ($1 && $2) { |
1861 $$ = $1; | 1861 $$ = $1; |
1862 CSSParserValue v; | 1862 CSSParserValue v; |
1863 v.id = 0; | 1863 v.id = CSSValueInvalid; |
1864 v.unit = CSSParserValue::Operator; | 1864 v.unit = CSSParserValue::Operator; |
1865 v.iValue = $2; | 1865 v.iValue = $2; |
1866 $$->addValue(v); | 1866 $$->addValue(v); |
1867 $$->addValue(parser->sinkFloatingValue($3)); | 1867 $$->addValue(parser->sinkFloatingValue($3)); |
1868 } else | 1868 } else |
1869 YYERROR; | 1869 YYERROR; |
1870 | 1870 |
1871 } | 1871 } |
1872 | calc_func_expr calc_func_operator calc_func_paren_expr { | 1872 | calc_func_expr calc_func_operator calc_func_paren_expr { |
1873 if ($1 && $2 && $3) { | 1873 if ($1 && $2 && $3) { |
1874 $$ = $1; | 1874 $$ = $1; |
1875 CSSParserValue v; | 1875 CSSParserValue v; |
1876 v.id = 0; | 1876 v.id = CSSValueInvalid; |
1877 v.unit = CSSParserValue::Operator; | 1877 v.unit = CSSParserValue::Operator; |
1878 v.iValue = $2; | 1878 v.iValue = $2; |
1879 $$->addValue(v); | 1879 $$->addValue(v); |
1880 $$->extend(*($3)); | 1880 $$->extend(*($3)); |
1881 } else | 1881 } else |
1882 YYERROR; | 1882 YYERROR; |
1883 } | 1883 } |
1884 | calc_func_paren_expr | 1884 | calc_func_paren_expr |
1885 ; | 1885 ; |
1886 | 1886 |
1887 calc_func_expr_list: | 1887 calc_func_expr_list: |
1888 calc_func_expr calc_maybe_space { | 1888 calc_func_expr calc_maybe_space { |
1889 $$ = $1; | 1889 $$ = $1; |
1890 } | 1890 } |
1891 | calc_func_expr_list ',' maybe_space calc_func_expr calc_maybe_space { | 1891 | calc_func_expr_list ',' maybe_space calc_func_expr calc_maybe_space { |
1892 if ($1 && $4) { | 1892 if ($1 && $4) { |
1893 $$ = $1; | 1893 $$ = $1; |
1894 CSSParserValue v; | 1894 CSSParserValue v; |
1895 v.id = 0; | 1895 v.id = CSSValueInvalid; |
1896 v.unit = CSSParserValue::Operator; | 1896 v.unit = CSSParserValue::Operator; |
1897 v.iValue = ','; | 1897 v.iValue = ','; |
1898 $$->addValue(v); | 1898 $$->addValue(v); |
1899 $$->extend(*($4)); | 1899 $$->extend(*($4)); |
1900 } else | 1900 } else |
1901 YYERROR; | 1901 YYERROR; |
1902 } | 1902 } |
1903 ; | 1903 ; |
1904 | 1904 |
1905 calc_function: | 1905 calc_function: |
1906 CALCFUNCTION maybe_space calc_func_expr calc_maybe_space closing_parenthesis
{ | 1906 CALCFUNCTION maybe_space calc_func_expr calc_maybe_space closing_parenthesis
{ |
1907 CSSParserFunction* f = parser->createFloatingFunction(); | 1907 CSSParserFunction* f = parser->createFloatingFunction(); |
1908 f->name = $1; | 1908 f->name = $1; |
1909 f->args = parser->sinkFloatingValueList($3); | 1909 f->args = parser->sinkFloatingValueList($3); |
1910 $$.id = 0; | 1910 $$.id = CSSValueInvalid; |
1911 $$.unit = CSSParserValue::Function; | 1911 $$.unit = CSSParserValue::Function; |
1912 $$.function = f; | 1912 $$.function = f; |
1913 } | 1913 } |
1914 | CALCFUNCTION maybe_space expr_recovery closing_parenthesis { | 1914 | CALCFUNCTION maybe_space expr_recovery closing_parenthesis { |
1915 YYERROR; | 1915 YYERROR; |
1916 } | 1916 } |
1917 ; | 1917 ; |
1918 | 1918 |
1919 | 1919 |
1920 min_or_max: | 1920 min_or_max: |
1921 MINFUNCTION { | 1921 MINFUNCTION { |
1922 $$ = $1; | 1922 $$ = $1; |
1923 } | 1923 } |
1924 | MAXFUNCTION { | 1924 | MAXFUNCTION { |
1925 $$ = $1; | 1925 $$ = $1; |
1926 } | 1926 } |
1927 ; | 1927 ; |
1928 | 1928 |
1929 min_or_max_function: | 1929 min_or_max_function: |
1930 min_or_max maybe_space calc_func_expr_list closing_parenthesis { | 1930 min_or_max maybe_space calc_func_expr_list closing_parenthesis { |
1931 CSSParserFunction* f = parser->createFloatingFunction(); | 1931 CSSParserFunction* f = parser->createFloatingFunction(); |
1932 f->name = $1; | 1932 f->name = $1; |
1933 f->args = parser->sinkFloatingValueList($3); | 1933 f->args = parser->sinkFloatingValueList($3); |
1934 $$.id = 0; | 1934 $$.id = CSSValueInvalid; |
1935 $$.unit = CSSParserValue::Function; | 1935 $$.unit = CSSParserValue::Function; |
1936 $$.function = f; | 1936 $$.function = f; |
1937 } | 1937 } |
1938 | min_or_max maybe_space expr_recovery closing_parenthesis { | 1938 | min_or_max maybe_space expr_recovery closing_parenthesis { |
1939 YYERROR; | 1939 YYERROR; |
1940 } | 1940 } |
1941 ; | 1941 ; |
1942 | 1942 |
1943 invalid_at: | 1943 invalid_at: |
1944 ATKEYWORD at_rule_recovery { | 1944 ATKEYWORD at_rule_recovery { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2002 | 2002 |
2003 rule_error_recovery: | 2003 rule_error_recovery: |
2004 /* empty */ | 2004 /* empty */ |
2005 | rule_error_recovery error | 2005 | rule_error_recovery error |
2006 | rule_error_recovery invalid_square_brackets_block | 2006 | rule_error_recovery invalid_square_brackets_block |
2007 | rule_error_recovery invalid_parentheses_block | 2007 | rule_error_recovery invalid_parentheses_block |
2008 ; | 2008 ; |
2009 | 2009 |
2010 %% | 2010 %% |
2011 | 2011 |
OLD | NEW |