2016-04-15 6 views
0

Итак, я кодирую программу лексического анализатора (в PHP) в качестве домашней работы, и мне нужно tokenize программу C.Проанализируйте выражение C с точки зрения лексического анализа

У меня есть этот следующий кусок кода из C кода я должен проанализировать: +e25.f12.e-- который затем разметить в OPERATOR => +, VARIABLE => e25 но пропускает .f12.e--, потому что она сигнализирует это как ошибку. Теперь я не уверен, что это правильное поведение, правильно ли работает алгоритм или он тоже должен его подделать (если это так, можете ли вы показать токенизацию .f12.e--?).

Например, следующий код должен разметить следующим образом:

Код:

xe,12.34e-25" ;;kjk 'a'"'"'/* dfh sfg fsg 
    sdgf sdf 






sdfvvs svd sdv 
*//*3rf 3rfg 3f 



e2f2efef*//*/*/*/ 

лексемизацию:

var => xe 
operator => , 
constant => 12.34e-25 
string => " ;;kjk 'a'" 
string => '"' 
operator => * 
operator =>/

Спасибо.

ответ

2
+e25.f12.e 

tokenises как:

+ operator 
e25 identifier 
. operator 
f12 identifier 
. operator 
e identifier 
+0

Я вижу, я думал то же самое, но не был уверен, что '.', какой тип оператора' '.' в C'? – southpaw93

+2

Это оператор-член структуры. Перед запуском этого проекта у вас должен быть полный список операторов и специальных символов. – EJP

+0

Я вижу, спасибо! @ EJP Да, я искал везде, не могу найти его. – southpaw93