Created
September 30, 2014 03:39
-
-
Save rns/eab040af2e9e7336b1f1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use 5.010; | |
use strict; | |
use warnings; | |
use Marpa::R2; | |
my $g = Marpa::R2::Scanless::G->new( { | |
source => \(<<'END_OF_SOURCE'), | |
:default ::= action => [ value] | |
lexeme default = action => [ value] latm => 1 | |
table ::= row+ separator => [\n] | |
row ::= desc (' ') data | |
row ::= desc | |
desc ~ 'Server name' | |
desc ~ 'Printer name' | |
desc ~ 'Share name' | |
desc ~ 'Driver name' | |
desc ~ 'Port name' | |
desc ~ 'Comment' | |
desc ~ 'Location Operations Center' | |
desc ~ 'Print processor' | |
desc ~ 'Data type' | |
desc ~ 'Parameters' | |
desc ~ 'Attributes' | |
desc ~ 'Priority' | |
desc ~ 'Default priority' | |
desc ~ 'Average pages per minute' | |
desc ~ 'Printer status' | |
desc ~ 'Extended printer status' | |
desc ~ 'Detected error state' | |
desc ~ 'Extended detected error state' | |
data ~ [ a-zA-Z0-9_\-\/\.]+ | |
:discard ~ whitespace | |
whitespace ~ [\s]+ | |
END_OF_SOURCE | |
} ); | |
my $input = <<EOI; | |
Server name lak-print01 | |
Printer name 3130_Q1 | |
Share name 3130_Q1 | |
Driver name Canon iR1020/1024/1025 PCL5e | |
Port name IP_192.168.202.11 | |
Comment Canon iR1025 | |
Location Operations Center | |
Print processor WinPrint | |
Data type RAW | |
Parameters | |
Attributes 10824 | |
Priority 1 | |
Default priority 0 | |
Average pages per minute 0 | |
Printer status Idle | |
Extended printer status Unknown | |
Detected error state Unknown | |
Extended detected error state Unknown | |
EOI | |
my $r = Marpa::R2::Scanless::R->new( { | |
grammar => $g, | |
} ); | |
eval {$r->read(\$input)} || warn "Parse failure, progress report is:\n" . $r->show_progress; | |
my $ast = $r->value; | |
unless (defined $ast){ | |
die "No parse"; | |
} | |
for my $row (@$$ast){ | |
my ($desc, $data) = ($row->[0]->[0], $row->[1]->[0]); | |
$data //= ''; | |
say "$desc: $data"; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Server name: lak-print01 | |
Printer name: 3130_Q1 | |
Share name: 3130_Q1 | |
Driver name: Canon iR1020/1024/1025 PCL5e | |
Port name: IP_192.168.202.11 | |
Comment: Canon iR1025 | |
Location Operations Center: | |
Print processor: WinPrint | |
Data type: RAW | |
Parameters: | |
Attributes: 10824 | |
Priority: 1 | |
Default priority: 0 | |
Average pages per minute: 0 | |
Printer status: Idle | |
Extended printer status: Unknown | |
Detected error state: Unknown | |
Extended detected error state: Unknown |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment