Humanista w twoim linuksie
Upcoming SlideShare
Loading in...5
×
 

Humanista w twoim linuksie

on

  • 494 views

Humanista w twoim linuksie - wykład podczas Dni Wolnego Oprogramowania - Bielsko 2012

Humanista w twoim linuksie - wykład podczas Dni Wolnego Oprogramowania - Bielsko 2012

Statistics

Views

Total Views
494
Views on SlideShare
478
Embed Views
16

Actions

Likes
0
Downloads
1
Comments
0

3 Embeds 16

http://www.linkedin.com 13
https://www.linkedin.com 2
http://www.slashdocs.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-NoDerivs LicenseCC Attribution-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Humanista w twoim linuksie Humanista w twoim linuksie Presentation Transcript

  • Humanista w twoim Linuksie, czyli nie tylko  o jądrach ale i języku słów kilka Adam Przybyła <adam@ertel.com.pl> (mail i JID) (Creative Commons CC-by-nd) Dni Wolnego Oprogramowania - Bielsko 2012
  • Gandhi i jego SwaradżMonopol solny obcych kor ... kompaniiMarsze solneRodzime tkactwo – własne narzędziaBierny opórCzy to nie brzmi znajomo?
  • Swaradź, swaraj (z sanskrytu swaradźia ­  "panowanie, rząd, samorząd"), hasło  wysunięte 1906 na sesji Indyjskiego  Kongresu Narodowego, 1920 wpisane do jego  programu. Wolność ale także w sensie  ekonomicznym. 
  • Jądro ciemności czyli co tkwi w systemach  LinuksowychJądro – czyli systemInterpretery Python, Perl, PhpFiltry Awk, Sed, Tr, Grep, Translatory Flex, Bison, ANTLR, M4
  • [adam@tao ~]$ file {/usr,}/bin/*|cut ­f2­ ­d: |awk {print $1,$2}|sort |uniq ­c|sort  ­rn   2008 ELF 32­bit    315 POSIX shell    311 symbolic link    105 a /usr/bin/python     95 a /usr/bin/perl     21 Bourne­Again shell     16 a python     13 setuid ELF      5 setuid executable,      4 setgid ELF      3 setgid executable,      3 a perl[adam@tao ~]$
  •  Pliki weryfikowalne ­ XMLSAXDOMPULL
  • Opis CSV w EBNFCSV file­­­­­­­­file         ::= [ header ] { line }header       ::= [ { entry separator } entry ] newlineline         ::= [ { entry separator } entry ] newlineentry        ::= character+ | { character* " separator " } | " entry  newline entry "newline      ::= nseparator    ::= ,character    ::= a|b|..|A|B|..|0|1|..escapedQuote ::= ""
  • Flex i BisonFlex – analizator leksykalnyRozszerzona wersja programu lexGeneruje tablice przejśćParsery LR i LL
  • Gramatyka pliku definicji{definicje}%%{reguły}%%{procedury użytkownika}
  • Plik konfiguracyjny analizatora %% leksylalnego,                     {return COMMA;}n                    {return NEWLINE;}rn                  {return NEWLINE;}[^,nr]+             {return ITEM;}
  • Kod Bisona%token COMMA NEWLINE ITEM%%csv_file : line_list | line_list line;line_list : line_list line newline | line newline |  line_list newline | newline;line : line comma | line item | item | comma;comma : COMMA ;newline : NEWLINE;item : ITEM ;
  • Program wynikowy we Flexstatic yyconst flex_int32_t yy_ec[256] =   {   0,        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,        1,    1,    3,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    4,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,[ciach]
  • Program wynikowy we Bisonstatic const yytype_uint8 yytranslate[] ={       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  • Problemy analizyShift/ReduceReduce/reduceStany początkoweSemantyczne predykaty a[i] (Ruby)
  • Flex z kernelemFiltr klasyfikujący do kernelahttps://github.com/AdamPrzybyla/layer7­flexKilka razy szybsze rozwiązanie niż wyrażenia  regularne niż oryginalne rozwiązanie
  • Analizator leksykalny ANTLRPCTTSDla leniwychAnalizator LL(*)Przejrzysty kodGeneracja kodu Java,c#,Python,C++
  • Tryby pracy ANTLRAnalizator leksykalnyTworzenie ASTWalker ASTGenerowanie plików graphvizPrzetwarzanie ASTJęzyk template
  • Przetwarzanie drzew ASTKompilator c kiedyś: Źródło w C C z rozwiniętymi makrami Asembler Plik .o + linkowanieKompilator C teraz: Kolejne modyfikacje drzew AST
  • Przepływ w parserze ANTLR
  • Język dziedzinowy ­ DSLGraphviz ­ DOTYaccSQLHTMLVHDL
  • Edytor ANTLRWorks
  • Gramatyka CSV w ANTLRgrammar csv;options {    language=Python; }file : record (NEWLINE record)* EOF ;record : (quoted_field | unquoted_field) (COMMA (quoted_field | unquoted_field))* ;quoted_field : DQUOTE ( CHAR | COMMA | DQUOTE DQUOTE | NEWLINE)*  DQUOTE ;unquoted_field : CHAR* ;CHAR : u0000 .. u0009 | u000b .. u000c | u000e .. u0021 | u0023 ..  u002b     | u002d .. uffff ;COMMA : u002c ;DQUOTE : u0022 ;NEWLINE : u000d? u000a | u000d ;
  • Zrozumiały kod (Java)case CHAR:                    {  alt5=1;                     }                    break;                case COMMA:                    {   alt5=2;                     }                    break;                case NEWLINE:                    {  alt5=4;                    }                    break;
  • Wywołanie funkcji – jak w  ręcznych parserachif alt2 == 1:                 # csv.g:26:8: quoted_field                    pass                    self._state.following.append(self.FOLLOW_quoted_field_in_record57)                    self.quoted_field()                    self._state.following.pop()
  • Innowacja wg KalamaKto to jest Abdul Kalam?Open SourcePrace nad językiemTechnologie satelitarne
  • Pytania?