游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4024|回复: 13

求 Lex 和 Yacc 可用的下载

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-7-28 12:17:00 | 显示全部楼层 |阅读模式
求 Lex 和 Yacc 可用的下载

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2008-7-28 12:55:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

哎。。。高手。。。。
flex bison

17

主题

166

帖子

174

积分

注册会员

Rank: 2

积分
174
发表于 2008-7-28 14:03:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

要开始写你的新语言了?

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-7-28 16:35:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

我下过了,不过不会配置。。。nnd,
我看我还是手工写DFA吧,反正已经写熟练了。

>> 要开始写你的新语言了?
   不一定。。我先做个小工具,类似于 idl 语言,时间够了在写完整的语言。

34

主题

443

帖子

478

积分

中级会员

Rank: 3Rank: 3

积分
478
发表于 2008-7-28 19:41:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

Lua源码包里有个 lex_yy.c

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-7-28 20:25:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

废话,我的 Logica 里面还有个 Lexer.h 呢。lexer是必需的。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-7-28 21:45:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

完蛋了,token type 太多...我还是考虑用 flex 吧

        TT_S_DEFINE,        // #def
        TT_S_DEFBLOCK,        // #defblock
        TT_S_ENDBLOCK,        // #endblock
        TT_S_NAMESPACE,        // #namespace ..所以不需要 #undef
        TT_S_USING,                // #using
        TT_S_LINK,                // ##
        TT_S_STR,                // #

        TT_IDENT,                // an identifier
        TT_NUM,                        // a int number 已经转换为符号整数,无进制问题
        TT_NUM_F,                // a float number
        TT_CHAR,                // an unicode char
        TT_STR,                        // an unicode string
        TT_TRUE,                // true
        TT_FALSE,                // false
        TT_NOTHING,                // nothing

        TT_SEMI,                // ;
        TT_COLON,                // :
        TT_DOT,                        // .
        TT_COMMA,                // ,
        TT_DOLLAR,                // $
        TT_AT,                        // @
        TT_AMPERSABD,        // &
        TT_QUESTION,        // ?
        TT_EXCLAMATION,        // !
       
        TT_ADD,                        // +
        TT_SUB,                        // -
        TT_MUL,                        // *
        TT_DIV,                        // /
        TT_MOD,                        // %

        TT_ADD_ASS,                // +=
        TT_SUB_ASS,                // -=
        TT_MUL_ASS,                // *=
        TT_DIV_ASS,                // /=
        TT_MOD_ASS,                // %=

        TT_RIGHT,                // <<
        TT_LEFT,                // >>

        TT_RIGHT_ASS,        // <<=
        TT_LEFT_ASS,        // >>=

        TT_NOT,                        // ~
        TT_AND,                        // &
        TT_OR,                        // |
        TT_XOR,                        // ^

        TT_NOT_ASS,                // ~=
        TT_AND_ASS,                // &=
        TT_OR_ASS,                // |=
        TT_XOR_ASS,                // ^=

        TT_NOT_BL,                // not
        TT_AND_BL,                // and
        TT_OR_BL,                // or

        TT_ASS,                        // =
        TT_EQ,                        // ==
        TT_NOT_EQ,                // !=
        TT_SMALL,                // <
        TT_LARGE,                // >
        TT_SMALL_EQ,        // <=
        TT_LARGE_EQ,        // >=

        TT_PAREN_R,                // (
        TT_PAREN_L,                // )
        TT_BRACKET_R,        // [
        TT_BRACKET_L,        // ]
        TT_BRACE_R,                // {
        TT_BRACE_L,                // }

        TT_IF,                        // if
        TT_ELSE,                // else
        TT_SELECT,                // select ..case.. break
        TT_CASE,                // case (break automatically)
        TT_FOR,                        // for
        TT_WHILE,                // while
        TT_DO,                        // do
        TT_BREAK,                // break
        TT_CONTINUE,        // continue
        TT_GOTO,                // goto

        TT_BLK,                        // blk ( declare as a blocking call )
        TT_NON_BLK,                // nonblk ( declare as a non-blocking call )
        TT_UPDATE,                // update ( Update函数,每frame自动被调用 )
        TT_CALLBACK,        // callback 回调,可以与blk和nonblk组合

        TT_DURE,                // dure (具有crrt和next的变量,在仿真时确保同步)
        TT_CONTI,                // conti (连续信号)
        TT_PULSE,                // pulse (脉冲信号)

17

主题

166

帖子

174

积分

注册会员

Rank: 2

积分
174
发表于 2008-7-28 22:33:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

就用lex和yacc吧,看看他们自带的例子,在例子的基础上开始补充,很容易的
这两套工具,我用过java版的和python版的,哈哈,C版的倒是没用过

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-7-29 00:14:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

呵呵,是啊。我看了下正则表达式和NFA,的确比我这样手工编码DFA简单多了。
前者是 using ,后者是 making...

17

主题

166

帖子

174

积分

注册会员

Rank: 2

积分
174
发表于 2008-7-29 00:19:00 | 显示全部楼层

Re:求 Lex 和 Yacc 可用的下载

好的程序员要学会偷懒
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 20:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表