创建一门新的编程语言-Flex&Bison教程-(1)-初探

本文是Flex&Bison教程的第一部分,介绍了这两个工具在创建编程语言中的作用。通过一个简单的例子展示了如何使用BNF范式定义语法规则,用于数字相加和单词连接的解析。
摘要由CSDN通过智能技术生成
之前一直想钻研一下这方面的东西,于是便花了一些精力研究这些相关的工具和技术,现在我把我总结的一些经验分享给大家
Flex & Bison 是比较有名而且易用的parser组合,今后的工作大体都用到了这两个工具。他们可以在gnu官网下载,windows用户要么去下载winflexbison,要么自己编译一份(推荐),这里不详细介绍获取方法
本教程所有代码都在Android平台和windows平台的g++编译通过(可能不支持vs,untested)

初探 1

什么是Flex和Bison?

Flex是一个词法分析器,是unix lex的gnu克隆,作用是把"词"抽象成符号,供程序识别
Bison则是一个文法分析器(也是unix yacc的gnu克隆),语法就是在这里定义,是语言设计的核心
这两巨头不但可以应付复杂的语法处理,也可以拿来制作简单的分析器,如配置文件等

初探Flex
习惯上,一般把flex input文件命名为xxxll.l
以下是一个简单的例子test1ll.l:


%{
  #include <iostream>
  using namespace std;
%}
%%
[0-9]+        { cout << "Number "; }
[a-zA-Z]+     { cout << "Word ";   }
[ \t]         ; //忽略空格
%%

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值