Java代写,java作业代写:100%原创代码
当前位置:以往案例 > >CS案例:案例编译原理java实现+Report
2019-01-26

Objectives.

1. Support multiline comments.

2. Support additional tokens (reserved words, operators, and separators).

3. Support long and double literals.

In this project, you will only be updating the hand-crafted scanner, which means that the only program files you will be modifying under $j/j–/src/jminusminus are TokenInfo.java and Scanner.java.

Run the following command inside the $j directory to compile the j– compiler with your changes.

$ ant clean com pile jar

Run the following command to compile (just scan for now) a j– program P.java using the j– compiler.

$ sh $j /j -/ bin /j -t P . java

which only scans P.java and prints the tokens in the program along with the line number where each token appears.


Problem 1. (Multiline Comment ) Add support for multiline comment, where all the text from the ASCII characters /* to the ASCII characters */ is ignored.

$   $j /j - -/ bin /j - -   -t   tests / M ultiL ineC om m ent . java
5 : public = public
5 : class = class
5 :   < IDENTIFIER >   =   M ultiL ineC om m ent 5 : { = {
9 :  public  = public
9 : static =  static
9 : void = void
9 :   < IDENTIFIER >   =   main
9 : ( = (
9 :   < IDENTIFIER >   =   S tring
9 :  [  = [
9 :  ]  = ]
9 :   < IDENTIFIER >   =   args
9 :  )  = )
9 :  {   = {
13 :  }  = }
14 :  }  = }
15 : < EOF > = < EOF >

Problem 2. (Reserved Words) Add support for the following reserved words.

break

case

catch

continue

default

do

double

final

finally

for

im plem ents

interface

long

sw itch

throw

throw s

try

$ $j /j - -/ bin /j - - -t tests / R eserved W ords . java
1 : break = break
1 : case = case
1 : catch = catch
2 : continue = continue
2 : default = default
2 : do = do
3 : double = double
3 : final = final
3 : finally = finally
4 : for = for
4 :   im plem ents   =   im plem ents
4 : interface = interface



Problem 3. (Operators) Add support for the following operators.

?

~

!=

/

/=

-=

*=

=

>>

> >=

> > >

> > >=

>=

<<

< <=

<

^

^=

|

|=

||

&

&=

$ $j /j - -/ bin /j - - -t tests / O perators . java 1 : ? = ?
1 :  ~   = ~
1 : != = !=
1 : / = /
1 :   /=   =   /=
2 :  -=  = -=
2 :  -- =  --
2 :  *=  = *=
2 : =
2 : =  = =
3 :  >>  = >>
3 : > >=  =  > >=
3 : > > >  =  > > >
3 : > > >= = > > >=
3 :  >=  = >=
4 :  << = << 4 : < <= = < <= 4 : < = < 4 : ^ = ^ 4 : ^= = ^= 5 : | = | 5 : |= = |= 5 : || = || 5 : & = & 5 : &= = &= 6 : < EOF > = < EOF >

Problem 4. (Separators) Add support for the separator : (colon).

 
$ $j /j - -/ bin /j - - -t tests / S eparators . java 1 : ; = ;
2 :  :  = :
3 :  , = ,
4 : . =   .
5 :  [  = [
5 :  {   = {
5 :  (  = (
5 :  )  = )
5 :  }   = }
5 :  ]  = ]
6 : < EOF > = < EOF >

Problem 5. (Literals) Add support for (just decimal for now) long and double literals.


< int_literal >   =   0   |   (1 -9)   {0 -9}   //   decim al
 
< long_literal > = < int_literal > ( l | L )
 
< digits > = (0 -9) {0 -9}
 
< exponent > = ( e | E ) [(+ | -)] < digits >
 
< suffix > = d | D
 
< double_literal > = < digits > . [< digits >] [< exponent >] [< suffix >]
| . < digits > [< exponent >] [< suffix >]
| < digits > < exponent > [< suffix >]
| < digits > [< exponent >] < suffix >

$ $j /j - -/ bin /j - - -t tests / L iterals . java
1 :   < IN T _LIT E R A L >   =   0
1 :   < IN T _LIT E R A L >   =   2
1 :   < IN T _LIT E R A L >   =   372
2 : < L O N G _L IT E R A L > = 1996 l
2 : < L O N G _L IT E R A L > = 777 L
2 : < D O U B L E _L IT E R A L > = .3 D
3 : < D O U B L E _L IT E R A L > = 3.14
3 : < D O U B L E _L IT E R A L > = 6.022137 e +23
3 : < D O U B L E _L IT E R A L > = 1e -9 d
4 : < EOF > = < EOF >

Files to Submit

1. j–.tar.gz (j– source tree as a single gzip file)

2. report.txt (project report)

 
$  cd $j /j --
$  ant clean
$ cd ..
$ tar - cvf j - -. tar j - -/*
$ gzip j - -. tar

在线提交订单