2017-02-19 114 views
2

我需要根据Ruby中的一些规则来标记字符串。在Ruby中令牌化字符串?

基本上,我需要将文件分组为适合变量名称,关键字,整数或操作的部分。

因此,例如,该文件:

X:= 5;如果x> 5,则x:= 3; else x:= 6;结束

将令牌化到:

variable name (x) 
assignment operator (:=) 
integer (5) 
keyword (if) 
keyword (;) 
variable name (x) 
relation operator (>) 
integer (5) 
keyword (then) 
variable name (x) 
assignment operator (:=) 
integer (3) 
keyword (;) 
keyword (else) 
variable name (x) 
assignment operator (:=) 
integer (6) 
keyword (;) 
keyword (end) 

我真的不知道如何解析这个字符串的方式。任何人都可以将我指向正确的方向吗?

一旦我知道如何标记字符串,我就可以用它来制作实际的标记并解析它们。但首先我需要了解如何消化字符串。

谢谢!

回答

1

首先,搜索所有已知的关键字和运算符。随着他们确定,只有变量和整数应该保持。

您可以通过尝试将标识符转换为一个来确定标识符是否为整数。 !!Integer(identifier) rescue false

如果这返回false,则必须假定它是一个变量。