1 Star 0 Fork 0

sen/ThLang

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
lex.l 1.25 KB
一键复制 编辑 原始数据 按行查看 历史
提交于 2024-12-08 22:06 . Update lex.l
%{
#include <iostream>
#include <string>
#include "nn.h"
#include "parser.hpp"
#define SAVE_TOKEN yylval.string = new std::string(yytext, yyleng)
#define TOKEN(t) (yylval.token = t)
int yyparse();
using namespace std;
%}
%option noyywrap
%option noinput
%option yylineno
%option unicode
%%
(\"[^"\n]*\"|\'[^"\n]*\') { cout <<"line"<<yylineno<<" type:STRING,value:"<<yytext<<"\n"; SAVE_TOKEN; return STRING; }
(([-+]?\d+\.\d{0,})|(\d+\.?\d{0,}[eE][+-]?\d+)) {
cout << "line"<<yylineno<<" type:FLOAT,value:"<<yytext<<"\n";
SAVE_TOKEN;
return FLOAT;
}
[-+]?[0-9]+ { cout<<"line"<<yylineno<<" type:INT,value:"<<yytext<<"\n"; SAVE_TOKEN; return INT;}
[\p{L}_][\p{L}\p{N}_]* {cout << "line"<<yylineno<<" type:NAME,value:"<<yytext<<"\n";SAVE_TOKEN;return NAME;}
= { cout << "line"<<yylineno<<" type:TOKEN,value:"<<TEQUAL<<"\n";return TOKEN(TEQUAL); }
\n { return TOKEN(NEWLINE);}
";" {return TOKEN(SEMICOLON);}
"," {return TOKEN(COMMA);}
"(" {return TOKEN(LPAREN);}
")" {return TOKEN(RPAREN);}
. { /* 忽略其他字符 cout<<"line"<<yylineno<<" type:ERRORTOKEN,value:"<<yytext<<"\n"; */}
%%
int yywrap() {
return 1;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/thzsen/ThLang.git
git@gitee.com:thzsen/ThLang.git
thzsen
ThLang
ThLang
main

搜索帮助

0d507c66 1850385 C8b1a773 1850385