如何在flex / lex中声明标识符?

时间:2012-06-29 14:19:34

标签: flex-lexer lex lexical-analysis lexical

我想创建一个基于flex的CSS2.1词法扫描程序。 w3 org上有扫描仪flex实现。 我试着打电话给

$ flex css2.1.flex
$ gcc lex.yy.c -lfl

但得到错误:

css2.1.flex: In function ‘yylex’:
css2.1.flex:53:9: error: ‘S’ undeclared (first use in this function)
css2.1.flex:53:9: note: each undeclared identifier is reported only once for each function it appears in
css2.1.flex:58:9: error: ‘CDO’ undeclared (first use in this function)
css2.1.flex:59:9: error: ‘CDC’ undeclared (first use in this function)
css2.1.flex:60:9: error: ‘INCLUDES’ undeclared (first use in this function)
css2.1.flex:61:9: error: ‘DASHMATCH’ undeclared (first use in this function)
css2.1.flex:63:9: error: ‘STRING’ undeclared (first use in this function)
css2.1.flex:64:9: error: ‘BAD_STRING’ undeclared (first use in this function)
css2.1.flex:66:9: error: ‘IDENT’ undeclared (first use in this function)
css2.1.flex:68:9: error: ‘HASH’ undeclared (first use in this function)
css2.1.flex:70:9: error: ‘IMPORT_SYM’ undeclared (first use in this function)
css2.1.flex:71:9: error: ‘PAGE_SYM’ undeclared (first use in this function)
css2.1.flex:72:9: error: ‘MEDIA_SYM’ undeclared (first use in this function)
css2.1.flex:73:9: error: ‘CHARSET_SYM’ undeclared (first use in this function)
css2.1.flex:75:9: error: ‘IMPORTANT_SYM’ undeclared (first use in this function)
css2.1.flex:77:9: error: ‘EMS’ undeclared (first use in this function)
css2.1.flex:78:9: error: ‘EXS’ undeclared (first use in this function)
css2.1.flex:79:9: error: ‘LENGTH’ undeclared (first use in this function)
css2.1.flex:85:9: error: ‘ANGLE’ undeclared (first use in this function)
css2.1.flex:88:9: error: ‘TIME’ undeclared (first use in this function)
css2.1.flex:90:9: error: ‘FREQ’ undeclared (first use in this function)
css2.1.flex:92:9: error: ‘DIMENSION’ undeclared (first use in this function)
css2.1.flex:94:9: error: ‘PERCENTAGE’ undeclared (first use in this function)
css2.1.flex:95:9: error: ‘NUMBER’ undeclared (first use in this function)
css2.1.flex:97:9: error: ‘URI’ undeclared (first use in this function)
css2.1.flex:99:9: error: ‘BAD_URI’ undeclared (first use in this function)
css2.1.flex:101:9: error: ‘FUNCTION’ undeclared (first use in this function)

我必须如何声明缺少的标识符?

1 个答案:

答案 0 :(得分:2)

它们是在链接上的flex语法之前的解析器定义中定义的。当您在解析器定义上运行类似bison -d的内容时,它将生成包含定义的文件(通常为y.tab.h)。