Skip to content

对标准lexfile的parse。 #1

Open
@acodercc

Description

@acodercc

对标准lexfile要进行parse,并转换为jsbison要求的json格式的cfg。

从lexfile:

%x  MultiComment
%%
/\/\*/   this.pushState("MultiComment");
<MultiComment>   /\*\//   this.popState();

到jsbison要求的json格式的cfg(context free grammar):

{
  states:{
    exclusive: "MultiComment"
  },
  rules:[{
     regex: /\/\*/,
     action: 'this.pushState("MultiComment");'
  }, {
    conditions: ['MultiComment'],
    regex: /\*\//,
    action: 'this.popState();'
  }]
}

目前lex2cfg中lex文法的功能为:

功能 完成度
正则别名定义 待实现
有限自动机对状态的支持 ok
状态的包容性(%s)与独占性(%x) ok
规则的激活条件的支持 ok
为规则指定多种自动机状态 ok
规则的正则表达式 ok
规则的动作代码 ok
规则动作代码中改变自动机状态 ok
规则动作代码中改变已匹配文本yytext ok
规则动作代码中返回值为TOKEN ok
规则动作代码没有返回,自动继续下次匹配 ok
规则动作代码中调用yymore(),暂不返回,合并下次匹配内容到当前匹配的yytext ok
规则动作代码中调用yyless(),会退匹配点 待实现

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions