Regex squeak(Smalltalk)搜索字符串中的正则表达式

Regex squeak(Smalltalk)搜索字符串中的正则表达式,regex,smalltalk,squeak,Regex,Smalltalk,Squeak,我正在尝试编写一个“compile”方法,该方法获取一个字符串和一个集合,并查看该字符串是否符合条件。 方法签名为: compile: stringCode where: argTypeCollection 使用示例(假设C是类): 该方法应该做的第一件事是通过检查参数的数量是否正确来分析字符串,我想用regex这样做。 我试图寻找正则表达式的用法解释,但唯一的例子是文件,我没有成功地扫描字符串并计算[a-zA-z][a-zA-Z0-9]*:同样的方法 在squeak中对字符串使用regex的

我正在尝试编写一个“compile”方法,该方法获取一个字符串和一个集合,并查看该字符串是否符合条件。 方法签名为:

compile: stringCode where: argTypeCollection
使用示例(假设C是类):

该方法应该做的第一件事是通过检查参数的数量是否正确来分析字符串,我想用regex这样做。 我试图寻找正则表达式的用法解释,但唯一的例子是文件,我没有成功地扫描字符串并计算[a-zA-z][a-zA-Z0-9]*:同样的方法


在squeak中对字符串使用regex的任何示例都会有所帮助。

在分析Smalltalk源代码时,最好的选择是使用Smalltalk编译器用于解析、编译和评估方法和代码的对象。换句话说,拥有全套的编译工具供您使用,在这类任务中使用regex没有什么意义

例如,您可以像下面这样使用
解析器分析方法的头(即,源代码中定义选择器和形式参数的部分)

Parser new parse: aString class: aClass
其中,
aString
是方法的源代码,
aClass
是目标类,即该方法适用的类

在您的示例中,类是
C
。但是,请注意,当源代码不包含对IVAR的引用(或就此而言,类或共享变量)时,参数
aClass
变得不相关,可以用
Object
替换


如果解析成功,则
parse:class:
消息的结果将是一个抽象解析树(又称AST),其节点将提供更多有用的信息以供进一步分析。如果解析失败,您将可以访问解析错误对象,该对象将让您确定代码不符合Smalltalk语法的原因。正如您所看到的,您将拥有所有需要对分析中的源代码进行反思的内容。

而不是使用正则表达式try
Parser new parse:code class:C
,其中
code
是源代码(a
String
)。您将在类
解析器
中找到其他方法,这些方法将帮助您满足项目的其他需求。是在方法中编写,还是改为在方法中编写?我不确定
类:
代表什么。没有帮助。请参考我下面的答案。
Parser new parse: aString class: aClass