我正在尝试使用lex和yacc / bison解析配置文件。示例文件如下所示。
[section1]
attr1=1234567
attr2=848329832499934
[section2]
attr3=1233422
attr2=849999934834798
要识别上面列出的属性的值,我使用以下正则表达式。
DIGIT [0-9]
NUM {DIGIT}+
现在,我的具体示例attr1
的类型为uint32_t
,attr2
的类型为uint64_t
但是我无法识别这一点。换句话说,我需要有一个符号表(我静态定义),我可以从中查找类型,以便我可以填充相应的类型。
还有其他方法可以解决这个问题吗?像python这样的动态类型语言如何解决这个问题。?
答案 0 :(得分:0)
通常的方法是根据令牌本身键入常量(或其他令牌)。因此,如果一个数字序列令牌的值在0..2 32 -1范围内,那么它将是2 $
checking TEST-var
TEST is empty!
2 $export TEST="hello"
checking TEST-var
TEST is not empty
1 $
,否则它将是其他类型(和相应的令牌)能够保持价值。
在python的情况下,有unit32_t
类型能够保存适合单个单词的整数(这取决于你正在运行的机器),然后是&# #39; s int
类型,能够处理任何更大的整数。