Giter Site home page Giter Site logo

jyacc's Introduction

JYacc

  1. 说明

    1. 描述文件及语法分析器的输入流编码均为US-ASCII(即通常所说的ASCII编码)

    2. 描述文件代码段中使用到的类用户将会自行解决import

    3. 输出的源代码文件为描述文件同目录下添加.java后缀

  2. 描述文件结构

    描述文件共分四段,相互之间用%%进行分隔,分段内容可以为空但不能缺少分段,不允许注释的存在,除段落分隔符%%后至行末的内容及空行(空白字符包括空格、\b\t\r\n等)会被忽略外,其余所有内容都将被解析,不在描述文件规范内的部分将造成解析失败(下方//开头的行仅为说明作用,不应出现在描述文件中)

     //第一段,代码段
    
     //用户代码,将被添加在输出文件的import部分之后,Yacc类之前,可选
     ......
    
     %%
    
     //第二段,终结符列表
    
     //每行都将被解析为一个终结符,添加到终结符列表中,至少需要有一个终结符
     TERMINAL_SYMBOL_1
     TERMINAL_SYMBOL_2
     ......
    
     %%
    
     //第三段,非终结符列表
    
     //每行都将被解析为一个非终结符,添加到非终结符列表中,至少需要有一个非终结符
     NONTERMINAL_SYMBOL_1
     NONTERMINAL_SYMBOL_2
     ......
    
     %%
    
     //第四段,语法产生式列表
    
     //每一行都将被解析为一个产生式,不可跨行,至少应有一个产生式
     NONTERMINAL_SYMBOL1=SYMBOL1SYMBOL2SYMBOL3......
     NONTERMINAL_SYMBOL2=SYMBOL4SYMBOL5SYMBOL6......
     ......
    
  3. 词法解析器相关

    1. Yacc类对外开放两个构造方法Yacc()Yacc(Supplier<Token> tokenSupplier),前者将标准输入流中的每个ASCII字符作为一个Token,后者将使用参数中的Supplier获取Token

    2. 采用提供Supplier的构造方法中的Token类没有被实现,需要用户自行实现以下接口

       interface Token{
       	String getText();
       }
      
    3. Yacc类中对外开放的解析方法为void parse() throws IOException,该方法将持续解析直到出错或解析完成

  4. 其他说明

    使用IDE查看项目源代码时可能需要安装lombok插件

jyacc's People

Contributors

moekr avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.