Chomski - Chomski
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto problémech na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
Paradigma | skriptovací jazyk |
---|---|
Navrhl | mj biskup |
Poprvé se objevil | 2007 |
Psací disciplína | žádný; všechna data jsou považována za řetězec |
OS | Cross-platform |
webová stránka | čmelák |
Hlavní, důležitý implementace | |
čmelák | |
Ovlivněno | |
Sed, Páni |
analýza virtuálního stroje (dříve nazývané „chomski“ po Noam Chomsky ) a říz odkazují na oba a příkazový řádek počítačový jazyk a obslužný program (tlumočník pro daný jazyk), který lze použít k analýze a transformaci textových vzorů a (formální matematický ) jazyky. Obslužný program čte vstupní soubory znak po znaku (postupně) a aplikuje operaci, která byla zadána pomocí příkazový řádek nebo a pep skripta poté odešle linku. Byl vyvinut od roku 2006 v jazyce C. Pep odvozil řadu nápadů a syntaxových prvků Sed, editor textového proudu příkazového řádku.
Funkce
Jazyk analyzátoru vzorů využívá mnoho nápadů převzatých z sed, editor streamu Unix. Například sed zahrnuje dvě virtuální proměnné nebo datové vyrovnávací paměti, známé jako „vzorový prostor“ a „zadržovací prostor“. Tyto dvě proměnné představují extrémně jednoduché virtuální stroj. V pepovém jazyce byl tento virtuální stroj rozšířen o několik nových vyrovnávacích pamětí nebo registry spolu s řadou příkazů pro manipulaci s těmito buffery.
Analýza virtuálního stroje zahrnuje a páska datová struktura stejně jako a zásobník (datová struktura), spolu s "pracovním prostorem" (což je ekvivalent sed "vzorového prostoru" a řady dalších vyrovnávacích pamětí menšího významu. Tento virtuální stroj je navržen speciálně tak, aby byl vhodný pro analýzu formální jazyky. Tento analýza proces tradičně zahrnuje dvě fáze; the lexikální analýza fáze a formální gramatika fáze. Během fáze lexikální analýzy jako série žetony jsou generovány. Tyto tokeny se poté použijí jako vstup pro sadu formálního pravidla gramatiky. Virtuální stroj chomski používá zásobník k zadržení těchto tokenů a používá páskovou strukturu k uchování atributů těchto analyzovaných tokenů. V pep skriptu jsou tyto dvě fáze, lexing a parsing, sloučeny do jednoho souboru skriptu. K manipulaci s různými datovými strukturami virtuálního stroje se používá řada příkazových slov.
Účel a motivace
Účelem nástroje pep je analyzovat a transformovat textové vzory. Textové vzory odpovídají pravidlům poskytovaným ve formálním jazyce a zahrnují mnoho bezkontextových jazyků. Zatímco tradiční unixové nástroje (např awk, sed, grep atd.) zpracovává text po jednom řádku a pro vyhledávání nebo transformaci textu používá regulární výrazy, nástroj pep zpracovává text po jednom znaku a může používat bezkontextové gramatiky transformovat (nebo kompilovat ) text. Společně s Filozofie Unixu, nástroj pep funguje jednoduše textové proudy, zakódováno podle národního prostředí místního počítače a produkuje jako výstup další proud prostého textu, který umožňuje použití nástroje pep jako součásti standardního kanálu.
Motivací pro vytvoření nástroje pp a virtuálního stroje bylo umožnit psaní skriptů pro analýzu, spíše než se uchýlit k tradičním nástrojům pro analýzu, jako jsou Lex a Yacc, nebo k jejich mnoha variantám a vylepšením, jako je Antlr.
Používání
Následující příklad ukazuje typické použití analyzátoru vzorů pep, kde -E Možnost označuje, že následuje výraz analýzy vzorku:
$ pep-e 'číst; "/" {číst; "*"{ dokud "*/"; Průhledná; }} tisk; Průhledná;' input.c> output.c
Ve výše uvedeném skriptu víceřádkové komentáře C (/* ... */
) jsou odstraněny ze vstupního proudu.
Nástroj pro analýzu vzorů byl navržen pro použití jako filtr v potrubí: například,
$ generovat.data | pep-e '"x" {clear; přidat "y";} print; clear;'
To znamená generovat data a poté provést malou změnu nahrazení X s y. Tato funkce však není aktuálně k dispozici, protože říz nástroj také zahrnuje komplexní prohlížeč skriptů a debugger, takže nemůže číst z piped standardního vstupu.
Několik příkazů lze dát dohromady do souboru s názvem, například substitute.pss a poté se aplikují pomocí -F možnost číst příkazy ze souboru:
$ soubor pep -f substitute.pss> výstup
Kromě substituce jsou možné i jiné formy jednoduchého zpracování. Například následující používá příkaz akumulátor-přírůstek a + a počet příkazy pro počítání počtu řádků v souboru:
$ pep-e '"" {a +;} vymazat; (eof) {count; print;} ' textil
Jsou možné komplexní „pepové“ konstrukce, které mu umožňují sloužit jako jednoduchý, ale vysoce specializovaný programovací jazyk. pep má dva příkazy řízení toku (kromě testovacích struktur (eof)
, [třída]
, ==
atd.), jmenovitě .reparse a . restart příkazy, které skočí zpět na analyzovat> štítek (žádné další štítky nejsou povoleny).
Dějiny
Myšlenka na pep stroj a jazyk vznikla z omezení motorů regulárního výrazu a sed, který používá a řádek po řádku paradigma a omezení při analýze vnořených vzorů textu pomocí regulárních výrazů. Pep se vyvinul jako přirozený postup od grep a sed příkaz. Vývoj začal přibližně v roce 2006 a pokračuje.[1]
Omezení
Skriptovací jazyk pro analýzu vzorů není obecným programovacím jazykem. Stejně jako sed je určen pro omezený typ použití. Interpret a spustitelný soubor aktuálně nepodporují unicode řetězce, protože implementace používá standard C pole znaků. Skripty však lze také přeložit do jiných jazyků (například java a javascript), které podporují text v unicode. Vzhledem k tomu, že virtuální stroj za jazykem analyzátoru vzorů je podstatně složitější než jazyk sed je nutné umět ladit skripty. Tato funkce je v současné době poskytována v rámci spustitelného souboru typu „pep“.
Viz také
Reference
- ^ Osobní vzpomínka vývojáře (M.J. Bishop)