- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我所说的字符串文字是指那些也包含类似 \123
的字符。我写了一些东西,但我不知道它是否完美:
<STRING> {
\" { yybegin(YYINITIAL);
return new Token(TokenType.STRING,string.toString()); }
\\[0-3][0-7][0-7] { string.append( yytext() ); }
\\[0-3][0-7] { string.append( yytext() ); }
\\[0-7] { string.append( yytext() ); }
[^\n\r\"\\]+ { string.append( yytext() ); }
\\t { string.append('\t'); }
\\n { string.append('\n'); }
\\r { string.append('\r'); }
\\\" { string.append('\"'); }
\\ { string.append('\\'); }
}
事实上,我知道这并不完美,因为对于解析类似 \ddd
的字符的三行,我没有将字符本身放入字符串中,而是将其表示形式放入字符串中。我可能会尝试使用 Character 方法转换它,但也许我并不详尽,也许还有其他我没有处理的转义序列......所以如果有一个规范的 jflex 文件,那将是完美的。
最佳答案
查看 JLS 时,段落 3.10.5 String Literals ,它定义字符串文字如下:
StringLiteral: " StringCharacters* " StringCharacters: StringCharacter StringCharacters StringCharacter StringCharacter: InputCharacter but not " or \ EscapeSequence
其中 EscapeSequence
定义在 3.10.6 中:
EscapeSequence: \ b /* \u0008: backspace BS */ \ t /* \u0009: horizontal tab HT */ \ n /* \u000a: linefeed LF */ \ f /* \u000c: form feed FF */ \ r /* \u000d: carriage return CR */ \ " /* \u0022: double quote " */ \ ' /* \u0027: single quote ' */ \ \ /* \u005c: backslash \ */ OctalEscape /* \u0000 to \u00ff: from octal value */ OctalEscape: \ OctalDigit \ OctalDigit OctalDigit \ ZeroToThree OctalDigit OctalDigit OctalDigit: one of 0 1 2 3 4 5 6 7 ZeroToThree: one of 0 1 2 3
请注意,\'
也是 String 文字中的有效转义序列,目前,您仍然会错过几个转义序列。您可能还想考虑 Java 源文件中可能存在的 Unicode 转义(因此也存在于字符串文字中):\u HEX HEX HEX HEX
其中 HEX
是0-9 之一 | A-F
.
关于java - 某处是否有 jflex 规范的 java 字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182863/
与 flex 不同,/* */和 \\ 似乎在 jlex 中不起作用。他们给出错误, “词汇 Action 开始时缺少大括号。” 最佳答案 您可以在 JLex 规范的第一和第三部分(即定义和 Java
在 Mathematica 中,注释以 (* 开头并以 *) 结尾并且注释可以嵌套。我目前使用 JFlex 扫描评论的方法包含以下代码 %xstate IN_COMMENT "(*" { yypus
我正在用 jflex 编写分词器。我需要将像 interferon-a 这样的单词匹配为一个标记,像 interferon-alpha 这样的单词匹配为三个。 显而易见的解决方案是前瞻,但它们在 jf
我对 JFlex 和 JSyntaxPane 相当陌生,尽管我已经成功地将 lexer for XPath 组合在一起。 . 我发现自己遇到的问题是我正在开发一个项目,该项目支持具有一些专有功能的 X
允许在 JFlex 输入文件中的词汇规则部分中同时使用关键字和正则表达式有什么意义? 看来 retrieve { action code} ...和 "retrieve" { action code
因此,我使用 jflex 做了一个练习,该练习是关于计算包含 3 个以上元音的输入文本文件中的单词数量。我最终做的是定义单词的标记,然后创建一个 java 函数来接收此文本作为输入,并检查每个字符。如
我的问题可以分解为以下可能发生在大型正则表达式中的问题:1. 是一个数字,但是 1.. 是由 组成的两个标记code>1 作为数字,.. 作为运算符。 Wolfram 语言中数字的定义非常复杂(我在末
我正在尝试在 JFlex 中编写一个 JSON 字符串解析器,到目前为止我有 string = \"((\\(\"|\\|\/|b|f|n|r|t|u[0-9a-fA-F]{4})) | [^\"\\
我正在尝试编写一个识别字符串文字的 .flex 文件,它是用双引号括起来的字符序列。没有转义字符,但我无法识别它们,这是我最近的尝试。 \"(\\.|[^"])*\" 任何建议 最佳答案 你可以改用
假设我需要描述语言的简单语法 foo 2 bar 21 但不是 foo1 使用 jflex 我写了 smt WORD=[a-zA-Z]+ NUMBER=[0-9]+ WHITE_SPACE_CHAR=
我正在为一种虚构语言构建一个词法分析器,并且在定义单行注释正则表达式时遇到问题。 问题是评论允许的字符受到限制。仅允许使用某些字符,其中包括:空格、数字、字母和一些符号(例如 * 、 / 、 + 、
我需要使用 JFlex 创建一个解析器以从输入文件中提取所有单词,包括带有重音字符的单词,例如 á、é、í、ó、ú、ñ、... 我的问题是,即使将所有文件设置为 UTF8 编码和 %unicode 标
这是我的第一个 JFlex 程序,所以我不明白为什么会出现这些错误。当我运行代码时,它给我消息“文件宏意外结束”,并且没有指定错误所在的行。另外,在注释掉 %eof 代码(即第 18 到 24 行)后
虽然这个问题是关于 JFlex 的,但它可能也适用于其他扫描仪生成器,例如 lex、flex。 如果我有一些规则,如何在该规则的一部分中创建一个捕获组,并将该捕获组的结果用作在规则匹配时调用的代码的参
我正在尝试使用 JFlex 解析一些带有多行字符串文字的语言。 例子: ''' this is a valid multiline string literal with 'quoted' word
如何在 JFlex 中实现不区分大小写的正则表达式模式。 使用标准 (?i:) 表示法似乎不起作用。 例如: To match the case insensitive word "class", t
我想使用 jFlex。尝试搜索网上教程。但所有这些都指向同一个链接。我无法在我的机器上成功设置和使用 Flex。如果有人能给我指点一个好的教程,那就太好了。 提前致谢。 最佳答案 我最近在我的 64
我正在编写一个自定义 flex 文件来生成一个用于 JSyntaxpane 的词法分析器。 我需要 lex 的自定义语言具有不同的状态,可以在一种堆栈中相互嵌入。 I.E 你可以编写一个包含单引号字符
我正在尝试使用 http://www2.cs.tum.edu/projects/cup/examples.php 的帮助链接我的 parser.java 和 yylex.java http://www
我正在尝试运行 CUP 提供的示例:Parsing directly to XML . 我将“Minijava 语法”存储在名为 minijava.cup 的文件中,并将扫描器存储在名为 xml.fl
我是一名优秀的程序员,十分优秀!