8
|
Erik van Brakel scottrakes · 技术社区 · 15 年前 |
![]() |
1
8
尝试将lexer文件中的从颜色移动到它自己的对象,例如:
然后,在解析器规则中,您可以这样做:
等。 这允许您在语法上指定差异,可以大致描述为上下文差异,而在词汇上可以大致描述为外观差异。如果某个东西的意思随它的位置而变化,那么应该在语法中指定这种差异,而不是在词法分析器中。 请注意,颜色和选择器的定义完全相同。lexer通常是与将输入字符串转换为语法的模块分开的一个阶段,因此具有不明确的词法是无效的(正如前面指出的,bbb可以是十六进制的,也可以是小写字母字符串)。因此,数据有效性检查需要在其他地方进行。 |
![]() |
2
2
和沃尔特说的一样,
Appendix G. Grammar of CSS 2.1
对莱克斯说
lexer定义了以下令牌…
…语法包括以下规则…
这意味着基于语法的解析器将允许非十六进制十六进制。 稍后,我将在代码中检测到一个非十六进制十六进制十六进制,它分析/解释lexed+解析的语法树。 |
![]() |
3
0
为了从多个备选方案中做出决定,ANTLR有两个选择:
这是来自antlr语法库(css2.1g): simpleSelector : elementName ((esPred)=>elementSubsequent)* | ((esPred)=>elementSubsequent)+ ; esPred : HASH | DOT | LBRACKET | COLON ; elementSubsequent : HASH | cssClass | attrib | pseudo ; cssClass : DOT IDENT ; elementName : IDENT | STAR ; 这用于句法谓词。 |
|
Jamie · 在CSS链接的文件名中添加Jinja占位符 4 月前 |
![]() |
Mass · 如何在Tailwind CSS v4中创建配置 4 月前 |
![]() |
magenta placenta · 将css变量合并为一个变量 4 月前 |
![]() |
ptownbro · 重叠分区标签,同时保持以下所有分区和内容就位 4 月前 |
![]() |
john Rizzo · 按钮背景颜色、悬停和活动状态存在问题 4 月前 |