小编Mic*_*cah的帖子

对'yylex()'的未定义引用

我正在尝试使用flex和bison来创建一个简单的脚本语言.现在,我只是想让计算器正常工作.

但是我无法编译它.当我运行这个makefile时:

OBJECTS = hug.tab.o hug.yy.o
PROGRAM = hug.exe

CPP = g++
LEX = flex
YACC = bison

.PHONY: all clean

all: $(OBJECTS)
$(CPP) $^ -o $(PROGRAM)

clean:
$(RM) *.o *.output *.tab.* *.yy.* $(PROGRAM)

%.tab.o: %.tab.cpp
$(CPP) -c -o $@ $<

%.tab.cpp: %.ypp
$(YACC) -vd $<

%.yy.o: %.yy.c
$(CPP) -c -o $@ $<

%.yy.c: %.l
$(LEX) -o $@ $<

%.o: %.cpp
$(CPP) -c -o $@ $<
Run Code Online (Sandbox Code Playgroud)

在我的.l和.ypp文件中,我收到此错误:

undefined reference to `yylex()'
Run Code Online (Sandbox Code Playgroud)

如果我这样做命令all:

$(CPP) $^ -o $(PROGRAM) -lfl
Run Code Online (Sandbox Code Playgroud)

它说无法找到 …

lex g++ bison undefined-reference flex-lexer

10
推荐指数
3
解决办法
2万
查看次数

Haskell lexer问题

我在haskell写一个词法分析器.这是代码:

lexer :: String -> [Token]
lexer s
    | s =~ whitespace :: Bool =
        let token = s =~ whitespace :: String in
            lex (drop (length token) s)
    | s =~ number :: Bool =
        let token = s =~ number :: String in
            Val (read token) : lex (drop (length token) s)
    | s =~ operator :: Bool =
        let token = s =~ operator :: String in
            Oper token : lex (drop (length token) s)
    | otherwise …
Run Code Online (Sandbox Code Playgroud)

haskell types lexer

0
推荐指数
1
解决办法
2697
查看次数

标签 统计

bison ×1

flex-lexer ×1

g++ ×1

haskell ×1

lex ×1

lexer ×1

types ×1

undefined-reference ×1