semicolumn
Transkript
Gramatika jazyku Pepina Jan Dvořák (dvoraj19@fel, dvoraj42) Očíslování pravidel: # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 (startovní pravidlo: blokprikazu ) Název pravidla blokprikazu Hodnota prirazeni forcykl whilecykl docykl ifpodm deklarace konzole ukonceni switch vyraz ndmd vyrazc UVOZOVKY STROBSAH UVOZOVKY PLUS ndmd vyrazc MINUS ndmd vyrazc vyrazc ndmd ndmdc zavrk ndmdc TIMES zavrk ndmdc DIVIDED zavrk ndmdc MODULO zavrk ndmdc INTDIV zavrk ndmdc zavrk switch case LPAR vyraz RPAR IDENT znamenko hodnota INTEGER_CONST DOUBLE_CONST SELECT CASE LPAR IDENT RPAR case caseelse ENDSELECT blokprikazu CASE znamenko INTEGER_CONST COLON blokprikazu case caseelse DEFAULT COLON blokprikazu prirazeni podminka forcykl forstep IDENT ASSIGN vyraz SEMICOLON blokprikazu vyraz porovnani vyraz FOR LPAR IDENT ASSIGN znamenko INTEGER_CONST TO znamenko INTEGER_CONST forstep RPAR blokprikazu NEXT blokprikazu STEP znamenko INTEGER_CONST whilecykl docykl ifpodm ifelse WHILE LPAR podminka RPAR blokprikazu WEND blokprikazu DO blokprikazu DOWHILE LPAR podminka RPAR blokprikazu IF LPAR podminka RPAR THEN blokprikazu ifelse ENDIF blokprikazu ELSE blokprikazu deklarace typy typy IDENT listident SEMICOLON blokprikazu INTEGER DOUBLE STRING COMMA IDENT listident hodnota listident konzole vypis znamenko porovnani ukonceni vypis LPAR vyraz RPAR SEMICOLON blokprikazu PRINT PRINTLN PLUS MINUS EQ NE GT LT GE LE END SEMICOLON blokprikazu BREAK SEMICOLON blokprikazu Množina FIRST{} # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 Krok 1 Krok 2 First(prirazeni) First(forcykl) First(whilecykl) First(docykl) First(ifpodm) First(deklarace) First(konzole) First(ukonceni) First(switch) Є First(ndmd) UVOZOVKY PLUS MINUS Є First(zavrk) TIMES DIVIDED MODULO INTDIV Є LPAR IDENT First(znamenko) INTEGER_CONST DOUBLE_CONST SELECT CASE Є DEFAULT Є IDENT First(vyraz) FOR STEP Є WHILE DO IF ELSE Є First(typy) INTEGER DOUBLE STRING COMMA Є First(vypis) PRINT PRINTLN PLUS MINUS Є EQ NE GT LT GE LE END BREAK IDENT FOR WHILE DO IF Krok 3 INTEGER, DOUBLE, STRING PRINT, PRINTLN END, BREAK SELECT LPAR, IDENT, PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST LPAR, IDENT, First(znamenko) PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST PLUS, MINUS INTEGER_CONST, DOUBLE_CONST LPAR, IDENT, PLUS, MINUS, UVOZOVKY INTEGER, DOUBLE, STRING PRINT, PRINTLN Výsledek { IDENT } { FOR } {WHILE } {DO} { IF } { INTEGER, DOUBLE, STRING } { PRINT, PRINTLN } { END, BREAK } { SÉLECT } {Є} { LPAR, IDENT, PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST } { UVOZOVKY} { PLUS } { MINUS } {Є} { LPAR, IDENT, PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST } { TIMES } { DIVIDED } { MODULO } { INDTDIV} {Є} { LPAR } {IDENT } { PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST } { INTEGER_CONST } { DOUBLE_CONST } { SELECT} { CASE } {Є} { DEFAULT } {Є} { IDENT } { LPAR, IDENT, PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST, UVOZOVKY} { FOR } { STEP } {Є} { WHILE } { DO } { IF } { ELSE } {Є} { INTEGER, DOUBLE, STRING } { INTEGER } { DOUBLE } { STRING } { COMMA } {Є} { PRINT, PRINTLN} { PRINT } { PRINTLN } { PLUS } { MINUS } {Є} { EQ } { NE } { GT } { LT } { GE } { LE } { END } { BREAK } # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 Množina FOLLOW{} Pravidlo blokprikazu Krok 1 Є vyraz vyrazc ndmd ndmdc zavrk hodnota switch case caseelse prirazeni podminka forcykl forstep whilecykl docykl ifpodm ifelse deklarace typy listident konzole vypis znamenko porovnani ukonceni Krok 2 Krok 3 Krok 4 Folow(switch), First(case), Follow(caseelse), Follow(prirazeni), NEXT, Follow(forstep), WEND, DOWHILE, Follow(whilecykl), Follow(docykl), First(ifelse), Follow(ifpodm), Follow(ifelse), Follow(deklarace), Follow(konzole), Follow(ukonceni) First(porovnani), RPAR, SEMICOLON, Follow(podminka), Follow(vyraz) First(vyrazc) Follow(ndmd) First(ndmdc) Follow(zavrk) Follow(blokprikazu) First(caseelse) ENDSELECT Follow(blokprikazu) RPAR Follow(blokprikazu) RPAR Follow(blokprikazu) Follow(blokprikazu) Follow(blokprikazu) ENDIF Follow(blokprikazu) IDENT SEMICOLON Follow(blokprikazu) LPAR First(hodnota), INTEGER_CONST First(vyraz) Follow(blokprikazu) NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, First(caseelse) DEFAULT EQ, NE, GT, LT, GE, LE EQ, NE, GT, LT, GE, LE RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE PLUS, MINUS, RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE, PLUS, MINUS TIMES, DIVIDED, MODULO,INTDIV, RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE, PLUS, MINUS Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT ENDSELECT PLUS, MINUS, Follow(vyraz), Follow(vyrazc) TIMES, DIVIDED, MODULO,INTDIV, Follow(ndmd) DEFAULT, Follow(caseelse) Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT DOUBLE_CONST LPAR, IDENT, PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST, UVOZOVKY Pravidlo Výsledek blokprikazu vyraz vyrazc ndmd ndmdc zavrk hodnota switch case caseelse prirazeni podminka forcykl forstep whilecykl docykl ifpodm ifelse deklarace typy listident konzole vypis znamenko porovnani ukonceni { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE } { RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE } { PLUS, MINUS, RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE } { PLUS, MINUS, RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE } { TIMES, DIVIDED, MODULO,INTDIV, RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE, PLUS, MINUS } { TIMES, DIVIDED, MODULO,INTDIV, RPAR, SEMICOLON, EQ, NE, GT, LT, GE, LE, PLUS, MINUS } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { ENDSELECT, DEFAULT } { ENDSELECT } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { RPAR } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { RPAR } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { ENDIF } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { IDENT } { SEMICOLON } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } { LPAR } { INTEGER_CONST, DOUBLE_CONST } { LPAR, IDENT, PLUS, MINUS, INTEGER_CONST, DOUBLE_CONST, UVOZOVKY } { Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT } Є, NEXT, CASE, ENDSELECT, WEND, DOWHILE, ELSE, ENDIF, DEFAULT Tabulka přechodů – Rozkladová tabulka – LL(1) Tabulka 1: Černě: FIRST, červeně FOLLOW Pravidlo blokprikazu vyraz vyrazc ndmd ndmdc zavrk hodnota switch case caseelse prirazeni podminka forcykl forstep whilecykl docykl ifpodm ifelse deklarace typy listident konzole vypis znamenko porovnani ukonceni = + 11 13 16 21 24 - * / \ % 11 14 16 21 17 18 20 19 24 == != > < >= <= 15 15 15 15 15 15 21 21 21 21 21 21 ( ) , ; „ 11 STROBSAH SELECT 9 CASE 10 ENDSELECT 10 COLON DEFAULT 10 FOR 2 TO STEP NEXT 10 WHILE 3 WEND 10 DO 4 DOWHILE 10 END 8 BREAK 8 IF 5 THEN ELSE 10 ENDIF 10 INTEGER 6 DOUBLE 6 STRING 6 12 15 15 21 21 16 22 IDENT 1 11 INTEGER_CONST DOUBLE_CONST 11 11 16 16 16 23 24 25 24 26 33 33 PRINT 7 PRINTLN 7 48 49 48 50 27 28 33 33 33 29 31 29 30 32 33 33 34 36 35 37 38 39 40 41 42 43 42 44 42 45 46 47 51 52 53 54 55 56 57 58 59 60 61 53 Є 10
Podobné dokumenty
Tutoriál 3: Procedury Prostředí NetLogo ver. 3.1.4
provést. V našem případě po nových želvách požadujeme, aby nastavily svoji energii na
hodnotu 50. Rodí se tedy s určitou dávkou energie.
Když každá želva spustí proceduru „check-death“, pak dochází...
Přiřazovací problémy
zachycuje následující tabulka. Jejich cílem je, aby všichni dohromady strávili nad
vypracováním otázek co nejméně.
model:
sets:
student/S1,S2,S3/;
otazky/O1,O2,O3/;
prirazeni(student, otazky): x,ca...
Tutorial 3: Procedury
• Do pole Global variable (Globální proměnná) dialogového okna napište: ukazatenergii? Nezapomeňte na otazník. (Viz obrázek níže.)
Slovníček NetLogo
Vykoná první sadu příkazů. Nastane-li běhová chyba uvnitř prvních příkazů, NetLogo se nezastaví a
neupozorní na tuto chybu uživatele, ale přeskočí ji a místo toho vykoná druhou sadu příkazů.
V druh...
Symantec™ ApplicationHA
• Integrace s nástrojem VMware vCenter Site Recovery
Manager™ – Řešení ApplicationHA je integrováno
s nástrojem Site Recovery Manager, který v plánu
obnovení po zhroucení zajišťuje podporu aplikací...
Regulární výrazy
Regulární výrazy
Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze
1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihov...