r02.dvi

Similar documents
ohp02.dvi

ohp07.dvi

K227 Java 2

r1.dvi

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

: : : TSTank 2

I java A

1 Java Java GUI , 2 2 jlabel1 jlabel2 jlabel3 jtextfield1 jtextfield2 jtextfield3 jbutton1 jtextfield1 jtextfield2 jtextfield3

明解Javaによるアルゴリズムとデータ構造

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

新・明解Java入門

新・明解Javaで学ぶアルゴリズムとデータ構造

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

1.ppt

8 if switch for while do while 2

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");


Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

Java演習(4) -- 変数と型 --

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

ex01.dvi

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

Z...QXD (Page 1)

JavaプログラミングⅠ

JavaプログラミングⅠ

Java (5) 1 Lesson 3: x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java , 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flow

解きながら学ぶJava入門編

( ) p.1 x y y = ( x ) 1 γ γ = filtergamma.java import java.applet.*; public class filtergamma extends Applet{ Image img; Image new_img; publi

問題1 以下に示すプログラムは、次の処理をするプログラムである

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

Java演習(2) -- 簡単なプログラム --

2

データ構造とアルゴリズム論

Java updated

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

アルゴリズムとデータ構造1

ALG2012-F.ppt

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Microsoft Word - keisankigairon.ch doc

:30 12:00 I. I VI II. III. IV. a d V. VI

新・明解Javaで学ぶアルゴリズムとデータ構造

2

ex01.dvi

明解Javaによるアルゴリズムとデータ構造

問題1 以下に示すプログラムは、次の処理をするプログラムである

: gettoken(1) module P = Printf exception End_of_system (* *) let _ISTREAM = ref stdin let ch = ref ( ) let read () = (let c =!ch in ch := inp

プログラムの基本構成

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

JavaプログラミングⅠ

Java講座

2.2 Java C main Java main 2 C 6 C Java 3 C Java ( ) G101Hello.java G101Hello main G101Hello.java /* G101Hello */ class G101Hello { /* main */ public s

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一

プログラミングA

untitled

untitled

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

(Eclipse\202\305\212w\202\324Java2\215\374.pdf)

ALG ppt

r9.dvi

JAVA 11.4 PrintWriter 11.5

:30 12:00 I. I VI II. III. IV. a d V. VI

tkk0408nari

untitled

oop1

Java演習(6) -- 条件分岐 --

ALG2012-A.ppt

Thread

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

(Java/FX ) Java CD Java version Java VC++ Python Ruby Java Java Eclipse Java Java 3 Java for Everyone 2 10 Java Midi Java JavaFX Shape Canvas C

Microsoft PowerPoint ppt

1 (2 * 3) 1 2 * 3 Preorder In order Post order 1 * 1 * Breadth-first Depth-first * * 3 Preorder: 1 * 2 3 In order: 1 2 * 3 Post orde

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

PowerPoint Presentation

r3.dvi

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

文字列操作と正規表現


JavaプログラミングⅠ

haskell.gby

ohp08.dvi

デジタル表現論・第4回

プログラミング入門1

JavaプログラミングⅠ


226

プログラミング入門1

デジタル表現論・第6回

2

Programming-C-9.key

オブジェクト指向プログラミング・同演習 5月21日演習課題

Transcription:

172 2017.7.16 1 1.1? X A B A X B ( )? IBMPL/I FACOM PL1 ( ) X ( ) 1.2 1

2-0 ( ) ( ) ( ) (12) ( ) (112) (131) 281 26 1 (syntax) (semantics) ( ) 2 2.1 BNF BNF(Backus Normal Form) Joun Backus (grammer) English grammer grammer for programming language X BNF (metasymbol)? C + (? BNFC + 1 (meta) 1 C ( ) BNF ( ) 2

::= ( ) { ::= int double char void * ::= void ::=, ::= [] ::= C C (nonterminal symbol) int (termnal symbol) ::= BNF ( ) ( ) BNF ( ) ::= 1 ( ) { C? C (main x ) ( ) 2 int doublecharvoid? * int int* int* int** * BNF ( ) 3 void( ) 4 ( 1),,,, 5 ( )[] 6 ( ) 1 2-1 C BNF a. b. c. d. 3

2.2 BNF ::= ǫ a a0 a a a a a a ǫ == a a a a a a 1(1) (a) ( ǫ) (b) (c) ( a ::= a ) (syntax tree) (1) (2) (3) (4) (5) a a a a a a a * a + 1 a * a + 1 a * a + 1 1: ::= ǫ a a0 1(2) ::= + * 1 a a * a + 1 1(3)(4) 2 (ambiguous) 2? (3) ::= + ::= * ::= 1 a 1(5) 1 a1 1 4

2-2 a. a + a * a + 1 a + 1 + a * a b. a + a + a ( ) c. ::= 1 a ( ) d. ( ) ::= ǫ ::= ; while ( ) if ( ) { while if e. ::= if ( ) else 2 C Java 3 3.1 (syntax checker)java 2 1 BNF prog ::= ǫ ab prog ab ::= a b prog BNF <program> BNF ab2 0 % java Sam21 abab true % java Sam21 aba false % java Sam21 true % 2 5

(syntax checker) 3.2 Toknizer Toknizer 1 Toknizer class CharToknizer { String str, tok; int pos = -1; boolean eof = false; public CharToknizer(String s) { str = s; fwd(); public boolean iseof() { return eof; public String curtok() { return tok; public boolean chk(string s) { return tok.equals(s); public void fwd() { if(eof) { return; pos += 1; if(pos >= str.length()) { eof = true; tok = "$"; return; tok = str.substring(pos, pos+1); public boolean chkfwd(string s) { if(chk(s)) { fwd(); else { return false; Toknizer str pos pos-1 fwd() fwd() eof pos1 eof ( 1 ) length()substring() API chkfwd() chk() OK fwd() ( 3.3 static static Java static 2 MyClass mainmethod1 static MyClass main() method1 MyClass c = new MyClass(...) c.methods1(...) ( ) static 6

public class MyClass { static int sx; static int sy; int ix; int iy; public static void main(string[] args) {...... public void method1(...) {...... class Innter {... static class StaticInnter {... NG OK 2: static sx/syix/iy ix/iy 1 mehotd1 static main sx/systatic 1 ( )method1 main static 3 (inner class) static static static ix/iy static ( ) static static 3.4 main 1 CharToknizer static tok tok prog() ( ) tok.iseof() import java.util.*; import java.io.*; public class Sam21 { 3 MyClass.sx 7

static CharToknizer tok; public static void main(string[] args) throws Exception { tok = new CharToknizer(args[0]); System.out.println(prog() && tok.iseof()); static boolean prog() { return ab() && prog(); else { static boolean ab() { return tok.chkfwd("a") && tok.chkfwd("b"); // CharToknizer 2 BNF 2 1. P (true ) P false 2. P true EOF ( ) (recursive descent parsing) prog() ( ) 1 ( ) prog ::= ǫ ab prog ǫ ( ) true ab ( a ) OK ab() prog() OK ǫ true ab() 2 ab ::= a b a b fwd() checkfwd() false 3 8

S ::= T11 x T13 y T22 T3 static boolean s() { if(t1 chosen) { return t11() && tok.chkfwd("x") && t3(); else if(t2 chosen) { return tok.chkfwd("y") && t22(): else if(t3 chosen) { return t3(); else { 3: S s() S if-else ǫ else (ǫ 1 else ) true true tok.chkfwd() ( ) tok.chkfwd() prog() true prog() 2-3 a. prog ::= ǫ ab prog ab ::= a bb b. prog ::= a a prog c. prog ::= ǫ Aa bb prog aa ::= a a aa bb ::= b b bb d. prog ::= 1 ( prog ) e. prog ::= term term op prog term ::= a 1 ( prog ) op ::= + - * / f. 9

3.5 2-3 2-3 ( ) a. a bb static boolean prog() { if(tok.chk("a") tok.chk("b")) { return ab() && prog(); else { static boolean ab() { return tok.chkfwd("a"); else { return tok.chkfwd("b") && tok.chkfwd("b"); prog() ab() a b ab() b. a1 a ( ) a static boolean prog() { tok.fwd(); return prog(); else { else { return false; a prog() ture a false c. aa()bb() prog() static boolean prog() { return aa() && bb() && prog(); else { 10

static boolean aa() { tok.fwd(); return aa(); else { else { return false; static boolean bb() { if(tok.chk("b")) { tok.fwd(); if(tok.chk("b")) { return bb(); else { else { return false; d. static boolean prog() { if(tok.chk("1")) { tok.fwd(); else if(tok.chk("(")) { return tok.chkfwd("(") && prog() && tok.chkfwd(")"); else { return false; 1 BNF e. ( ) prog static boolean prog() { if(term()) { 11

if(tok.chk("+") tok.chk("-") tok.chk("*") tok.chk("/")) { return op() && prog(); else { else { return false; static boolean term() { tok.fwd(); else if(tok.chk("1")) { tok.fwd(); else { return tok.chkfwd("(") && prog() && tok.chkfwd(")"); static boolean op() { return tok.chkfwd("+") tok.chkfwd("-") tok.chkfwd("*") tok.chkfwd("/"); prog() 2-4 e. a. CJava 1 b. if c. d. 2-5 Expr prog ( ) a. prog ::= { statlist statlist ::= ǫ stat statlist stat ::= Expr ; { statlist b. stat stat ::= w ( Expr ) stat d stat w ( Expr ) ; c. stat stat ::= i ( Expr ) stat i ( Expr ) stat e stat d. 12

4 2A ( )1 (y-kuno@uec.ac.jp) PDF LaTeX 2 Q1. BNF Q2. Q3. ( ) 13