mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add sample Perl 6 files
This commit is contained in:
		
							
								
								
									
										23
									
								
								samples/Perl6/RoleQ.pm6
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								samples/Perl6/RoleQ.pm6
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| role q { | ||||
|     token stopper { \' } | ||||
|  | ||||
|     token escape:sym<\\> { <sym> <item=.backslash> } | ||||
|  | ||||
|     token backslash:sym<qq> { <?before 'q'> <quote=.LANG('MAIN','quote')> } | ||||
|     token backslash:sym<\\> { <text=.sym> } | ||||
|     token backslash:sym<stopper> { <text=.stopper> } | ||||
|  | ||||
|     token backslash:sym<miscq> { {} . } | ||||
|  | ||||
|     method tweak_q($v) { self.panic("Too late for :q") } | ||||
|     method tweak_qq($v) { self.panic("Too late for :qq") } | ||||
| } | ||||
|  | ||||
| role qq does b1 does c1 does s1 does a1 does h1 does f1 { | ||||
|     token stopper { \" } | ||||
|     token backslash:sym<unrec> { {} (\w) { self.throw_unrecog_backslash_seq: $/[0].Str } } | ||||
|     token backslash:sym<misc> { \W } | ||||
|  | ||||
|     method tweak_q($v) { self.panic("Too late for :q") } | ||||
|     method tweak_qq($v) { self.panic("Too late for :qq") } | ||||
| } | ||||
							
								
								
									
										22
									
								
								samples/Perl6/grammar-test.p6
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								samples/Perl6/grammar-test.p6
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| token pod_formatting_code { | ||||
|     $<code>=<[A..Z]> | ||||
|     '<' { $*POD_IN_FORMATTINGCODE := 1 } | ||||
|     $<content>=[ <!before '>'> <pod_string_character> ]+ | ||||
|     '>' { $*POD_IN_FORMATTINGCODE := 0 } | ||||
| } | ||||
|  | ||||
| token pod_string { | ||||
|     <pod_string_character>+ | ||||
| } | ||||
|  | ||||
| token something:sym«<» { | ||||
|     <!> | ||||
| } | ||||
|  | ||||
| token name { | ||||
|     <!> | ||||
| } | ||||
|  | ||||
| token comment:sym<#> { | ||||
|    '#' {} \N* | ||||
| } | ||||
							
								
								
									
										252
									
								
								samples/Perl6/test.p6
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										252
									
								
								samples/Perl6/test.p6
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,252 @@ | ||||
| #!/usr/bin/env perl6 | ||||
|  | ||||
| use v6; | ||||
|  | ||||
| my $string = 'I look like a # comment!'; | ||||
|  | ||||
| if $string eq 'foo' { | ||||
|     say 'hello'; | ||||
| } | ||||
|  | ||||
| regex http-verb { | ||||
|       'GET' | ||||
|     | 'POST' | ||||
|     | 'PUT' | ||||
|     | 'DELETE' | ||||
|     | 'TRACE' | ||||
|     | 'OPTIONS' | ||||
|     | 'HEAD' | ||||
| } | ||||
|  | ||||
| # a sample comment | ||||
|  | ||||
| say 'Hello from Perl 6!' | ||||
|  | ||||
|  | ||||
| #`{ | ||||
| multi-line comment! | ||||
| } | ||||
|  | ||||
| say 'here'; | ||||
|  | ||||
| #`( | ||||
| multi-line comment! | ||||
| ) | ||||
|  | ||||
| say 'here'; | ||||
|  | ||||
| #`{{{ | ||||
| I'm a special comment! | ||||
| }}} | ||||
|  | ||||
| say 'there'; | ||||
|  | ||||
| #`{{ | ||||
| I'm { even } specialer! | ||||
| }} | ||||
|  | ||||
| say 'there'; | ||||
|  | ||||
| #`{{ | ||||
| does {{nesting}} work? | ||||
| }} | ||||
|  | ||||
| #`«< | ||||
| trying mixed delimiters | ||||
| » | ||||
|  | ||||
| my $string = qq<Hooray, arbitrary delimiter!>; | ||||
| my $string = qq«Hooray, arbitrary delimiter!»; | ||||
| my $string = q <now with whitespace!>; | ||||
| my $string = qq<<more strings>>; | ||||
|  | ||||
| my %hash := Hash.new; | ||||
|  | ||||
| =begin pod | ||||
|  | ||||
| Here's some POD!  Wooo | ||||
|  | ||||
| =end pod | ||||
|  | ||||
| =for Testing | ||||
|     This is POD (see? role isn't highlighted) | ||||
|  | ||||
| say('this is not!'); | ||||
|  | ||||
| =table | ||||
|     Of role things | ||||
|  | ||||
| say('not in your table'); | ||||
| #= A single line declarator "block" (with a keyword like role) | ||||
| #| Another single line declarator "block" (with a keyword like role) | ||||
| #={ | ||||
|     A declarator block (with a keyword like role) | ||||
|   } | ||||
| #|{ | ||||
|     Another declarator block (with a keyword like role) | ||||
|   } | ||||
| #= { A single line declarator "block" with a brace (with a keyword like role) | ||||
| #=« | ||||
|     More declarator blocks! (with a keyword like role) | ||||
|   » | ||||
| #|« | ||||
|     More declarator blocks! (with a keyword like role) | ||||
|   » | ||||
|  | ||||
| say 'Moar code!'; | ||||
|  | ||||
| my $don't = 16; | ||||
|  | ||||
| sub don't($x) { | ||||
|     !$x | ||||
| } | ||||
|  | ||||
| say don't 'foo'; | ||||
|  | ||||
| my %hash = ( | ||||
|     :foo(1), | ||||
| ); | ||||
|  | ||||
| say %hash<foo>; | ||||
| say %hash<<foo>>; | ||||
| say %hash«foo»; | ||||
|  | ||||
| say %*hash<foo>; | ||||
| say %*hash<<foo>>; | ||||
| say %*hash«foo»; | ||||
|  | ||||
| say $<todo>; | ||||
| say $<todo>; | ||||
|  | ||||
| for (@A Z @B) -> $a, $b { | ||||
|     say $a + $b; | ||||
| } | ||||
|  | ||||
| Q:PIR { | ||||
|     .loadlib "somelib" | ||||
| } | ||||
|  | ||||
| my $longstring = q/ | ||||
|     lots | ||||
|     of | ||||
|     text | ||||
| /; | ||||
|  | ||||
| my $heredoc = q:to/END_SQL/; | ||||
| SELECT * FROM Users | ||||
| WHERE first_name = 'Rob' | ||||
| END_SQL | ||||
| my $hello; | ||||
|  | ||||
| # Fun with regexen | ||||
|  | ||||
| if 'food' ~~ /foo/ { | ||||
|     say 'match!' | ||||
| } | ||||
|  | ||||
| my $re  = /foo/; | ||||
| my $re2 = m/ foo /; | ||||
| my $re3 = m:i/ FOO /; | ||||
|  | ||||
| call-a-sub(/ foo /); | ||||
| call-a-sub(/ foo \/ bar /); | ||||
|  | ||||
| my $re4    = rx/something | something-else/; | ||||
| my $result = ms/regexy stuff/; | ||||
| my $sub0   = s/regexy stuff/more stuff/; | ||||
| my $sub    = ss/regexy stuff/more stuff/; | ||||
| my $trans  = tr/regexy stuff/more stuff/; | ||||
|  | ||||
| my @values = <a b c d>; | ||||
| call-sub(<a b c d>); | ||||
| call-sub <a b c d>; | ||||
|  | ||||
| my $result = $a < $b; | ||||
|  | ||||
| for <a b c d> -> $letter { | ||||
|     say $letter; | ||||
| } | ||||
|  | ||||
| sub test-sub { | ||||
|     say @_; | ||||
|     say $!; | ||||
|     say $/; | ||||
|     say $0; | ||||
|     say $1; | ||||
|     say @*ARGS; | ||||
|     say $*ARGFILES; | ||||
|     say &?BLOCK; | ||||
|     say ::?CLASS; | ||||
|     say $?CLASS; | ||||
|     say @=COMMENT; | ||||
|     say %?CONFIG; | ||||
|     say $*CWD; | ||||
|     say $=data; | ||||
|     say %?DEEPMAGIC; | ||||
|     say $?DISTRO; | ||||
|     say $*DISTRO; | ||||
|     say $*EGID; | ||||
|     say %*ENV; | ||||
|     say $*ERR; | ||||
|     say $*EUID; | ||||
|     say $*EXECUTABLE_NAME; | ||||
|     say $?FILE; | ||||
|     say $?GRAMMAR; | ||||
|     say $*GID; | ||||
|     say $*IN; | ||||
|     say @*INC; | ||||
|     say %?LANG; | ||||
|     say $*LANG; | ||||
|     say $?LINE; | ||||
|     say %*META-ARGS; | ||||
|     say $?MODULE; | ||||
|     say %*OPTS; | ||||
|     say %*OPT; | ||||
|     say $?KERNEL; | ||||
|     say $*KERNEL; | ||||
|     say $*OUT; | ||||
|     say $?PACKAGE; | ||||
|     say $?PERL; | ||||
|     say $*PERL; | ||||
|     say $*PID; | ||||
|     say %=pod; | ||||
|     say $*PROGRAM_NAME; | ||||
|     say %*PROTOCOLS; | ||||
|     say ::?ROLE; | ||||
|     say $?ROLE; | ||||
|     say &?ROUTINE; | ||||
|     say $?SCOPE; | ||||
|     say $*TZ; | ||||
|     say $*UID; | ||||
|     say $?USAGE; | ||||
|     say $?VM; | ||||
|     say $?XVM; | ||||
| } | ||||
|  | ||||
| say <a b c>; | ||||
|  | ||||
| my $perl5_re = m:P5/ fo{2} /; | ||||
| my $re5      = rx«something | something-else»; | ||||
|  | ||||
| my $M := %*COMPILING<%?OPTIONS><M>; | ||||
|  | ||||
| say $M; | ||||
|  | ||||
| sub regex-name { ... } | ||||
| my $pair = role-name => 'foo'; | ||||
| $pair = rolesque => 'foo'; | ||||
|  | ||||
| my sub something(Str:D $value) { ... } | ||||
|  | ||||
| my $s = q«< | ||||
| some | ||||
| string | ||||
| stuff | ||||
| »; | ||||
|  | ||||
| my $regex = m«< some chars »; | ||||
| # after | ||||
|  | ||||
| say $/<foo><bar>; | ||||
|  | ||||
| roleq; | ||||
		Reference in New Issue
	
	Block a user