2017-02-19 15 views
2

Мне нужно tokenize строку, основанную на нескольких правилах в Ruby.Маркировка строки в Ruby?

В принципе, мне нужно сгруппировать файл в разделы, которые соответствуют либо имени переменной, ключевому слову, целому числу или операции.

Так, например, файл:

х: = 5; если х> 5, то х: = 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, вы должны предположить, что это переменная.