V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
netcan
V2EX  ›  分享创造

编译原理课设词法分析器, AJAX 与 php, C++程序交互

  •  
  •   netcan ·
    netcan · 2016-10-06 16:26:52 +08:00 · 3214 次点击
    这是一个创建于 2971 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 C++写的词法分析器, php 通过管道方式与 C++程序交互, AJAX 取数据,

    demo :http://115.159.147.250:666/Lexical/

    项目地址:https://github.com/netcan/compilingTheory

    效果图:https://github.com/netcan/compilingTheory/raw/master/lexical.gif

    22 条回复    2016-10-09 12:33:23 +08:00
    vincixu
        1
    vincixu  
       2016-10-06 18:03:48 +08:00
    c++打个 dll 做个 php 的库感觉比 exe 优雅
    Betsy
        2
    Betsy  
       2016-10-06 18:48:32 +08:00
    netcan
        3
    netcan  
    OP
       2016-10-06 19:09:51 +08:00
    @Betsy 嘛,不能解析字符串的。。。只能无符号数常量,运算符,关键字,标记符。。。
    netcan
        4
    netcan  
    OP
       2016-10-06 19:10:28 +08:00
    @vincixu 想做扩展的,看了下资料头就大了。。。
    Betsy
        5
    Betsy  
       2016-10-06 19:16:02 +08:00
    @netcan 呃,好吧。可以考虑解析下字符串呗...
    netcan
        6
    netcan  
    OP
       2016-10-06 19:50:06 +08:00 via Android
    @Betsy 嗯,会的,现在自习。。😏
    skydiver
        7
    skydiver  
       2016-10-06 21:24:58 +08:00 via iPad
    @vincixu 这不符合 unix 哲学
    hxtheone
        8
    hxtheone  
       2016-10-06 21:27:47 +08:00
    看上去很不错哈

    我前段时间用 Golang 写了个小解释器, 同求 star, http://yrel.xhu.me/
    vincixu
        9
    vincixu  
       2016-10-06 22:40:40 +08:00
    @skydiver Unix 有哲学?……
    netcan
        10
    netcan  
    OP
       2016-10-06 22:41:52 +08:00
    @Betsy 可以解析字符串了。
    Betsy
        11
    Betsy  
       2016-10-06 22:46:07 +08:00   ❤️ 1
    @netcan 好吧,速度挺快啊。貌似第一行的第一个字符前面有若干空格,或者第一行不写任何东西,直接回车若干行,会导致后面的代码不能解析。而且对于注释表示深深的无力感,不能解析。。。
    netcan
        12
    netcan  
    OP
       2016-10-06 22:47:39 +08:00
    @hxtheone 你的看上去很漂亮。。但是解析器,语法器都是用第三方的 lex, yacc 实现的吧。。。
    netcan
        13
    netcan  
    OP
       2016-10-06 22:48:17 +08:00
    @hxtheone 借用一下 lexer 的样式。。。
    netcan
        14
    netcan  
    OP
       2016-10-06 22:58:06 +08:00
    @Betsy 注释不打算弄了,第一个问题已经解决。。
    hxtheone
        15
    hxtheone  
       2016-10-06 23:59:40 +08:00
    @netcan lexer 正则搞的, parser 就是 yacc, 没有耐心手写 LR 了 = =
    netcan
        16
    netcan  
    OP
       2016-10-07 00:00:16 +08:00
    @hxtheone 据说 LR 更加难写了。。。
    netcan
        17
    netcan  
    OP
       2016-10-07 00:00:31 +08:00
    @hxtheone LR 比 LL(1)难写。。
    hxtheone
        18
    hxtheone  
       2016-10-07 00:04:05 +08:00
    @netcan 本科上编译原理的时候写过 LR, 照搬龙书上的函数都写了三天, 现在是真没这个耐心了...
    netcan
        19
    netcan  
    OP
       2016-10-07 00:08:07 +08:00 via Android
    @hxtheone 😂没买龙书,估计难写了。。我们上一届就一个写得出 LR 。。。
    hxtheone
        20
    hxtheone  
       2016-10-07 00:18:10 +08:00
    @netcan 手边没有龙书还是老老实实上 yacc 吧
    woodrat
        21
    woodrat  
       2016-10-07 01:07:05 +08:00
    python 有 Python compiler workbench
    Tianqi
        22
    Tianqi  
       2016-10-09 12:33:23 +08:00
    很赞,我当年怎么没想到这么表现 token 和语法树
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.