从词法分析的角度分析一个C表达式
Analyze a C expression from a lexical analysis perspective
所以我正在编写一个词法分析器程序(在 PHP
中)作为家庭作业,我必须标记一个 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 => /
谢谢。
+e25.f12.e
标记为:
+ operator
e25 identifier
. operator
f12 identifier
. operator
e identifier
所以我正在编写一个词法分析器程序(在 PHP
中)作为家庭作业,我必须标记一个 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 => /
谢谢。
+e25.f12.e
标记为:
+ operator
e25 identifier
. operator
f12 identifier
. operator
e identifier