文法翻译

<程序> ->  <外部声明> |  <程序>  <外部声明>

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

<函数定义> -> <说明符类型> <声明> <复合语句>

<说明符类型>  ->  <空类> | <字符型> |  <浮点型>

<声明> ->  <指针>  <直接说明符>  |  <直接说明符>

<指针> -> <*> | <*指针>

<直接说明符>  -> <标识符>  |  <直接说明符  ‘[‘  ‘]‘>   |  <直接标识符‘[‘ 恒表达式 ‘]‘>  |  <标识符‘(‘ 参数名单 ‘)‘>  |  <标识符‘(‘  ‘)‘>  |  <直接说明符 ‘;‘ 识别名单>

<识别名单> -> <标识符> |  <识别名单 ‘;‘ 标识符>

<恒表达式> -> <恒表达式>

<参数名单> -> <参数声明> | <参数名单 ‘;‘ 参数声明>

<参数声明> -> <声明标识符> | <标识符>

<复合语句> -> <‘{‘ ‘}‘> | <‘{‘语句名单‘}‘> | <‘{‘识别名单 语句名单‘}‘>

<识别名单> -> <识别符> | <识别名单  识别符>

<识别符> -> <初始化标识符> | <初始化标识符  ‘;‘  初始化标识符>

<初始化标识符> -> <标识符> | <标识符 ‘=‘ 初始化器>

<初始化器> -> <任务表达式>  | <‘{‘ 初始化列表  ‘}‘> | <‘{‘  初始化列表 ‘}‘>

<初始化列表> -> <初始化器> |<初始化列表 ‘;‘ 初始化器>

<语句表> -> <语句> | <语句表  语句>

<语句> -> <复合语句> | <语句表达式> | <选择语句> | <迭代语句> | <跳转语句>

<语句表达式> -> <表达式>

<选择语句> -> < : IF‘(‘ 表达式 ‘)‘ 语句> |<IF ‘(‘ 表达式 ‘)‘ 语句 ELSE 语句>

<迭代语句> -> <WHILE ‘(‘ 表达式 ‘)‘ 语句> | <FOR‘(‘ 表达语句  表达语句 ‘)‘ 语句> | <FOR‘(‘ 表达语句 表达语句 ‘)‘ 语句>

<跳转语句> -> <CONTINUE> | <BREAK> | <RETURN> | <RETURN 表达式>

<表达式> -> <:复制表达式> | <表达式 ‘;‘ 复制表达式>

<赋值表达式> -> <条件表达式> | <一元赋值 运算符表达式 赋值表达式>

<条件表达式> -> <逻辑或表达式> | <>

时间: 2024-10-19 10:06:37

文法翻译的相关文章

1029 C语言文法翻译(2)

program à external_declaration | program external_declaration 翻译:<源程序>→ <外部声明> | <源程序> <外部声明> external_declaration à function_definition | declaration 翻译:外部声明>→ <定义函数> |<声明> function_definition à type_specifier decla

C语言文法翻译

<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→<类型说明符><声明符><复合语句> <类型说明符>→<无返回型>|<字符型>|<整型>|<浮点型> <声明符>→<指针><直接声明>|<直接声明> <指针>→

PSR 类自动加载规范的翻译与看法

先列举一些资源: PSR-0官网原文 PSR的Github源 PSR中文翻译的Github源 有几点事先说明: 翻译部分,我只挑选PSR-0和PSR-4中的主要规范内容进行翻译. 我的翻译,侧重以理解的角度,而不是严格的文法翻译. 关键修饰词的说明: **MUST** __务必__ **MUST_NOT** __绝不__ **REQUIRED** __务必__ **SHALL** __务必__ **SHALL_NOT** __绝不__ **SHOULD** __应该__ **SHOULD_NOT

设计模式是什么鬼(解释器)

原文链接:https://www.javazhiyin.com/24976.html 解释,一定是针对某种语言的拆解.释意,并按照文法翻译.转换成另一种表达形式以达到目标能够理解的目的.比如我们都知道Java编程语言是人类可以理解的语言,程序写好后要先进行编译生成字节码(class文件),然后对此文件解释成机器码,最终机器才可以理解并执行,这就是解释器存在的意义. 就拿我们人类的自然语言来举例,比如我们要进行英文翻译工作,首先要对一句话(表达式)进行拆解,而拆开后的单词就成了不可再分的终极表达式

还在吐槽翻译的外版书质量差吗?谈谈我个人的理解

很难想象哪个学习计算机技术的人是没看过这方面书籍的,如果只是在网上看看技术贴,那样得来的知识绝对是离散的,不系统的.而要真正学好一门学问(比如一门计算机语言或者一门技术),一本好书的作用是不言而喻的.很多人抱怨国人在技术图书方面抄来抄去,不求甚解,虽然出版图书者甚众,但最终成为精品者却凤毛麟角.于是,更多读者热衷于外版书.但显然,并非所有国人的外语水平都足以在阅读原版书籍时毫无障碍.那么退而求其次,寻求翻译版就成为一种看似不得已的选择. 不幸的是,网上对于翻译版书籍的吐槽可以说从未消停.我也看过

javacc-LOOKAHEAD MiniTutorial 翻译

本文翻译自\javacc-5.0\doc\lookahead.html章节. 上文:http://blog.csdn.net/chaofanwei/article/details/25541065 1.LOOKAHEAD是什么 lookahead就是当语法分析器从词法分析器里取token时,需要取多少个才能让分析器正确的走下去. 例一 void Input() : {} { "a" BC() "c" } void BC() : {} { "b"

使用Scala基于词法单元的解析器定制EBNF范式文法解析

一.前言 近期在做Oracle迁移到Spark平台的项目上遇到了一些平台公式翻译为SparkSQL(on Hive)的需求,而Spark采用亲妈语言Scala进行开发.分析过大概需求过后,拟使用编译原理中的EBNF范式模式,进行基于词法的文法解析.于是拟采用传统的正则词法解析到EBNF文法解析的套路来实现,直到发现了StandardTokenParsers这个Scala基于词法单元的解析器类. 二.平台公式及翻译后的SparkSQL 平台公式的样子如下所示: 1 if(XX1_m001[D003

201406114215+林志杰+文法分析

语法分析是编译原理的核心部分.语法分析的作用是识别由词法分析给出的单词符号序列是否是给定文法的正确句子. 1) 不存在终结符号a使得α和β都能够推导出以a开头的串. 2) α和β中最多只有一个可以推导出空串. 3) 如果βÞ*ε,那么α不能推导出任何以FOLLOW(A)中某个终结符号开头的串.类似地,如果αÞ*ε,那么β不能推导出任何以FOLLOW(A)中某个终结符号开头的串. 英语不好,太多太多需要翻译,也难看懂,希望老师多给点细心讲解,辛苦了

[翻译]浏览器是怎么工作的

From:http://taligarsiel.com/Projects/howbrowserswork1.htm 引子: 浏览器可能是我们最经常使用的软件了.在这章节我将解释浏览器怎么运行的背后.我们将看到当你在地址栏输入google.com后到浏览器打开Google主页这段时间内都发生了什么事情. 我们讨论的浏览器 当今主流浏览器有五类: Internet Explorer, Firefox, Safari, Chrome 以及 Opera.我会基于开源浏览器 Firefox, Chrome