Index: third_party/pyscss/scss/grammar.py
|
diff --git a/third_party/pyscss/scss/grammar.py b/third_party/pyscss/scss/grammar.py
|
deleted file mode 100644
|
index 27d399ce3ee0f36af992c187d84dd8175ddad7b7..0000000000000000000000000000000000000000
|
--- a/third_party/pyscss/scss/grammar.py
|
+++ /dev/null
|
@@ -1,218 +0,0 @@
|
-# To debug the grammar see comment block on how to debug the pyparsing grammar
|
-# in the MEDIA section.
|
-
|
-" SCSS Grammars."
|
-from pyparsing import Word, Suppress, Literal, alphanums, SkipTo, oneOf, ZeroOrMore, Optional, OneOrMore, Forward, cStyleComment, Combine, dblSlashComment, quotedString, Regex, lineEnd, Group, White
|
-
|
-
|
-__all__ = ("STYLESHEET", "OTHER_VALUE", "quotedString", "EXPRESSION", "IDENT", "PATH", "VARIABLE", "VAR_DEFINITION",
|
- "VARIABLES", "FUNCTION", "COLOR_VALUE", "SCSS_COMMENT", "CSS_COMMENT", "IMPORT", "STYLET", "RULESET",
|
- "DECLARATION", "DECLARATION_NAME", "SELECTOR_TREE", "SELECTOR_GROUP", "SELECTOR", "MIXIN", "INCLUDE",
|
- "MIXIN_PARAM", "EXTEND", "FONT_FACE", "OPTION", "FUNCTION_DEFINITION", "FUNCTION_RETURN",
|
- "IF", "ELSE", "IF_BODY", "FOR", "FOR_BODY", "CHARSET", "MEDIA", "WARN", "SEP_VAL_STRING", "POINT",
|
- "PERCENTAGE_VALUE", "ANIMATION_DECLARATIONS", "ANIMATION_BODY", "REPEAT_VALUE",
|
-)
|
-
|
-
|
-# Base css word and literals
|
-COMMA, COLON, SEMICOLON = [Suppress(c) for c in ",:;"]
|
-OPT_SEMICOLON = Optional(SEMICOLON)
|
-LACC, RACC, LPAREN, RPAREN = [Suppress(c) for c in "{}()"]
|
-LLACC, LRACC, LBRACK, RBRACK, LLPAREN, LRPAREN = [Literal(c) for c in "{}[]()"]
|
-
|
-# Comment
|
-CSS_COMMENT = cStyleComment + Optional(lineEnd)
|
-SCSS_COMMENT = dblSlashComment
|
-
|
-IDENT = Regex(r"-?[a-zA-Z_][-a-zA-Z0-9_]*")
|
-COLOR_VALUE = Regex(r"#[a-zA-Z0-9]{3,6}")
|
-VARIABLE = Regex(r"-?\$[-a-zA-Z_][-a-zA-Z0-9_]*")
|
-PERCENTAGE_VALUE = Regex(r"-?\d+(?:\.\d*)?|\.\d+") + '%'
|
-OTHER_VALUE = Regex(r"-?\d+(?:\.\d*)?|\.\d+") + Optional(oneOf("em ex px cm mm in pt pc deg fr s "))
|
-NUMBER_VALUE = PERCENTAGE_VALUE | OTHER_VALUE
|
-REPEAT_VALUE = Suppress("[") + Regex(r"-?\d+(?:\.\d*)?|\.\d+") + Suppress("]")
|
-PATH = Regex(r"[-\w\d_\.]*\/{1,2}[-\w\d_\.\/]*") | Regex(r"((https?|ftp|file):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)")
|
-POINT_PART = (NUMBER_VALUE | Regex(r"(top|bottom|left|right)"))
|
-POINT = POINT_PART + POINT_PART
|
-
|
-# Values
|
-EXPRESSION = Forward()
|
-INTERPOLATION_VAR = Suppress("#") + LACC + EXPRESSION + RACC
|
-SIMPLE_VALUE = NUMBER_VALUE | PATH | IDENT | COLOR_VALUE | quotedString | REPEAT_VALUE
|
-DIV_STRING = SIMPLE_VALUE + OneOrMore(Literal("/") + SIMPLE_VALUE)
|
-
|
-PARAMS = LPAREN + (POINT|EXPRESSION) + ZeroOrMore(COMMA + (POINT|EXPRESSION)) + RPAREN
|
-FUNCTION = Regex(r"-?[a-zA-Z_][-a-zA-Z0-9_]*") + PARAMS
|
-VALUE = FUNCTION | VARIABLE | SIMPLE_VALUE
|
-PARENS = LPAREN + EXPRESSION + RPAREN
|
-MATH_OPERATOR = Regex(r"(\+|-|/|\*|and|or|==|!=|<=|<|>|>=)\s+")
|
-EXPRESSION << ((VALUE | PARENS) + ZeroOrMore(MATH_OPERATOR + (VALUE | PARENS)))
|
-
|
-# Declaration
|
-TERM = Optional(LLPAREN) + ( DIV_STRING | EXPRESSION | INTERPOLATION_VAR ) + Optional(LRPAREN) + Optional(",")
|
-DECLARATION_NAME = Optional("*") + OneOrMore(IDENT | INTERPOLATION_VAR)
|
-DECLARATION = Forward()
|
-DECLARATION << (
|
- DECLARATION_NAME +
|
- ":" +
|
- ZeroOrMore(TERM) +
|
- Optional("!important") +
|
- Optional(LACC + OneOrMore(DECLARATION | CSS_COMMENT | SCSS_COMMENT) + RACC) +
|
- OPT_SEMICOLON )
|
-
|
-# Selectors
|
-ELEMENT_NAME = Combine(OneOrMore(IDENT | '&')) | Literal("*")
|
-ATTRIB = LBRACK + SkipTo("]") + RBRACK
|
-CLASS_NAME = Word('.', alphanums + "-_")
|
-HASH = Regex(r"#[-a-zA-Z_][-a-zA-Z0-9_]*")
|
-FILTER = HASH | CLASS_NAME | ATTRIB
|
-
|
-## PSEUDO = Regex(r':{1,2}[A-Za-z0-9-_]+')
|
-PSEUDO = Regex(r':{1,2}[^\s;{}]+')
|
-COMBINATOR = ZeroOrMore(Word("+>", max=1))
|
-
|
-SELECTOR_TREE = Forward()
|
-SELECTOR = OneOrMore(Combine(ELEMENT_NAME | FILTER | INTERPOLATION_VAR | PSEUDO))
|
-SELECTOR.leaveWhitespace()
|
-#SELECTOR_GROUP = SELECTOR + ZeroOrMore((Word("+>", max=1)) + SELECTOR)
|
-SELECTOR_GROUP = SELECTOR + ZeroOrMore(COMBINATOR + SELECTOR)
|
-SELECTOR_GROUP.skipWhitespace = True
|
-#SELECTOR_TREE = SELECTOR_GROUP + ZeroOrMore(COMMA + SELECTOR_GROUP)
|
-##TLL Workaround
|
-SELECTOR_TREE << (
|
- SELECTOR_GROUP + ZeroOrMore(Word(",>+", max=1) + SELECTOR_GROUP)
|
- )
|
-
|
-# @debug
|
-DEBUG = "@debug" + EXPRESSION + OPT_SEMICOLON
|
-
|
-# @warn
|
-WARN = "@warn" + quotedString + OPT_SEMICOLON
|
-
|
-# @include
|
-INCLUDE_MIXIN = IDENT + Optional(PARAMS)
|
-INCLUDE = "@include" + Optional(INCLUDE_MIXIN | quotedString) + OPT_SEMICOLON
|
-
|
-# @extend
|
-EXTEND = "@extend" + OneOrMore(ELEMENT_NAME | FILTER | INTERPOLATION_VAR | PSEUDO) + OPT_SEMICOLON
|
-
|
-# SCSS variable assigment
|
-SEP_VAL_STRING = EXPRESSION + OneOrMore(COMMA + EXPRESSION)
|
-VAR_DEFINITION = Regex(r"\$[a-zA-Z_][-a-zA-Z0-9_]*") + COLON + (SEP_VAL_STRING | EXPRESSION ) + Optional("!default") + OPT_SEMICOLON
|
-
|
-RULESET = Forward()
|
-IF = Forward()
|
-#CONTENT = CSS_COMMENT | SCSS_COMMENT | WARN | DEBUG | IF | INCLUDE | VAR_DEFINITION | RULESET | DECLARATION | STYLET
|
-CONTENT = CSS_COMMENT | SCSS_COMMENT | WARN | DEBUG | IF | INCLUDE | VAR_DEFINITION | RULESET | DECLARATION
|
-
|
-# SCSS control directives
|
-IF_BODY = LACC + ZeroOrMore(CONTENT) + RACC
|
-ELSE = Suppress("@else") + LACC + ZeroOrMore(CONTENT) + RACC
|
-IF << (
|
- ( Suppress("@if") | Suppress("@else if") ) + EXPRESSION + IF_BODY + Optional(ELSE))
|
-
|
-FOR_BODY = ZeroOrMore(CONTENT)
|
-FOR = "@for" + VARIABLE + Suppress("from") + VALUE + (Suppress("through") | Suppress("to")) + VALUE + LACC + FOR_BODY + RACC
|
-
|
-RULESET << (
|
- SELECTOR_TREE +
|
- LACC + ZeroOrMore(CONTENT | FOR | EXTEND) + RACC )
|
-
|
-# SCSS mixin
|
-MIXIN_PARAM = VARIABLE + Optional(COLON + EXPRESSION)
|
-MIXIN_PARAMS = LPAREN + ZeroOrMore(COMMA | MIXIN_PARAM) + RPAREN
|
-MIXIN = "@mixin" + IDENT + Group(Optional(MIXIN_PARAMS)) + LACC + ZeroOrMore(CONTENT | FOR) + RACC
|
-
|
-# SCSS function
|
-FUNCTION_RETURN = "@return" + VARIABLE + OPT_SEMICOLON
|
-FUNCTION_BODY = LACC + ZeroOrMore(VAR_DEFINITION) + FUNCTION_RETURN + RACC
|
-FUNCTION_DEFINITION = "@function" + IDENT + Group(MIXIN_PARAMS) + FUNCTION_BODY
|
-
|
-# Root elements
|
-OPTION = "@option" + OneOrMore(IDENT + COLON + IDENT + Optional(COMMA)) + OPT_SEMICOLON
|
-IMPORT = "@import" + FUNCTION + OPT_SEMICOLON
|
-#MEDIA = "@media" + IDENT + ZeroOrMore("," + IDENT) + LLACC + ZeroOrMore( CONTENT | MIXIN | FOR ) + LRACC
|
-FONT_FACE = "@font-face" + LLACC + ZeroOrMore(DECLARATION) + LRACC
|
-VARIABLES = ( Literal("@variables") | Literal('@vars') ) + LLACC + ZeroOrMore(VAR_DEFINITION) + RACC
|
-PSEUDO_PAGE = ":" + IDENT
|
-PAGE = "@page" + Optional(IDENT) + Optional(PSEUDO_PAGE) + LLACC + ZeroOrMore(DECLARATION) + LRACC
|
-CHARSET = "@charset" + IDENT + OPT_SEMICOLON
|
-
|
-#TODO(terry): Added MEDIA syntax from CSS3
|
-#media
|
-# : MEDIA_SYM S* media_query_list '{' S* ruleset* '}' S*
|
-# ;
|
-#media_query_list
|
-# : S* [media_query [ ',' S* media_query ]* ]?
|
-# ;
|
-#media_query
|
-# : [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
|
-# | expression [ AND S* expression ]*
|
-# ;
|
-#media_type
|
-# : IDENT
|
-# ;
|
-#expression
|
-# : '(' S* media_feature S* [ ':' S* expr ]? ')' S*
|
-# ;
|
-#media_feature
|
-# : IDENT
|
-MEDIA_NEXT_EXPRESSION = Literal(":") + EXPRESSION
|
-MEDIA_EXPRESSION = LPAREN + IDENT + Optional(MEDIA_NEXT_EXPRESSION) + RPAREN
|
-MEDIA_AND_QUERY = Optional(Literal("and") | COMMA) + MEDIA_EXPRESSION
|
-MEDIA_QUERY_LIST = Optional(Optional(Literal("ONLY") | Literal('NOT')) + IDENT + ZeroOrMore(MEDIA_AND_QUERY)) | Optional(MEDIA_EXPRESSION + ZeroOrMore(MEDIA_EXPRESSION))
|
-MEDIA = "@media" + MEDIA_QUERY_LIST + LLACC + ZeroOrMore( CONTENT | MIXIN | FOR ) + RACC
|
-
|
-# Below example on how to debug grammar built with pyparsing:
|
-#
|
-#MEDIA.setName("@media").setDebug()
|
-#MEDIA_QUERY_LIST.setName("MEDIA_QUERY_LIST").setDebug()
|
-#MEDIA_QUERY.setName("MEDIA_QUERY").setDebug()
|
-#MEDIA_AND_QUERY.setName("MEDIA_AND_QUERY").setDebug()
|
-#MEDIA_EXPRESSION.setName("MEDIA_EXPRESSION").setDebug()
|
-#MEDIA_NEXT_EXPRESSION.setName("MEDIA_NEXT_EXPRESSION").setDebug()
|
-#EXPRESSION.setName("EXPRESSION").setDebug()
|
-#
|
-# Output character offset of origijnal line parsed all pyparsing are offset from
|
-# this input.
|
-#
|
-#print (' '*9).join(map(str,range(11)))
|
-#print (''.join(map(str,range(10))))*15
|
-#print "@media all and (min-device-width: 769px) and (max-device-width: 1280px) {_ .sm-root {_ left: 310px;_ }_}"
|
-#print
|
-
|
-#TODO(terry): Added webit-keyframes animation this needs to be @keyframes with
|
-# @-webkit-keyframes mapping to @keyframes. Also, need more stuff
|
-# for animation like timing functions for keyframes see:
|
-#
|
-# http://www.w3.org/TR/css3-animations/#timing-functions-for-keyframes-
|
-
|
-KEYFRAME_SELECTORS = PERCENTAGE_VALUE | IDENT | Literal("from") | Literal("to")
|
-ANIMATION_DECLARATIONS = LLACC + ZeroOrMore( CONTENT | MIXIN | FOR ) + LRACC
|
-ANIMATION_PARAMS = KEYFRAME_SELECTORS + ANIMATION_DECLARATIONS
|
-ANIMATION_BODY = LLACC + ZeroOrMore(ANIMATION_PARAMS) + LRACC
|
-ANIMATION = "@-webkit-keyframes" + White() + IDENT + ANIMATION_BODY
|
-# TODO(jmesserly): Need to support other browser prefixes.
|
-
|
-#@stylet
|
-STYLET_BODY = LACC + ZeroOrMore(CONTENT) + RACC
|
-STYLET = "@stylet" + ELEMENT_NAME + STYLET_BODY
|
-
|
-# Css stylesheet
|
-STYLESHEET = ZeroOrMore(
|
- FONT_FACE
|
- | CHARSET
|
- | OPTION
|
- | MEDIA
|
- | PAGE
|
- | CONTENT
|
- | FUNCTION_DEFINITION
|
- | MIXIN
|
- | INCLUDE
|
- | FOR
|
- | IMPORT
|
- | VARIABLES
|
- | EXPRESSION
|
- | ANIMATION
|
- | STYLET
|
-)
|
|