`

BNF for MiniJava

    博客分类:
  • JAVA
阅读更多

转载自:《Modern Compiler Implementation in Java》

http://www.cambridge.org/resources/052182060X/MCIIJ2e/grammar.htm#prod4

NON-TERMINALS

Goal ::= MainClass ( ClassDeclaration )* <EOF>
MainClass ::= "class" Identifier "{" "public" "static" "void" "main" "(" "String" "[" "]" Identifier ")" "{" Statement "}" "}"
ClassDeclaration ::= "class" Identifier ( "extends" Identifier )? "{" ( VarDeclaration )* ( MethodDeclaration )* "}"
VarDeclaration ::= Type Identifier ";"
MethodDeclaration ::= "public" Type Identifier "(" ( Type Identifier ( "," Type Identifier )* )? ")" "{" ( VarDeclaration )* ( Statement )* "return" Expression ";" "}"
Type ::= "int" "[" "]"
| "boolean"
| "int"
| Identifier
Statement ::= "{" ( Statement )* "}"
| "if" "(" Expression ")" Statement "else" Statement
| "while" "(" Expression ")" Statement
| "System.out.println" "(" Expression ")" ";"
| Identifier "=" Expression ";"
| Identifier "[" Expression "]" "=" Expression ";"
Expression ::= Expression ( "&&" | "<" | "+" | "-" | "*" ) Expression
| Expression "[" Expression "]"
| Expression "." "length"
| Expression "." Identifier "(" ( Expression ( "," Expression )* )? ")"
| <INTEGER_LITERAL>
| "true"
| "false"
| Identifier
| "this"
| "new" "int" "[" Expression "]"
| "new" Identifier "(" ")"
| "!" Expression
| "(" Expression ")"
Identifier ::= <IDENTIFIER>
分享到:
评论

相关推荐

    C、Java和Python的BNF范式

    在本资源中,我们关注的是C、Java和Python这三种流行的编程语言的BNF范式。 首先,让我们详细探讨C语言的BNF范式。C语言的语法严谨且层次分明,它的BNF范式主要涵盖了程序的基本组成部分,如声明(declarations)、...

    Java Syntax BNF_java_

    Java语法BNF(巴科斯范式)是描述Java编程语言结构的一种形式化方法,它是一种用于定义上下文无关文法的形式系统。BNF全称为Backus-Naur Form,由John Backus和Peter Naur提出,广泛应用于编译原理和语言设计中。在...

    BNF详细的语法定义(包含所有的BNF关键字)

    例如,在Java中,`FOR_STATEMENT ::= "for" "(" (variable_declaration | (expression";") | ";") [expression]";" [expression]";" ")" statement` 这条规则定义了一个循环语句(`FOR_STATEMENT`)的结构。 #### 二...

    Augmented BNF for Syntax Specifications: ABNF

    ### Augmented BNF for Syntax Specifications: ABNF #### 1. 引言 在互联网技术规范中,常常需要定义一种格式语法。为了达到这一目的,作者可以自由选择他们认为有用的任何表示法。多年来,增强版巴克斯-诺尔范式...

    BNF for Java-开源

    BNF for Java是BNF编译器或Parser-Generator。 它使用Java实现ISO标准Backus-Naur格式。 BNF允许您创建语法或完整的语言来解析数据源。 您的自定义Java扩展会生成输出。

    BNF.zip_BNF parser analysis_bnf_bnf描述c语言_site:www.pudn.com

    BNF,全称为巴科斯范式(Backus-Naur Form),是一种用于描述形式语言的规范,广泛应用于计算机科学领域,特别是编译原理和解析器构造。它通过一套符号规则来定义语言的语法结构,使得程序员可以清晰地理解并实现...

    C语言 子集 的BNF文法描述

    5. **控制流结构**:包括条件语句(`if`、`switch`)、循环语句(`while`、`for`)、跳转语句(`break`、`continue`、`return`),如: ```bnf &lt;selection-statement&gt; ::= 'if' '(' &lt;expression&gt; ')' &lt;statement&gt; ...

    c++ bnf i need

    c++ bnf i need c++ bnf i need c++ bnf i need]

    BNF语法开发指南

    BNF语法开发指南,离线命令词语法构建的BNF语法开发指南

    常见计算机语言语法及BNF

    标题 "常见计算机语言语法及BNF" 涉及的核心概念是编程语言的语法和Backus-Naur Form(BNF)表示法,这对于理解和构建编译器至关重要。BNF是一种形式化的语法描述方法,用于定义计算机语言的结构,是编译原理中的...

    BNF范式查看器

    **BNF范式查看器详解** 巴科斯范式(Backus-Naur Form,简称BNF)是一种形式化的语法描述方法,广泛应用于计算机语言的定义,尤其是编译器设计领域。BNF查看器是一个专门用来解析和展示BNF范式的工具,它能够帮助...

    Java形式文法.rar_bnf

    Java形式文法是编程语言Java的语法描述方式,它使用巴科斯范式(Backus-Naur Form,简称BNF)来定义语法规则。BNF是一种形式化的语言描述方法,广泛应用于计算机科学中,特别是在编译原理和解析器构造中。通过BNF,...

    sql-92_bnf巴格达范式

    sql-92_bnf巴格达范式 for antler

    java代码生成器源码-bnfc:BNF转换器

    java代码生成器源码 BNF 转换器 什么是 BNF 转换器? BNF 转换器 (bnfc) 是一种编译器构建工具,可从标记的 BNF 语法生成编译器前端。 它目前能够生成 Haskell、Agda、C、C++、Java 和 OCaml,以及 XML 表示。 给定...

    RRDiagram, 从代码或者BNF生成铁路图,从代码生成 BNF.zip

    RRDiagram, 从代码或者BNF生成铁路图,从代码生成 BNF RRDiagram从...rtc图是一个Java库,它从代码中生成铁路图( 也称为语法图),从。 输出格式是一个非常 compact SVG图像,可以集成到网页中,并且规则可以包含链接。R

    mmm.rar_BNF LL1_ll1_ll1 java

    本文将深入探讨与标题"mmm.rar_BNF LL1_ll1_ll1 java"相关的知识点,主要围绕BNF(巴科斯范式)、LL1文法以及它们在Java编程语言中的实现。 首先,BNF(巴科斯范式)是描述形式语法规则的一种方法,由荷兰计算机...

    sql-92-bnf.tar.gz_BNF SQL92_bnf_sql b_sql server bnf_sql92 bnf

    BNF(巴科斯范式)是一种形式语言的描述方法,全称为Backus-Naur Form,用于定义计算机语言的语法规则。在SQL-92 BNF中,我们可以通过这种形式化的描述理解SQL-92的语法结构。 "sql-92.bnf.html"这个文件很可能是对...

    C语言(子集)的BNF文法描述

    `statement`是程序中的基本执行单元,可以是空语句、复合语句、表达式语句、选择语句(`IF`和`ELSE`)、迭代语句(`WHILE`和`FOR`循环)或跳转语句(`CONTINUE`、`BREAK`、`RETURN`)。表达式语句通常以分号结尾,而...

    C语言BNF语法的图形化展示

    - 如`for`循环、`while`循环等,用于重复执行一段代码直到满足特定条件。 - **跳转语句 (Jump Statement)** - 如`break`、`continue`、`return`等,用于控制程序的流程。 #### 3. 预处理指令 (Preprocessor ...

Global site tag (gtag.js) - Google Analytics