flex
80_simpify_tags
/store/corp/SYN2015-RC3/csts-rules-frazrl-rules1-rulh1-tag-vid
, 121.277.800 pozic)grimm
(Supermicro)%{ #include <stdio.h> #include <string.h> #include <ctype.h> unsigned char slovo[1500]; %} %% \<MMt[^\>]*\>.{14}8 { strcpy(slovo,yytext); slovo[yyleng-13]=0; fprintf(yyout,"%s------------8",slovo); } \<MMt[^\>]*\>P7-.[34]--- { strcpy(slovo,yytext); slovo[yyleng-5]='-'; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>P6-.[23467] { strcpy(slovo,yytext); slovo[yyleng-2]='-'; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>P[1S]...[XZMIN][SP]3 { strcpy(slovo,yytext); slovo[yyleng-3]='-'; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>P[1S]...FP3 { strcpy(slovo,yytext); slovo[yyleng-3]='-'; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>Vs......[FPRX] { strcpy(slovo,yytext); slovo[yyleng-1]='-'; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>Vc.X...3 { strcpy(slovo,yytext); slovo[yyleng-1]='-'; slovo[yyleng-5]='-'; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>C\} { strcpy(slovo,yytext); slovo[yyleng-1]='='; fprintf(yyout,"%s",slovo); } \<MMt[^\>]*\>VB-X---X....... { strcpy(slovo,yytext); slovo[yyleng-15]=0; fprintf(yyout,"%sXX-------------",slovo); } \>[\-\+]?[0-9][^\<]*\<MMl[^\>]*\>[^\<]+\<MMt[^\>]*\>C[nlr].{13} { strcpy(slovo,yytext); slovo[yyleng-14]=0; fprintf(yyout,"%s=-------------",slovo); } \<MMl[^\>]*\>co\<MMt[^\>]*\>P4... { strcpy(slovo,yytext); slovo[yyleng-3]=0; fprintf(yyout,"%s---",slovo); } . ECHO; \n ECHO; %% main() { yylex(); }
#!/usr/bin/perl # use re 'debugcolor'; # use open ':utf8'; # use utf8; # binmode( STDIN, ':utf8' ); # binmode( STDOUT, ':utf8' ); # binmode( STDERR, ':utf8' ); while ($radek = <STDIN>) { $radek =~ s/(<MMt[^>]*>)P7-.([34]---)/$1P7--$2/g; $radek =~ s/(<MMt[^>]*>)P6-.([23467])/$1P6--$2/g; $radek =~ s/(<MMt[^>]*>Vs......)[FPRX]/$1-/g; $radek =~ s/(<MMt[^>]*>Vc.)X(...)3/$1-$2-/g; if ($radek =~ /<MMl[^>]*>co</) { $radek =~ s/(<MMt[^>]*>P4).../$1---/g; } $radek =~ s/(>([\-\+])?[0-9][^<]*<MMl[^>]*>[^<]+<MMt[^>]*>)C[nlr]............./$1C=-------------/; $radek =~ s/(<MMt[^>]*>)C}/$1C=/g; $radek =~ s/(<MMt[^>]*>P[1S]...)[XZMIN]([SP]3)/$1-$2/g; $radek =~ s/(<MMt[^>]*>P[1S]...)F(P3)/$1-$2/g; $radek =~ s/(<MMt[^>]*>)VB-X---X......./$1XX-------------/g; $radek =~ s/(<MMt[^>]*>..)............8/$1------------8/g; # odkomentováno 27.7.2016: zkratky bez dalšího určení print STDOUT "$radek"; }
if - else
bloků#!/usr/bin/perl # use re 'debugcolor'; # use open ':utf8'; # use utf8; # binmode( STDIN, ':utf8' ); # binmode( STDOUT, ':utf8' ); # binmode( STDERR, ':utf8' ); while ($radek = <STDIN>) { if ($radek =~ /<MMt[^>]*>.{14}8/) { $radek =~ s/(<MMt[^>]*>..).{12}8/$1------------8/; } if ($radek =~ /<MMt[^>]*>P[67]/) { $radek =~ s/(<MMt[^>]*>)P7-.([34]---)/$1P7--$2/g; $radek =~ s/(<MMt[^>]*>)P6-.([23467])/$1P6--$2/g; } elsif ($radek =~ /<MMt[^>]*>P[1S]/) { $radek =~ s/(<MMt[^>]*>P[1S]...)[XZMIN]([SP]3)/$1-$2/g; $radek =~ s/(<MMt[^>]*>P[1S]...)F(P3)/$1-$2/g; } elsif ($radek =~ /<MMt[^>]*>Vs/) { $radek =~ s/(<MMt[^>]*>Vs......)[FPRX]/$1-/g; } elsif ($radek =~ /<MMt[^>]*>Vc/) { $radek =~ s/(<MMt[^>]*>Vc.)X(...)3/$1-$2-/g; } elsif ($radek =~ /<MMt[^>]*>C[nlr]/) { $radek =~ s/(>([\-\+])?[0-9][^<]*<MMl[^>]*>[^<]+<MMt[^>]*>)C[nlr]............./$1C=-------------/; } elsif ($radek =~ /<MMt[^>]*>C}/) { $radek =~ s/(<MMt[^>]*>)C}/$1C=/; } elsif ($radek =~ /<MMt[^>]*>VB-X/) { $radek =~ s/(<MMt[^>]*>)VB-X---X......./$1XX-------------/g; } elsif ($radek =~ /<MMl[^>]*>co</) { $radek =~ s/(<MMt[^>]*>P4).../$1---/g; } print STDOUT "$radek"; }
extern crate lazy_static; extern crate regex; use std::io; use regex::Regex; use lazy_static::*; fn main() { loop { let mut radek = String::new(); match io::stdin().read_line(&mut radek) { Ok(0) => break, Ok(_) => make_replacement(radek), Err(e) => panic!(e) } // radek.clear(); } } fn make_replacement(mut radek: String) { lazy_static! { static ref ABBR_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>..).{12}8").unwrap(); static ref P7_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>P7-).(?P<s>[34]---)").unwrap(); static ref P6_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>P6-).(?P<s>[23467])").unwrap(); static ref P1SX_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>P[1S]...)[XZMIN](?P<s>[SP]3)") .unwrap(); static ref P1SF_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>P[1S]...)F(?P<s>P3)").unwrap(); static ref VS_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>Vs......)[FPRX]").unwrap(); static ref VC_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>Vc.)X(?P<s>...)3").unwrap(); static ref CNLR_REGEX: Regex = Regex::new(r"(?P<f>>([\-\+])?[0-9][^<]*<MMl[^>]*>[^<]+<MMt[^>]*>C)[nlr](?P<s>.{13})") .unwrap(); static ref CROM_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>C)\}").unwrap(); static ref VBX_REGEX: Regex = Regex::new(r"(?P<f><MMt[^>]*>)VB-X---X.{7}").unwrap(); static ref CO_REGEX: Regex = Regex::new(r"(?P<f><MMl[^>]*>co<MMt[^>]*>P4)...").unwrap(); } let mut after = ABBR_REGEX.replace_all(&radek, "$f------------8") .to_string(); radek = after; after = P7_REGEX.replace_all(&radek, "$f-$s").to_string(); radek = after; after = P6_REGEX.replace_all(&radek, "$f-$s").to_string(); radek = after; after = P1SX_REGEX.replace_all(&radek, "$f-$s").to_string(); radek = after; after = P1SF_REGEX.replace_all(&radek, "$f-$s").to_string(); radek = after; after = VS_REGEX.replace_all(&radek, "$f-").to_string(); radek = after; after = VC_REGEX.replace_all(&radek, "$f-$s-").to_string(); radek = after; after = CNLR_REGEX.replace_all(&radek, "$f=-------------").to_string(); radek = after; after = CROM_REGEX.replace_all(&radek, "$f=").to_string(); radek = after; after = VBX_REGEX.replace_all(&radek, "$fXX-------------").to_string(); radek = after; after = CO_REGEX.replace_all(&radek, "$f---").to_string(); radek = after; after = P1SF_REGEX.replace_all(&radek, "$f-$s").to_string(); radek = after; print!("{}",radek); }
Porovnání jazyků | ||||
---|---|---|---|---|
1byte | utf8 | |||
flex | 3m58.761s | 100 % | NA | |
Perl | 6m36.372s | 166 % | 14m29.309s | 364 % |
Opt. Perl | 4m50.576s | 122 % | 9m47.725s | 246 % |
Rust | NA | 9m07.683s | 229 % |