zoukankan      html  css  js  c++  java
  • 文法改进(消除左递归)

      在上次的文法中有存在左递归的情况,将会影响以后的语法分析使用,所以需要消除左递归,以便于语法分析使用。

     

    <程序> → <外部声明> <程序>`

    <程序>`→<程序> | ε

    <外部声明> → <函数定义> | <定义>

    <函数定义> → <函数声明> <函数体>

    <函数声明> → <函数返回类型> <函数头>

    <函数返回类型> → <返回类型> | <返回类型> <指针>

    <函数头> → (<参数>) | ( )

    <函数体> → { <声明语句> <可执行语句部分> }

    <返回类型> → void | int | char | float | double

    <指针> → * | * <指针>

    <参数> → <标识符类型> <标识符> | <标识符类型> <标识符> , <参数>

    <标识符类型> → int | char | double | float | <标志符类型> <指针>

    <标识符(变量)> → <字母> | _ | <标识符> <数字> | <标识符> <字母>

    <标识符(变量)> → <字母> | _ | <标识符(变量)>`

    <标识符(变量)>` → <数字> | <字母>

    <字母> → a | b | c |……| x | y | z

    <数字> → 0 | 1|……| 8 | 9

    <声明语句> → <标识符类型> <标识符> ; | <标识符类型> <标识符> ; <声明语句>

    <可执行语句部分> → <语句> | <可执行语句部分> <语句>

    <语句> → <表达式语句> | <条件语句> | <循环语句> | <跳转语句>

    <循环语句> → <while (表达式语句){ 可执行语句部分}> | <for (表达式; 表达式; 表达式)  {可执行语句部分}> | do{可执行语句部分}while(表达式语句);

    <条件语句> → < if语句> | <if-else语句> | <switch语句>

    < if语句> → <if (表达式语句) {可执行语句部分}>

    <if-else语句> → <if (表达式语句) {可执行语句部分} else {可执行语句部分}>

    <switch语句> → <switch(变量){ switch语句块 }>

    <switch语句块> → < case 常量: 可执行语句部分> | < default: 可执行语句部分> | < case 常量: 可执行语句部分> <switch语句块>

    <常量> → <数字> | <去0数字> <常量>

    <去0数字> → 1 | 2 | 3 |……| 8 | 9

    <跳转语句> → continue ; | break ; | return ; | return 表达式; |return

    <表达式语句> → <赋值表达式> | <逻辑表达式> | <算术表达式 E>

    <赋值表达式> → <变量> = <算术表达式>

    <逻辑表达式> → (<表达式> | <数字> ) <逻辑运算符> (<表达式> | <数字>)

    E → T|TE `

    E` → (+T|-T)E`|ε

    T  → F|FT `

    T `→( *F| /F)T`|ε

    F → PF`

    F` → (↑ P | ε)F`

    P (E) | <常量> | <标识符>

    <逻辑运算符> → > | < | != | <= | >= | = = | ? | : | ! | || | && 

  • 相关阅读:
    java-实现两种排序方法
    暑假,一遍一遍敲代码吧!
    java学习-如何定义一个函数及其简单练习
    关于函数重载的理解
    java学习中关于函数的练习
    在校大三学生,真心想学好计算机。可是,,,,没有目标,。。。。。。
    伪分布式网络爬虫框架的设计与自定义实现(一)
    网站架构成长路程之 箴言
    使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
    使用visualStudio2017创建一个简单的控制台程序
  • 原文地址:https://www.cnblogs.com/lger/p/6146867.html
Copyright © 2011-2022 走看看