我的问题可以分解为以下可能发生在大型正则表达式中的问题:1.
是一个数字,但是是由数字和运算符1..
组成的两个标记。1
..
Wolfram 语言中数字的定义非常复杂(我在末尾附加了 JFlex 代码),我基本上需要(?!...)
深度嵌套结构中的运算符。但是,JFlex 似乎仅在“规则”基础上支持负前瞻,这意味着我需要手动扩展我的定义。
所以想要的是数字不吃.
,当它后面跟着另一个 时.
,因为在 Wolfram 语言中,这两个点然后被解析为运算符sigh。
我准备了一个示例,该示例基本上将整个数字表示形式显示为普通正则表达式,包含负前瞻并包含示例数字。
有人能告诉我如何在 JFlex 中做到这一点吗?
这是相关的 JFlex 代码,完整的定义可在此处获得
Digits = [0-9]+
Digits2 = [0-9a-zA-Z]+
Base = 2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36
Number = {Digits}((\.){Digits}?)? | \.{Digits}
PrecisionNumber = {Number}`((`?){Number})?
BaseNumber = {Base} "^^" {Digits2}(\.{Digits2}?)?
BasePrecisionNumber = {BaseNumber}((`{Number}?)|(``{Number}))
ScientificInteger = {Number} "\*^"(-?){Digits}
ScientificNumber = {PrecisionNumber} "\*^"(-?){Digits}
BaseScientificNumber = {BasePrecisionNumber} "\*^"(-?){Digits}
{BaseScientificNumber}|
{BasePrecisionNumber}|
{ScientificInteger}|
{BaseNumber}|
{ScientificNumber}|
{PrecisionNumber}|
{Number} { return WLElementTypes.NUMBER; }