辅导CSCE 322、辅导Java编程设计、ANTLR留学生讲解、Java程序调试

- 首页 >> 其他


Homework 01 (Due: Friday, February 15, 2019, 11 : 59 : 00PM Central

Time)

CSCE 322

1 Instructions

In this assignment, you will be required to scan, parse, and check the semantics of a file that encodes the

state of a variation of Connect Four. The definition of a properly formatted input file is given in Section 1.1.

You will be submitting one .java file and two .g4 (ANTLR) files via web hand-in.

1.1 File Specification

The file contains two (2) labeled sections: Moves and Game . Each section is enclosed by start and

end tags (/* and */, respectively).

Moves is an underscore-separated (_) list of numbered columns that appear between { and } tokens.

Valid Moves are numerical symbols.

Game contains a two-dimensional array of space-separated entries that uses numeric symbols (and

-) to encode the state of the game. Rows will be ended with a | and the Game will be begun with a

[ and ended with a ]. The two-dimensonal array contains numbers where that player (for example,

1 for Player 1) has played a piece and - for an empty space.

An example of a properly formatted file is shown in Figure 1.

moves /?

{ 5 10 9 4 1 2 10 10 2 2 1 9 1 3 }/game /

Figure 1: A properly formatted Connect Four (cnf) encoding

The assignment is made up of two parts: scanning the text of the input file and parsing the information

contained in the input file.

1.2 Scanning

Construct a combined grammar in a .g4 file that ANTLR can use to scan a supplied Connect Four

encoding. The logic in this file should be robust enough to identify tokens in the encoding and accurately

process any correctly formatted encoding. The rules in your .g4 file will be augmented with actions that

display information about the input file. An example of that output is specified in Section 2.

The purpose of the scanner is to extract tokens from the input and pass those along to the parser. For

the Connect Four encoding, the types of tokens that you will need to consider are given in Table 1.

1

Type Form

Section Beginning /*

Section Ending */

Section Title game and moves

Move Symbol One or more Numerical Symbols

Game Symbol - or One or more Numerical Symbols

Numerical Symbol 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9

Row Ending |

Game Beginning [

Game Ending ]

Moves Beginning {

Moves Ending }

White Space (to be ignored) spaces, tabs, newlines

Table 1: Tokens to Consider

1.2.1 Invalid Encodings

For invalid Connect Four encodings, the output SYNTAX PROBLEM ON LINE L should display. L would

be the line of input where the symbol was read. Your scanner should stop scanning the file after an

unrecognized token is found.

1.3 Parsing

Construct a combined grammar in a .g4 file that ANTLR can use to parse a supplied Connect Four

encoding. In addition to the rules for scanning, there are several parsing rules:

Each section appears once and only once. The sections may appear in either Moves /Game or

Game /Moves order.

There must be at least four (4) rows in a valid Game .

There must be at least four (4) columns in a valid Game .

You may assume that each row has the same number of columns, and each column has

the same number of rows.

There must be more than two (2) locations in the Moves section.

The semantics of a properly formatted Connect Four encoding are:

1. The Game must have at least 2 players

2. The Game must have between 6 and 10 (both inclusive) rows

3. The Game must have between 6 and 10 (both inclusive) columns

4. Extra Credit (10 points or Honors contract): Every move in the Moves section must be valid

(between 1 and the number of columns in the Game )

Page 2

2 Output

2.1 Scanner

Your .g4 file should produce output for both correctly formatted files and incorrectly formatted files. For

the correctly formatted file in Figure 1, the output would have the form of the output presented in Figure 2

Moves Section

Beginning of Section

Beginning of List

Number : 5

Number : 10

...

Number : 1

Number : 3

End of List

End of Section

Game Section

Beginning of Section

Start of Game

Space : Empty

Space : Empty

...

Space : Empty

End of Row

Space : Empty

...

Space : Empty

End of Row

Space : Empty

...

Space : Empty

End of Row

Space : Empty

Space : Empty

Space : Empty

Number : 2

Space : Empty

Space : Empty

Space : Empty

Number : 1

Space : Empty

Space : Empty

End of Game

End of Section

End of File

Figure 2: Truncated Output of Scanner for File in Figure 1

For a correctly formatted file in Part 2, the output would be: p pieces have been played where p

is the number of pieces in the Game . For the file in Figure 1, the output would be

2 pieces have been played.

2.1.1 Invalid Syntax & Semantics in Parsing

For invalid encodings in Part 2, the message SYNTAX PROBLEM ON LINE L should be displayed where L is

the line number where the error occurred. For a semantic rule violation, the output

SEMANTIC PROBLEM P should be displayed, where P is the number of the rule (from List 1.3) that was

Page 3

violated, but parsing should continue.

Syntax errors in Part 2 should be reported in the syntaxError method of

csce322assignment01partt02error.java.

3 Naming Conventions

The ANTLR file for the first part of the assignment should be named csce322assignment01part01.g4.

The ANTLR file for the second part of the assignment should be named csce322assignment01part02.g4.

Both grammars should contain a start rule named connectFour. The Java file for the second part of the

assignment should be named csce322assignment01part02error.java.

4 webgrader

The webgrader is available for this assignment. You can test your submitted files before the deadline

by submitting them on webhandin and going to http://cse.unl.edu/?cse322/grade, choosing the correct

assignment and entering your cse.unl.edu credentials

The script should take approximately 2 minutes to run and produce a PDF.

4.1 The Use of diff

Because Part 1 of this assignment only depends on the symbols in the file, the order in which they are

displayed should not be submission dependent. Therefore, diff will be used to compare the output of a

particular submission against the output of the solution implementation. In Part 2, the output is sorted

and the unique lines extracted, so the order and number of times a semantic error is reported will not

affect the diff.

5 Point Allocation

Component Points

Part 1 35

Part 2 65

Total 100

6 External Resources

ANTLR

Getting Started with ANTLR v4

ANTLR 4 Documentation

Overview (ANTLR 4 Runtime 4.7.2 API)

7 Commands of Interest

alias antlr4 =' java - jar / path / to / antlr -4.7.2 - complete . jar '

alias grun =' java org . antlr . v4 . gui . TestRig '

export CLASSPATH ="/ path / to / antlr -4.7.2 - complete . jar : $CLASSPATH "

antlr4 / path / to / csce322assignment01part0 #. g4

javac -d / path / for /. classfiles / path / to / csce322assignment01part0 #*. java

java / path / of /. classfiles csce322assignment01part02driver / path / to / inputfile

grun csce322assignment01part0 # connectFour - gui

Page 4

grun csce322assignment01part0 # connectFour - gui / path / to / inputfile

grun csce322assignment01part0 # connectFour

grun csce322assignment01part0 # connectFour / path / to / inputfile