C# 在摸索CSS 2.1语法时遇到困难
我正在编写一个手工编码的css2.1解析引擎(用C#),并且直接使用w3css2.1语法()。然而,有一个标记我不太明白:C# 在摸索CSS 2.1语法时遇到困难,c#,grammar,w3c,css,C#,Grammar,W3c,Css,我正在编写一个手工编码的css2.1解析引擎(用C#),并且直接使用w3css2.1语法()。然而,有一个标记我不太明白: url ([!#$%&*-~]|{nonascii}|{escape})* ... "url("{w}{url}{w}")" {return URI;} "url("{w}{string}{w}")" {return URI;} 我不明白URL产品应该做什么。它似乎是一个只包含!#$%的字符串&*-~、非ascii或转义unicode代码点。这是
url ([!#$%&*-~]|{nonascii}|{escape})*
...
"url("{w}{url}{w}")" {return URI;}
"url("{w}{string}{w}")" {return URI;}
我不明白URL产品应该做什么。它似乎是一个只包含<代码>!#$%的字符串&*-~代码>、非ascii或转义unicode代码点。这是一个怎样的URL?这部作品真的是名不副实吗?它应该有什么用途
谢谢你的帮助。仅供参考,我添加C#标记只是为了增加实际程序员的受众,他们可能遇到过这种情况或有见解-如果你认为我不应该申请,我很抱歉。伙计,你读过关于这个表达的上下文了吗
baduri1 url\({w}([!#$%&*-\[\]-~]|{nonascii}|{escape})*{w}
baduri2 url\({w}{string}{w}
baduri3 url\({w}{badstring}
嗯。。。糟糕,糟糕,糟糕。有点赠品,嗯什么?一般来说,如果文档中的某些内容对您来说没有意义,或者看起来完全错了,那么它可能就没有意义了?对所以你读了一遍。。。获取正确的上下文
我不明白URL产品应该做什么。它似乎只是一个字符串!#$%&*-~,非ascii或转义unicode代码点。这是一个怎样的URL?这部作品真的是名不副实吗?它应该有什么用途
第一行将url
定义为正则表达式:
url ([!#$%&*-~]|{nonascii}|{escape})*
第二行将URI
定义为lexer可以生成/返回的令牌:
"url("{w}{url}{w}")" {return URI;}
第二行表示如果lexer看到url(
然后{w}
然后{url}
然后{w}
然后)
,那么它已经找到了一个URI
{w}
表达式是可选的空白
因此,根据定义,{url}
是一个正则表达式:它定义了URI
标记中允许哪些字符,在初始url(
和最终)
[!#$%&*-~]之间,细分为:
,
,$
,%
,&
,加上字符范围*
-~
这将接收大多数可打印的ASCII字符,包括大写、小写、数字和一系列标点字符
列出此正则表达式不匹配的可打印ASCII字符更容易:
双引号”
、单引号”
、括号(
,)
;即可打印的ascii字符减去分隔符。这使得解析不包含引号的url成为可能。例如url(http://example.com)
,而不是url(“http://example.com)
简洁,但狡猾
注意,令牌名称也令人困惑。更好的名称应该是:url\u string
或url\u arg
编辑2015年2月令牌的最新名称url未引用
以及该产品的内容?导入:导入SYM S*[STRING | URI]S*media_list?;'S*
我不理解的是,如果产品引用了URI,而URI只由这两个表达式返回,那么baduri在哪里发挥作用呢?语法似乎是说,在解析导入时,类似于url(!\35;$\ abcdef)的URI
是完全有效的。FLEX对前缀为“bad”或其他东西的产品是否有一些特殊的、自动的含义?