File Coverage

blib/lib/Lang/HL/Syntax.pm
Criterion Covered Total %
statement 63 2486 2.5
branch 0 932 0.0
condition 0 24 0.0
subroutine 21 207 10.1
pod 0 2 0.0
total 84 3651 2.3


line stmt bran cond sub pod time code
1             #####################################################################
2             package Helpers;
3              
4 1     1   57717 use strict;
  1         2  
  1         25  
5 1     1   5 use warnings;
  1         8  
  1         18  
6 1     1   536 use utf8;
  1         12  
  1         4  
7              
8             sub new {
9 0     0     my ($class) = @_;
10 0           return bless { "Helpers" => {} }, $class;
11             }
12              
13             sub makeChars {
14 0     0     my ( $class, $program ) = @_;
15              
16 0           my @chars = split( "", $program );
17 0           $class->{"Helpers"}->{"Chars"} = \@chars;
18 0           $class->{"Helpers"}->{"length"} = $#chars;
19             }
20              
21             sub programLength {
22 0     0     my ($class) = @_;
23              
24 0           my $programLength = $class->{"Helpers"}->{"length"};
25 0           return $programLength;
26             }
27              
28             sub getChar {
29 0     0     my ($class) = @_;
30              
31 0           my @chars = @{ $class->{"Helpers"}->{"Chars"} };
  0            
32 0           my $currentChar = shift(@chars);
33 0           $class->{"Helpers"}->{"Chars"} = \@chars;
34 0           return $currentChar;
35             }
36              
37             sub nextChar {
38 0     0     my ($class) = @_;
39              
40 0           my @chars = @{ $class->{"Helpers"}->{"Chars"} };
  0            
41 0           my $currentChar = $chars[0];
42 0           return $currentChar;
43             }
44              
45             sub nextNextChar {
46 0     0     my ($class) = @_;
47              
48 0           my @chars = @{ $class->{"Helpers"}->{"Chars"} };
  0            
49 0           my $currentChar = $chars[1];
50 0           return $currentChar;
51             }
52              
53             sub putChar {
54 0     0     my ( $class, $char ) = @_;
55              
56 0           my @chars = @{ $class->{"Helpers"}->{"Chars"} };
  0            
57 0           unshift( @chars, $char );
58 0           $class->{"Helpers"}->{"Chars"} = \@chars;
59             }
60              
61             1;
62              
63             #####################################################################
64             package CharGroups;
65              
66 1     1   345 use strict;
  1         2  
  1         25  
67 1     1   5 use warnings;
  1         1  
  1         25  
68 1     1   4 use utf8;
  1         1  
  1         4  
69 1     1   29 no warnings qw(experimental::smartmatch);
  1         2  
  1         480  
70              
71             sub new {
72 0     0     my ($class) = @_;
73 0           return bless {}, $class;
74             }
75              
76             sub isSpaceNewline {
77 0     0     my ( $class, $char ) = @_;
78              
79 0           my @spaceNewline = ( " ", "\n", "\t", "\r" );
80 0 0         if ( $char ~~ @spaceNewline ) {
81 0           return 1;
82             }
83             else {
84 0           return 0;
85             }
86             }
87              
88             sub isDigit {
89 0     0     my ( $class, $char ) = @_;
90              
91 0           my @digits = ( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" );
92 0           foreach my $digit (@digits) {
93 0 0         if ( $char eq $digit ) {
94 0           return 1;
95             }
96             }
97              
98 0           return 0;
99             }
100              
101             sub isAlpha {
102 0     0     my ( $class, $char ) = @_;
103 0           my @alpha = ();
104              
105 0           for my $char ( 'a' ... 'z' ) {
106 0           push @alpha, $char;
107             }
108 0           for my $char ( 'A' ... 'Z' ) {
109 0           push @alpha, $char;
110             }
111 0           push @alpha, "_";
112              
113 0 0         if ( $char ~~ @alpha ) {
114 0           return 1;
115             }
116             else {
117 0           return 0;
118             }
119             }
120              
121             sub isQuote {
122 0     0     my ( $class, $char ) = @_;
123 0 0         if ( $char eq '"' ) {
124 0           return 1;
125             }
126             else {
127 0           return 0;
128             }
129             }
130              
131             sub isSpecialCharachter {
132 0     0     my ( $class, $char ) = @_;
133 0           my @specialCharachters =
134             ( "{", "}", "(", ")", "[", "]", ",", ";", ":", ".", "=", "?" );
135              
136 0 0         if ( $char ~~ @specialCharachters ) {
137 0           return 1;
138             }
139             else {
140 0           return 0;
141             }
142             }
143              
144             sub isOperator {
145 0     0     my ( $class, $char ) = @_;
146 0           my @operators = ( "+", "-", "|", "*", "/", ">", "<", "!", "&", "%" );
147              
148 0 0         if ( $char ~~ @operators ) {
149 0           return 1;
150             }
151             else {
152 0           return 0;
153             }
154             }
155              
156             1;
157              
158             #####################################################################
159             package Lexer;
160              
161 1     1   7 use strict;
  1         1  
  1         32  
162 1     1   4 use warnings;
  1         2  
  1         44  
163 1     1   16 use utf8;
  1         2  
  1         2  
164              
165             our @ISA = qw(Helpers CharGroups);
166              
167             sub new {
168 0     0     my ($class) = @_;
169 0           return bless {}, $class;
170             }
171              
172             sub lexer {
173 0     0     my ( $class, $program ) = @_;
174 0           my @tokens;
175              
176 0           $class->makeChars($program);
177              
178 0           my $counter = 0;
179 0           my $programLength = $class->programLength();
180              
181 0           while ( $counter <= $programLength ) {
182 0           my $currentChar = $class->getChar();
183 0           $counter++;
184              
185 0 0         if ( $class->isSpaceNewline($currentChar) ) {
186 0           next;
187             }
188              
189 0 0         if ( $currentChar eq "#" ) {
190 0           my $comment = "";
191 0           my $delimiter = "@";
192              
193 0           $currentChar = $class->getChar();
194 0           $counter++;
195              
196 0           while ( $currentChar ne $delimiter ) {
197 0           $comment .= $currentChar;
198 0           $currentChar = $class->getChar();
199 0           $counter++;
200             }
201              
202 0           $class->getChar();
203 0           $counter++;
204              
205 0           my $token = { "type" => "Comment", "value" => $comment };
206 0           push( @tokens, $token );
207 0           next;
208             }
209              
210 0 0 0       if ( $currentChar eq "(" && $class->nextChar eq "?" ) {
211 0           my $embedBlock = "";
212 0           $class->getChar();
213 0           $counter++;
214              
215 0           $currentChar = $class->getChar();
216 0           $counter++;
217 0   0       while ( $currentChar ne "?" && $class->nextChar() ne ")" ) {
218 0           $embedBlock .= $currentChar;
219 0           $currentChar = $class->getChar();
220 0           $counter++;
221 0           while ( $currentChar ne "?" ) {
222 0           $embedBlock .= $currentChar;
223 0           $currentChar = $class->getChar();
224 0           $counter++;
225             }
226             }
227              
228 0           $class->getChar();
229 0           $counter++;
230              
231 0           my $token = { "type" => "EmbedBlock", "value" => $embedBlock };
232 0           push( @tokens, $token );
233 0           next;
234             }
235              
236 0 0 0       if ( $currentChar eq "!" && $class->isAlpha( $class->nextChar() ) ) {
237 0           my $object = "";
238 0           $object .= $currentChar;
239              
240 0           $currentChar = $class->getChar();
241 0           $counter++;
242              
243 0           while ( $class->isAlpha($currentChar) ) {
244 0           $object .= $currentChar;
245 0           $currentChar = $class->getChar();
246 0           $counter++;
247             }
248              
249 0           $class->putChar($currentChar);
250 0           $counter = $counter - 1;
251              
252 0           my $token = { "type" => "Object", "value" => $object };
253 0           push( @tokens, $token );
254 0           next;
255             }
256              
257 0 0 0       if ( $currentChar eq ":" && $class->nextChar() eq ":" ) {
258 0           $class->getChar();
259 0           $counter++;
260              
261 0           my $token = { "type" => "ObjectColon", "value" => "::" };
262 0           push( @tokens, $token );
263 0           next;
264             }
265              
266 0 0 0       if ( $currentChar eq "=" && $class->nextChar() eq "=" ) {
267 0           $class->getChar();
268 0           $counter++;
269              
270 0           my $token = { "type" => "Equals", "value" => "==" };
271 0           push( @tokens, $token );
272 0           next;
273             }
274              
275 0 0         if ( $class->isSpecialCharachter($currentChar) ) {
276 0           my $token =
277             { "type" => "SpecialCharachter", "value" => $currentChar };
278 0           push( @tokens, $token );
279 0           next;
280             }
281              
282 0 0         if ( $class->isOperator($currentChar) ) {
283 0 0         if ( $currentChar eq "&" ) {
284 0           my $nextChar = $class->nextChar();
285 0 0         if ( $nextChar eq "&" ) {
286 0           $class->getChar();
287 0           $counter++;
288              
289 0           my $token = { "type" => "Operator", "value" => "&&" };
290 0           push( @tokens, $token );
291 0           next;
292             }
293             }
294             }
295              
296 0 0         if ( $class->isOperator($currentChar) ) {
297 0 0         if ( $currentChar eq "|" ) {
298 0           my $nextChar = $class->nextChar();
299 0 0         if ( $nextChar eq "|" ) {
300 0           $class->getChar();
301 0           $counter++;
302              
303 0           my $token = { "type" => "Operator", "value" => "||" };
304 0           push( @tokens, $token );
305 0           next;
306             }
307             }
308             }
309              
310 0 0         if ( $class->isOperator($currentChar) ) {
311 0 0         if ( $currentChar eq "!" ) {
312 0           my $nextChar = $class->nextChar();
313 0 0         if ( $nextChar eq "=" ) {
314 0           $class->getChar();
315 0           $counter++;
316              
317 0           my $token = { "type" => "Operator", "value" => "!=" };
318 0           push( @tokens, $token );
319 0           next;
320             }
321             }
322             }
323              
324 0 0         if ( $class->isOperator($currentChar) ) {
325 0 0         if ( $currentChar eq ">" ) {
326 0           my $nextChar = $class->nextChar();
327 0 0         if ( $nextChar eq "=" ) {
328 0           $class->getChar();
329 0           $counter++;
330              
331 0           my $token = { "type" => "Operator", "value" => ">=" };
332 0           push( @tokens, $token );
333 0           next;
334             }
335             }
336             }
337              
338 0 0         if ( $class->isOperator($currentChar) ) {
339 0 0         if ( $currentChar eq "<" ) {
340 0           my $nextChar = $class->nextChar();
341 0 0         if ( $nextChar eq "=" ) {
342 0           $class->getChar();
343 0           $counter++;
344              
345 0           my $token = { "type" => "Operator", "value" => "<=" };
346 0           push( @tokens, $token );
347 0           next;
348             }
349             }
350             }
351              
352 0 0         if ( $class->isOperator($currentChar) ) {
353 0 0         if ( $currentChar eq "*" ) {
354 0           my $nextChar = $class->nextChar();
355 0 0         if ( $nextChar eq "*" ) {
356 0           $class->getChar();
357 0           $counter++;
358              
359 0           my $token = { "type" => "Operator", "value" => "**" };
360 0           push( @tokens, $token );
361 0           next;
362             }
363             }
364             }
365              
366 0 0         if ( $class->isOperator($currentChar) ) {
367 0           my $token = { "type" => "Operator", "value" => $currentChar };
368 0           push( @tokens, $token );
369 0           next;
370             }
371              
372 0 0         if ( $class->isQuote($currentChar) ) {
373 0           my $string = "";
374 0           my $delimiter = $currentChar;
375              
376 0           $currentChar = $class->getChar();
377 0           $counter++;
378              
379 0           while ( $currentChar ne $delimiter ) {
380 0           $string .= $currentChar;
381 0           $currentChar = $class->getChar();
382 0           $counter++;
383             }
384              
385 0           my $token = { "type" => "String", "value" => $string };
386 0           push( @tokens, $token );
387 0           next;
388             }
389              
390 0 0 0       if ( $currentChar eq "e" && $class->nextChar() eq "q" ) {
391 0           $class->getChar();
392 0           $counter++;
393              
394 0           my $token = { "type" => "Operator", "value" => "eq" };
395 0           push( @tokens, $token );
396 0           next;
397             }
398              
399 0 0 0       if ( $currentChar eq "n" && $class->nextChar() eq "e" ) {
400 0           $class->getChar();
401 0           $counter++;
402              
403 0           my $token = { "type" => "Operator", "value" => "ne" };
404 0           push( @tokens, $token );
405 0           next;
406             }
407              
408 0 0         if ( $class->isAlpha($currentChar) ) {
409 0           my $symbol = "";
410 0           $symbol .= $currentChar;
411              
412 0           $currentChar = $class->getChar();
413 0           $counter++;
414              
415 0           while ( $class->isAlpha($currentChar) ) {
416 0           $symbol .= $currentChar;
417 0           $currentChar = $class->getChar();
418 0           $counter++;
419             }
420              
421 0           $class->putChar($currentChar);
422 0           $counter = $counter - 1;
423              
424 0           my $token = { "type" => "Symbol", "value" => $symbol };
425 0           push( @tokens, $token );
426 0           next;
427             }
428              
429 0 0         if ( $class->isDigit($currentChar) ) {
430 0           my $number = "";
431 0           $number .= $currentChar;
432              
433 0           $currentChar = $class->getChar();
434 0           $counter++;
435              
436 0   0       while ( $class->isDigit($currentChar) || $currentChar eq "." ) {
437 0           $number .= $currentChar;
438 0           $currentChar = $class->getChar();
439 0           $counter++;
440             }
441              
442 0           $class->putChar($currentChar);
443 0           $counter = $counter - 1;
444              
445 0           my $token = { "type" => "Number", "value" => $number };
446 0           push( @tokens, $token );
447              
448 0           next;
449             }
450              
451             else {
452 0           my $errorArea = "";
453 0           foreach ( @tokens[ -3 .. -1 ] ) {
454 0           my %token = %{$_};
  0            
455 0           $errorArea .= $token{value} . " ";
456             }
457              
458 0           print "Lexical Error at ", $errorArea, "$currentChar \n";
459             }
460             }
461              
462 0           return @tokens;
463             }
464              
465             1;
466              
467             #####################################################################
468             package ParserHelpers;
469              
470 1     1   1128 use strict;
  1         2  
  1         16  
471 1     1   4 use warnings;
  1         2  
  1         19  
472 1     1   3 use utf8;
  1         2  
  1         3  
473              
474             sub new {
475 0     0     my ($class) = @_;
476 0           return bless { "ParserHelpers" => {} }, $class;
477             }
478              
479             sub makeTokens {
480 0     0     my ( $class, $tokens ) = @_;
481              
482 0           my @tokens = @{$tokens};
  0            
483 0           $class->{"ParserHelpers"}->{"Tokens"} = \@tokens;
484 0           $class->{"ParserHelpers"}->{"TokensLength"} = $#tokens;
485             }
486              
487             sub tokensLength {
488 0     0     my ($class) = @_;
489              
490 0           my $tokensLength = $class->{"ParserHelpers"}->{"TokensLength"};
491 0           return $tokensLength;
492             }
493              
494             sub getToken {
495 0     0     my ($class) = @_;
496              
497 0           my @tokens = @{ $class->{"ParserHelpers"}->{"Tokens"} };
  0            
498 0           my $currentToken = shift(@tokens);
499 0           $class->{"ParserHelpers"}->{"Tokens"} = \@tokens;
500 0           return $currentToken;
501             }
502              
503             sub nextToken {
504 0     0     my ($class) = @_;
505              
506 0           my @tokens = @{ $class->{"ParserHelpers"}->{"Tokens"} };
  0            
507 0           my $currentToken = $tokens[0];
508 0           return $currentToken;
509             }
510              
511             sub putToken {
512 0     0     my ( $class, $token ) = @_;
513              
514 0           my @tokens = @{ $class->{"ParserHelpers"}->{"Tokens"} };
  0            
515 0           unshift( @tokens, $token );
516 0           $class->{"ParserHelpers"}->{"Tokens"} = \@tokens;
517             }
518              
519             sub setCurrentClass {
520 0     0     my ( $class, $className ) = @_;
521 0           $class->{"ParserHelpers"}->{"currentClassName"} = $className;
522             }
523              
524             sub getCurrentClass {
525 0     0     my ($class) = @_;
526 0           my $currentClassName = $class->{"ParserHelpers"}->{"currentClassName"};
527 0           return $currentClassName;
528             }
529              
530             sub setCurrentFunction {
531 0     0     my ( $class, $functionName ) = @_;
532 0           $class->{"ParserHelpers"}->{"currentFunctionName"} = $functionName;
533             }
534              
535             sub getCurrentFunction {
536 0     0     my ($class) = @_;
537             my $currentFunctionName =
538 0           $class->{"ParserHelpers"}->{"currentFunctionName"};
539 0           return $currentFunctionName;
540             }
541              
542             sub setLastBlock {
543 0     0     my ( $class, $lastBlock ) = @_;
544 0           $class->{"ParserHelpers"}->{"lastBlock"} = $lastBlock;
545             }
546              
547             sub nextTokens {
548 0     0     my ($class) = @_;
549 0           my @tokens = @{ $class->{"ParserHelpers"}->{"Tokens"} };
  0            
550              
551 0           my $nextTokens;
552 0           foreach ( @tokens[ 0 .. 5 ] ) {
553 0           my %token = %{$_};
  0            
554 0           $nextTokens .= $token{"value"} . " ";
555             }
556              
557 0           return $nextTokens;
558             }
559              
560             sub printError {
561 0     0     my ($class) = @_;
562              
563 0           my $currentClassName = $class->getCurrentClass();
564 0           my $currentFunctionName = $class->getCurrentFunction();
565 0           my $nextTokens = $class->nextTokens();
566              
567 0           print "Error at: \nclassName: ", $currentClassName, "\nfunctionName: ",
568             $currentFunctionName, "\nnextTokens: ", $nextTokens, "\n";
569             }
570              
571             sub putTokensInReverse {
572 0     0     my ($class, $tokens) = @_;
573 0           my @tokens = @{$tokens};
  0            
574              
575 0           my @tokensList = @{ $class->{"ParserHelpers"}->{"Tokens"} };
  0            
576 0           foreach my $token (@tokens) {
577 0           unshift @tokensList, $token;
578             }
579              
580 0           $class->{"ParserHelpers"}->{"Tokens"} = \@tokensList;
581             }
582             1;
583              
584             #####################################################################
585             package Parser;
586              
587 1     1   724 use strict;
  1         2  
  1         34  
588 1     1   5 use warnings;
  1         1  
  1         21  
589 1     1   4 use utf8;
  1         1  
  1         3  
590 1     1   536 use Data::Printer;
  1         25579  
  1         5  
591              
592             our @ISA = qw(ParserHelpers);
593              
594             sub new {
595 0     0     my ($class) = @_;
596 0           return bless {}, $class;
597             }
598              
599             sub parse {
600 0     0     my ( $class, $tokens ) = @_;
601 0           $class->makeTokens($tokens);
602              
603 0           my $code = $class->Lang();
604 0 0         if ($code) {
605 0           return $code;
606             }
607             else {
608 0           $class->printError();
609             }
610             }
611              
612             sub Lang {
613              
614             # check line return $lang; => return 0;
615 0     0     my ($class) = @_;
616 0           my $lang = "";
617              
618 0           my $classString = $class->Class();
619 0 0         if ($classString) {
620 0           $lang .= $classString;
621             }
622             else {
623 0           return $lang;
624             }
625              
626 0           my $rightLang = $class->Lang();
627 0 0         if ($rightLang) {
628 0           $lang .= $rightLang;
629             }
630             else {
631 0           return 0;
632             }
633              
634 0           return $lang;
635             }
636              
637             sub Class {
638 0     0     my ($class) = @_;
639 0           my $classString = "";
640              
641 0           my $tokenClass = $class->TokenClass();
642 0 0         if ($tokenClass) {
643 0           $classString .= $tokenClass;
644             }
645             else {
646 0           return 0;
647             }
648              
649 0           my $className = $class->ClassName();
650 0 0         if ($className) {
651 0           $classString .= $className;
652 0           $class->setCurrentClass($className);
653             }
654             else {
655 0           return 0;
656             }
657              
658 0           my $classBlock = $class->ClassBlock();
659 0 0         if ($classBlock) {
660 0           $classString .= $classBlock;
661             }
662             else {
663 0           return 0;
664             }
665              
666 0           return $classString;
667             }
668              
669             sub ClassName {
670 0     0     my ($class) = @_;
671              
672 0           my $currentToken = $class->getToken();
673 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
674 0           return $currentToken->{"value"};
675             }
676             else {
677 0           $class->putToken($currentToken);
678 0           return 0;
679             }
680             }
681              
682             sub ClassBlock {
683 0     0     my ($class) = @_;
684 0           my $classBlock = "";
685              
686 0           my $currentToken = $class->getToken();
687 0 0         if ( $currentToken->{"value"} eq "{" ) {
688 0           $classBlock .= "{\n";
689             }
690             else {
691 0           $class->putToken($currentToken);
692 0           return 0;
693             }
694              
695 0           my $classGroups = $class->ClassGroups();
696 0 0         if ($classGroups) {
697 0           $classBlock .= $classGroups;
698             }
699             else {
700 0           return 0;
701             }
702              
703 0           $currentToken = $class->getToken();
704 0 0         if ( $currentToken->{"value"} eq "}" ) {
705 0           $classBlock .= "\n}";
706             }
707             else {
708 0           $class->putToken($currentToken);
709 0           return 0;
710             }
711             }
712              
713             sub ClassGroups {
714              
715             # check line return $classGroups; => return 0;
716 0     0     my ($class) = @_;
717 0           my $classGroups = "";
718              
719 0           my $group = $class->Group();
720 0 0         if ($group) {
721 0           $classGroups .= $group;
722             }
723             else {
724 0           return $classGroups;
725             }
726              
727 0           my $rightClassGroup = $class->ClassGroups();
728 0 0         if ($rightClassGroup) {
729 0           $classGroups .= $rightClassGroup;
730             }
731             else {
732 0           return 0;
733             }
734              
735 0           return $classGroups;
736             }
737              
738             sub Group {
739 0     0     my ($class) = @_;
740              
741 0           my $comment = $class->Comment();
742 0 0         if ($comment) {
743 0           return $comment;
744             }
745              
746 0           my $parent = $class->Parent();
747 0 0         if ($parent) {
748 0           return $parent;
749             }
750              
751 0           my $packages = $class->Packages();
752 0 0         if ($packages) {
753 0           return $packages;
754             }
755              
756 0           my $function = $class->Function();
757 0 0         if ($function) {
758 0           return $function;
759             }
760              
761 0           my $embedBlock = $class->EmbedBlock();
762 0 0         if ($embedBlock) {
763 0           return $embedBlock;
764             }
765              
766 0           return 0;
767             }
768              
769             sub Comment {
770 0     0     my ($class) = @_;
771 0           my $comment = "";
772              
773 0           my $currentToken = $class->getToken();
774 0 0         if ( $currentToken->{"value"} eq "#" ) {
775 0           $comment .= "#";
776             }
777             else {
778 0           $class->putToken($currentToken);
779 0           return 0;
780             }
781              
782 0           my $lineComment = $class->LineComment();
783 0 0         if ($lineComment) {
784 0           $comment .= $lineComment;
785             }
786             else {
787 0           return 0;
788             }
789              
790 0           $currentToken = $class->getToken();
791 0 0         if ( $currentToken->{"value"} eq "@" ) {
792 0           $comment .= "@";
793             }
794             else {
795 0           $class->putToken($currentToken);
796 0           return 0;
797             }
798              
799 0           return $comment;
800             }
801              
802             sub LineComment {
803 0     0     my ($class) = @_;
804 0           my $lineComment = "";
805              
806 0           my $currentToken = $class->getToken();
807 0 0         if ( $currentToken->{"type"} eq "Comment" ) {
808 0           $lineComment .= $currentToken->{"value"};
809             }
810             else {
811 0           $class->putToken($currentToken);
812 0           return 0;
813             }
814              
815 0           return $lineComment;
816             }
817              
818             sub Parent {
819 0     0     my ($class) = @_;
820 0           my $parent = "";
821              
822 0           my $currentToken = $class->getToken();
823 0 0         if ( $currentToken->{"value"} eq "parent" ) {
824 0           my $parent .= $currentToken->{"value"};
825             }
826             else {
827 0           $class->putToken($currentToken);
828 0           return 0;
829             }
830              
831 0           $currentToken = $class->getToken();
832 0 0         if ( $currentToken->{"value"} eq "(" ) {
833 0           my $parent .= $currentToken->{"value"};
834             }
835             else {
836 0           $class->putToken($currentToken);
837 0           return 0;
838             }
839              
840 0           my $classNames = $class->ClassNames();
841 0 0         if ($classNames) {
842 0           $parent .= $classNames;
843             }
844             else {
845 0           return 0;
846             }
847              
848 0           $currentToken = $class->getToken();
849 0 0         if ( $currentToken->{"value"} eq ")" ) {
850 0           my $parent .= $currentToken->{"value"};
851             }
852             else {
853 0           $class->putToken($currentToken);
854 0           return 0;
855             }
856              
857 0           $currentToken = $class->getToken();
858 0 0         if ( $currentToken->{"value"} eq ";" ) {
859 0           my $parent .= $currentToken->{"value"};
860             }
861             else {
862 0           $class->putToken($currentToken);
863 0           return 0;
864             }
865              
866 0           return $currentToken;
867             }
868              
869             sub ClassNames {
870 0     0     my ($class) = @_;
871 0           my $classNames = "";
872              
873 0           my $className = $class->ClassName();
874 0 0         if ($className) {
875 0           $classNames .= $className;
876             }
877             else {
878 0           return 0;
879             }
880              
881 0           my $comma = $class->Comma();
882 0 0         if ($comma) {
883 0           $classNames .= $comma;
884             }
885             else {
886 0           return $classNames;
887             }
888              
889 0           my $rightClassNames = $class->ClassNames();
890 0 0         if ($classNames) {
891 0           $classNames .= $rightClassNames;
892             }
893             else {
894 0           return 0;
895             }
896              
897 0           return $classNames;
898             }
899              
900             sub Packages {
901 0     0     my ($class) = @_;
902 0           my $packages = "";
903              
904 0           my $currentToken = $class->getToken();
905 0 0         if ( $currentToken->{"value"} eq "(" ) {
906 0           $packages .= $currentToken->{"value"};
907             }
908             else {
909 0           $class->putToken($currentToken);
910 0           return 0;
911             }
912              
913 0           my $packageList = $class->PackageList();
914 0 0         if ($packageList) {
915 0           $packages .= $packageList;
916             }
917             else {
918 0           return 0;
919             }
920              
921 0           $currentToken = $class->getToken();
922 0 0         if ( $currentToken->{"value"} eq ")" ) {
923 0           $packages .= $currentToken->{"value"};
924             }
925             else {
926 0           $class->putToken($currentToken);
927 0           return 0;
928             }
929              
930 0           $currentToken = $class->getToken();
931 0 0         if ( $currentToken->{"value"} eq ";" ) {
932 0           $packages .= $currentToken->{"value"};
933             }
934             else {
935 0           $class->putToken($currentToken);
936 0           return 0;
937             }
938              
939 0           return $packages;
940             }
941              
942             sub PackageList {
943 0     0     my ($class) = @_;
944 0           my $packageList = "";
945              
946 0           my $package = $class->Package();
947 0 0         if ($package) {
948 0           $packageList .= $package;
949             }
950             else {
951 0           return 0;
952             }
953              
954 0           my $comma = $class->Comma();
955 0 0         if ($package) {
956 0           $packageList .= $comma;
957             }
958             else {
959 0           return $packageList;
960             }
961              
962 0           my $rightpackageList = $class->PackageList();
963 0 0         if ($rightpackageList) {
964 0           $packageList .= $rightpackageList;
965             }
966             else {
967 0           return 0;
968             }
969              
970 0           return $rightpackageList;
971             }
972              
973             sub Package {
974 0     0     my ($class) = @_;
975              
976 0           my $packageWithConstructor = $class->PackageWithConstructor();
977 0 0         if ($packageWithConstructor) {
978 0           return $packageWithConstructor;
979             }
980              
981 0           my $packageWithoutConstructor = $class->PackageWithoutConstructor();
982 0 0         if ($packageWithoutConstructor) {
983 0           return $packageWithoutConstructor;
984             }
985              
986 0           return 0;
987             }
988              
989             sub PackageWithConstructor {
990 0     0     my ($class) = @_;
991 0           my $packageWithConstructor = "";
992              
993 0           my $currentToken = $class->getToken();
994 0 0         if ( $currentToken->{"type"} eq "Object" ) {
995 0           $packageWithConstructor .= $currentToken->{"value"};
996             }
997             else {
998 0           $class->putToken($currentToken);
999 0           return 0;
1000             }
1001              
1002 0           $currentToken = $class->getToken();
1003 0 0         if ( $currentToken->{"value"} eq "=" ) {
1004 0           $packageWithConstructor .= $currentToken->{"value"};
1005             }
1006             else {
1007 0           $class->putToken($currentToken);
1008 0           return 0;
1009             }
1010              
1011 0           my $packageName = $class->PackageName();
1012 0 0         if ($packageName) {
1013 0           $packageWithConstructor .= $packageName;
1014             }
1015             else {
1016 0           return 0;
1017             }
1018              
1019 0           $currentToken = $class->getToken();
1020 0 0         if ( $currentToken->{"value"} eq "." ) {
1021 0           $packageWithConstructor .= $currentToken->{"value"};
1022             }
1023             else {
1024 0           $class->putToken($currentToken);
1025 0           return 0;
1026             }
1027              
1028 0           my $constructor = $class->Constructor();
1029 0 0         if ($constructor) {
1030 0           $packageWithConstructor .= $packageName;
1031             }
1032             else {
1033 0           return 0;
1034             }
1035              
1036 0           $currentToken = $class->getToken();
1037 0 0         if ( $currentToken->{"value"} eq "(" ) {
1038 0           $packageWithConstructor .= $currentToken->{"value"};
1039             }
1040             else {
1041 0           $class->putToken($currentToken);
1042 0           return 0;
1043             }
1044              
1045 0           my $objectParameters = $class->ObjectParameters();
1046 0 0         if ($objectParameters) {
1047 0           $packageWithConstructor .= $objectParameters;
1048             }
1049              
1050 0           $currentToken = $class->getToken();
1051 0 0         if ( $currentToken->{"value"} eq ")" ) {
1052 0           $packageWithConstructor .= $currentToken->{"value"};
1053             }
1054             else {
1055 0           $class->putToken($currentToken);
1056 0           return 0;
1057             }
1058              
1059 0           return $packageWithConstructor;
1060             }
1061              
1062             sub ObjectParameters {
1063 0     0     my ($class) = @_;
1064              
1065 0           my $packageParams = $class->PackageParams();
1066 0 0         if ($packageParams) {
1067 0           return $packageParams;
1068             }
1069              
1070 0           my $parameters = $class->Parameters();
1071 0 0         if ($parameters) {
1072 0           return $parameters;
1073             }
1074              
1075 0           return 0;
1076             }
1077              
1078             sub PackageParams {
1079 0     0     my ($class) = @_;
1080 0           my $packageParams = "";
1081              
1082 0           my $keyValue = $class->KeyValue();
1083 0 0         if ($keyValue) {
1084 0           $packageParams .= $keyValue;
1085             }
1086             else {
1087 0           return 0;
1088             }
1089              
1090 0           my $comma = $class->Comma();
1091 0 0         if ($comma) {
1092 0           $packageParams .= $comma;
1093             }
1094             else {
1095 0           return $packageParams;
1096             }
1097              
1098 0           my $rightPackageParams = $class->PackageParams();
1099 0 0         if ($rightPackageParams) {
1100 0           $packageParams .= $rightPackageParams;
1101             }
1102             else {
1103 0           return 0;
1104             }
1105              
1106 0           return $packageParams;
1107             }
1108              
1109             sub PackageName {
1110 0     0     my ($class) = @_;
1111 0           my $packageName = "";
1112              
1113 0           my $packageDir = $class->PackageDir();
1114 0 0         if ($packageDir) {
1115 0           $packageName .= $packageDir;
1116             }
1117             else {
1118 0           return 0;
1119             }
1120              
1121 0           my $currentToken = $class->getToken();
1122 0 0         if ( $currentToken->{"type"} eq "ObjectColon" ) {
1123 0           $packageName .= $currentToken->{"value"};
1124             }
1125             else {
1126 0           $class->putToken($currentToken);
1127 0           return $packageName;
1128             }
1129              
1130 0           my $rightpackageName = $class->PackageName();
1131 0 0         if ($rightpackageName) {
1132 0           $packageName .= $rightpackageName;
1133             }
1134             else {
1135 0           return 0;
1136             }
1137              
1138 0           return $packageName;
1139             }
1140              
1141             sub PackageWithoutConstructor {
1142 0     0     my ($class) = @_;
1143 0           my $packageWithConstructor = "";
1144              
1145 0           my $packageName = $class->PackageName();
1146 0 0         if ($packageName) {
1147 0           $packageWithConstructor .= $packageName;
1148             }
1149             else {
1150 0           return 0;
1151             }
1152              
1153 0           my $qw = $class->QW();
1154 0 0         if ($qw) {
1155 0           $packageWithConstructor .= $qw;
1156             }
1157              
1158 0           return $packageWithConstructor;
1159             }
1160              
1161             sub QW {
1162 0     0     my ($class) = @_;
1163 0           my $qw = "";
1164              
1165 0           my $dot = $class->Dot();
1166 0 0         if ($dot) {
1167 0           $qw .= $dot;
1168             }
1169             else {
1170 0           return 0;
1171             }
1172              
1173 0           my $currentToken = $class->getToken();
1174 0 0         if ( $currentToken->{"value"} eq "(" ) {
1175 0           $qw .= $currentToken->{"value"};
1176             }
1177             else {
1178 0           $class->putToken($currentToken);
1179 0           return 0;
1180             }
1181              
1182 0           my $functionList = $class->FunctionList();
1183 0 0         if ($functionList) {
1184 0           $qw .= $functionList;
1185             }
1186             else {
1187 0           return 0;
1188             }
1189              
1190 0           $currentToken = $class->getToken();
1191 0 0         if ( $currentToken->{"value"} eq ")" ) {
1192 0           $qw .= $currentToken->{"value"};
1193             }
1194             else {
1195 0           $class->putToken($currentToken);
1196 0           return 0;
1197             }
1198              
1199 0           return $qw;
1200             }
1201              
1202             sub FunctionList {
1203 0     0     my ($class) = @_;
1204 0           my $functionList = "";
1205              
1206 0           my $functionName = $class->FunctionName();
1207 0 0         if ($functionName) {
1208 0           $functionList .= $functionName;
1209             }
1210             else {
1211 0           return 0;
1212             }
1213              
1214 0           my $comma = $class->Comma();
1215 0 0         if ($comma) {
1216 0           $functionList .= $comma;
1217             }
1218             else {
1219 0           return $functionList;
1220             }
1221              
1222 0           my $rightFunctionName = $class->FunctionList();
1223 0 0         if ($rightFunctionName) {
1224 0           $functionList .= $rightFunctionName;
1225             }
1226             else {
1227 0           return 0;
1228             }
1229              
1230 0           return $functionList;
1231             }
1232              
1233             sub Constructor {
1234 0     0     my ($class) = @_;
1235 0           my $constructor = "";
1236              
1237 0           my $currentToken = $class->getToken();
1238 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
1239 0           $constructor .= $currentToken->{"value"};
1240             }
1241             else {
1242 0           $class->putToken($currentToken);
1243 0           return 0;
1244             }
1245              
1246 0           return $constructor;
1247             }
1248              
1249             sub Object {
1250 0     0     my ($class) = @_;
1251 0           my $object = "";
1252              
1253 0           my $currentToken = $class->getToken();
1254 0 0         if ( $currentToken->{"type"} eq "Object" ) {
1255 0           $object .= $currentToken->{"value"};
1256             }
1257             else {
1258 0           $class->putToken($currentToken);
1259 0           return 0;
1260             }
1261              
1262 0           return $object;
1263             }
1264              
1265             sub PackageDir {
1266 0     0     my ($class) = @_;
1267 0           my $packageDir = "";
1268              
1269 0           my $currentToken = $class->getToken();
1270 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
1271 0           $packageDir .= $currentToken->{"value"};
1272             }
1273             else {
1274 0           $class->putToken($currentToken);
1275 0           return 0;
1276             }
1277              
1278 0           return $packageDir;
1279             }
1280              
1281             sub Function {
1282 0     0     my ($class) = @_;
1283 0           my $function = "";
1284              
1285 0           my $tokenFunction = $class->TokenFunction();
1286 0 0         if ($tokenFunction) {
1287 0           $function .= $tokenFunction;
1288             }
1289             else {
1290 0           return 0;
1291             }
1292              
1293 0           my $functionName = $class->FunctionName();
1294 0           $class->setCurrentFunction($functionName);
1295 0 0         if ($functionName) {
1296 0           $function .= $functionName;
1297             }
1298             else {
1299 0           return 0;
1300             }
1301              
1302 0           my $currentToken = $class->getToken();
1303 0 0         if ( $currentToken->{"value"} eq "(" ) {
1304 0           $function .= $currentToken->{"value"};
1305             }
1306             else {
1307 0           $class->putToken($currentToken);
1308 0           return 0;
1309             }
1310              
1311 0           my $functionParamList = $class->FunctionParamList();
1312 0 0         if ($functionParamList) {
1313 0           $function .= $functionParamList;
1314             } else {
1315 0           return 0;
1316             }
1317              
1318              
1319 0           $currentToken = $class->getToken();
1320 0 0         if ( $currentToken->{"value"} eq ")" ) {
1321 0           $function .= $currentToken->{"value"};
1322             }
1323             else {
1324 0           $class->putToken($currentToken);
1325 0           return 0;
1326             }
1327              
1328 0           my $codeBlock = $class->CodeBlock();
1329 0 0         if ($codeBlock) {
1330 0           $function .= $codeBlock;
1331             }
1332             else {
1333 0           return 0;
1334             }
1335              
1336 0           return $function;
1337             }
1338              
1339             sub FunctionName {
1340 0     0     my ($class) = @_;
1341 0           my $functionName = "";
1342              
1343 0           my $currentToken = $class->getToken();
1344 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
1345 0           $functionName .= $currentToken->{"value"};
1346             #$class->setCurrentFunction($functionName);
1347             }
1348             else {
1349 0           $class->putToken($currentToken);
1350 0           return 0;
1351             }
1352              
1353 0           return $functionName;
1354             }
1355              
1356             sub FunctionParamList {
1357 0     0     my ($class) = @_;
1358 0           my $functionParamList = "none";
1359              
1360 0           my $functionParams = $class->FunctionParams();
1361 0 0         if ($functionParams) {
1362 0           return $functionParams;
1363             }
1364              
1365 0           return $functionParamList;
1366             }
1367              
1368             sub EmptyParamList {
1369 0     0     my ($class) = @_;
1370 0           return "";
1371             }
1372              
1373             sub FunctionParams {
1374 0     0     my ($class) = @_;
1375 0           my $functionParams = "";
1376              
1377 0           my $arg = $class->Arg();
1378 0 0         if ($arg) {
1379 0           $functionParams .= $arg;
1380             }
1381             else {
1382 0           return 0;
1383             }
1384              
1385 0           my $comma = $class->Comma();
1386 0 0         if ($arg) {
1387 0           $functionParams .= $comma;
1388             }
1389             else {
1390 0           return $functionParams;
1391             }
1392              
1393 0           my $rightFunctionParams = $class->FunctionParams();
1394 0 0         if ($rightFunctionParams) {
1395 0           $functionParams .= $rightFunctionParams;
1396             }
1397             else {
1398 0           return 0;
1399             }
1400              
1401 0           return $rightFunctionParams;
1402             }
1403              
1404             sub Arg {
1405 0     0     my ($class) = @_;
1406 0           my $arg = "";
1407              
1408 0           my $currentToken = $class->getToken();
1409 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
1410 0           $arg .= $currentToken->{"value"};
1411             }
1412             else {
1413 0           $class->putToken($currentToken);
1414 0           return 0;
1415             }
1416              
1417 0           return $arg;
1418             }
1419              
1420             sub CodeBlock {
1421 0     0     my ($class) = @_;
1422 0           my $codeBlock = "";
1423              
1424 0           my $currentToken = $class->getToken();
1425 0 0         if ( $currentToken->{"value"} eq "{" ) {
1426 0           $codeBlock .= $currentToken->{"value"};
1427             }
1428             else {
1429 0           $class->putToken($currentToken);
1430 0           return 0;
1431             }
1432              
1433 0           my $blocks = $class->Blocks();
1434 0 0         if ($blocks) {
1435 0           $codeBlock .= $blocks;
1436             }
1437             else {
1438 0           return 0;
1439             }
1440              
1441 0           $currentToken = $class->getToken();
1442 0 0         if ( $currentToken->{"value"} eq "}" ) {
1443 0           $codeBlock .= $currentToken->{"value"};
1444             }
1445             else {
1446 0           $class->putToken($currentToken);
1447 0           return 0;
1448             }
1449              
1450 0           return $codeBlock;
1451             }
1452              
1453             sub Blocks {
1454 0     0     my ($class) = @_;
1455 0           my $blocks = "";
1456              
1457 0           my $block = $class->Block();
1458 0 0         if ($block) {
1459 0           $blocks .= $block;
1460             }
1461             else {
1462 0           return 0;
1463             }
1464              
1465 0           my $rightBlock = $class->Blocks();
1466 0 0         if ($rightBlock) {
1467 0           $blocks .= $rightBlock;
1468             }
1469             else {
1470 0           return $blocks;
1471             }
1472              
1473 0           return $blocks;
1474             }
1475              
1476             sub Block {
1477 0     0     my ($class) = @_;
1478 0           my $block = "";
1479              
1480 0           my $ifElse = $class->IfElse();
1481 0 0         if ($ifElse) {
1482 0           return $ifElse;
1483             }
1484              
1485 0           my $ifWhile = $class->While();
1486 0 0         if ($ifWhile) {
1487 0           return $ifWhile;
1488             }
1489              
1490 0           my $forEach = $class->ForEach();
1491 0 0         if ($forEach) {
1492 0           return $forEach;
1493             }
1494              
1495 0           my $for = $class->For();
1496 0 0         if ($for) {
1497 0           return $for;
1498             }
1499              
1500 0           my $embedBlock = $class->EmbedBlock();
1501 0 0         if ($embedBlock) {
1502 0           return $embedBlock;
1503             }
1504              
1505 0           my $comment = $class->Comment();
1506 0 0         if ($comment) {
1507 0           return $comment;
1508             }
1509              
1510 0           my $statement = $class->Statement();
1511 0 0         if ($statement) {
1512 0           return $statement;
1513             }
1514              
1515 0           return 0;
1516             }
1517              
1518             sub EmbedBlock {
1519 0     0     my ($class) = @_;
1520 0           my $embedBlock = "";
1521              
1522 0           my $tokenEmbedBlock = $class->TokenEmbedBlock();
1523 0 0         if ($tokenEmbedBlock) {
1524 0           $embedBlock .= $tokenEmbedBlock;
1525             }
1526             else {
1527 0           return 0;
1528             }
1529              
1530 0           my $embedCodeBlock = $class->EmbedCodeBlock();
1531 0 0         if ($embedCodeBlock) {
1532 0           $embedBlock .= $embedCodeBlock;
1533             }
1534             else {
1535 0           return 0;
1536             }
1537              
1538 0           return $embedBlock;
1539             }
1540              
1541             sub EmbedCodeBlock {
1542 0     0     my ($class) = @_;
1543 0           my $embedCodeBlock = "";
1544              
1545 0           my $embedBegin = $class->EmbedBegin();
1546 0 0         if ($embedBegin) {
1547 0           $embedCodeBlock .= $embedBegin;
1548             }
1549             else {
1550 0           return 0;
1551             }
1552              
1553 0           my $embeddedCode = $class->EmbeddedCode();
1554 0 0         if ($embeddedCode) {
1555 0           $embedCodeBlock .= $embeddedCode;
1556             }
1557             else {
1558 0           return 0;
1559             }
1560              
1561 0           my $embedEnd = $class->EmbedEnd();
1562 0 0         if ($embedEnd) {
1563 0           $embedCodeBlock .= $embedEnd;
1564             }
1565             else {
1566 0           return 0;
1567             }
1568              
1569 0           return $embedCodeBlock;
1570             }
1571              
1572             sub EmbedBegin {
1573 0     0     my ($class) = @_;
1574 0           my $embedBegin = "";
1575              
1576 0           my $lParen = $class->LParen();
1577 0 0         if ($lParen) {
1578 0           $embedBegin .= $lParen;
1579             }
1580             else {
1581 0           return 0;
1582             }
1583              
1584 0           my $currentToken = $class->getToken();
1585 0 0         if ( $currentToken->{"value"} eq "?" ) {
1586 0           $embedBegin .= $currentToken->{"value"};
1587             }
1588             else {
1589 0           $class->putToken($currentToken);
1590 0           return 0;
1591             }
1592              
1593 0           return $embedBegin;
1594             }
1595              
1596             sub EmbedEnd {
1597 0     0     my ($class) = @_;
1598 0           my $embedEnd = "";
1599              
1600 0           my $currentToken = $class->getToken();
1601 0 0         if ( $currentToken->{"value"} eq "?" ) {
1602 0           $embedEnd .= $currentToken->{"value"};
1603             }
1604             else {
1605 0           $class->putToken($currentToken);
1606 0           return 0;
1607             }
1608              
1609 0           my $rParen = $class->RParen();
1610 0 0         if ($rParen) {
1611 0           $embedEnd .= $rParen;
1612             }
1613             else {
1614 0           return 0;
1615             }
1616              
1617 0           return $embedEnd;
1618             }
1619              
1620             sub EmbeddedCode {
1621 0     0     my ($class) = @_;
1622 0           my $embeddedCode = "";
1623              
1624 0           my $currentToken = $class->getToken();
1625 0 0         if ( $currentToken->{"type"} eq "EmbedBlock" ) {
1626 0           $embeddedCode .= $currentToken->{"value"};
1627             }
1628             else {
1629 0           $class->putToken($currentToken);
1630 0           return 0;
1631             }
1632              
1633 0           return $embeddedCode;
1634             }
1635              
1636             sub While {
1637 0     0     my ($class) = @_;
1638 0           my $while = "";
1639              
1640 0           my $tokenWhile = $class->TokenWhile();
1641 0 0         if ($tokenWhile) {
1642 0           $while .= $tokenWhile;
1643             }
1644             else {
1645 0           return 0;
1646             }
1647              
1648 0           my $lParen = $class->LParen();
1649 0 0         if ($lParen) {
1650 0           $while .= $lParen;
1651             }
1652             else {
1653 0           return 0;
1654             }
1655              
1656 0           my $boolExpression = $class->BoolExpression();
1657 0 0         if ($boolExpression) {
1658 0           $while .= $boolExpression;
1659             }
1660             else {
1661 0           return 0;
1662             }
1663              
1664 0           my $rParen = $class->RParen();
1665 0 0         if ($rParen) {
1666 0           $while .= $rParen;
1667             }
1668             else {
1669 0           return 0;
1670             }
1671              
1672 0           my $codeBlock = $class->CodeBlock();
1673 0 0         if ($codeBlock) {
1674 0           $while .= $codeBlock;
1675             }
1676             else {
1677 0           return 0;
1678             }
1679              
1680 0           return $while;
1681             }
1682              
1683             sub ForEach {
1684 0     0     my ($class) = @_;
1685 0           my $forEach = "";
1686              
1687 0           my $tokenForEach = $class->TokenForEach();
1688 0 0         if ($tokenForEach) {
1689 0           $forEach .= $tokenForEach;
1690             }
1691             else {
1692 0           return 0;
1693             }
1694              
1695 0           my $var = $class->Var();
1696 0 0         if ($var) {
1697 0           $forEach .= $var;
1698             }
1699             else {
1700 0           return 0;
1701             }
1702              
1703 0           my $forEachVariableName = $class->ForEachVariableName();
1704 0 0         if ($forEachVariableName) {
1705 0           $forEach .= $forEachVariableName;
1706             }
1707             else {
1708 0           return 0;
1709             }
1710              
1711 0           my $lParen = $class->LParen();
1712 0 0         if ($lParen) {
1713 0           $forEach .= $lParen;
1714             }
1715             else {
1716 0           return 0;
1717             }
1718              
1719 0           my $variableName = $class->VariableName();
1720 0 0         if ($variableName) {
1721 0           $forEach .= $variableName;
1722             }
1723             else {
1724 0           return 0;
1725             }
1726              
1727 0           my $rParen = $class->RParen();
1728 0 0         if ($rParen) {
1729 0           $forEach .= $rParen;
1730             }
1731             else {
1732 0           return 0;
1733             }
1734              
1735 0           my $codeBlock = $class->CodeBlock();
1736 0 0         if ($codeBlock) {
1737 0           $forEach .= $codeBlock;
1738             }
1739             else {
1740 0           return 0;
1741             }
1742              
1743 0           return $codeBlock;
1744             }
1745              
1746             sub ForEachVariableName {
1747 0     0     my ($class) = @_;
1748 0           my $forEachVariableName = "";
1749              
1750 0           my $variableName = $class->VariableName();
1751 0 0         if ($variableName) {
1752 0           $forEachVariableName .= $variableName;
1753             }
1754             else {
1755 0           return 0;
1756             }
1757              
1758 0           return $forEachVariableName;
1759             }
1760              
1761             sub For {
1762 0     0     my ($class) = @_;
1763 0           my $for = "";
1764              
1765 0           my $tokenFor = $class->TokenFor();
1766 0 0         if ($tokenFor) {
1767 0           $for .= $tokenFor;
1768             }
1769             else {
1770 0           return 0;
1771             }
1772              
1773 0           my $var = $class->Var();
1774 0 0         if ($var) {
1775 0           $for .= $var;
1776             }
1777             else {
1778 0           return 0;
1779             }
1780              
1781 0           my $variableName = $class->VariableName();
1782 0 0         if ($variableName) {
1783 0           $for .= $variableName;
1784             }
1785             else {
1786 0           return 0;
1787             }
1788              
1789 0           my $lParen = $class->LParen();
1790 0 0         if ($lParen) {
1791 0           $for .= $lParen;
1792             }
1793             else {
1794 0           return 0;
1795             }
1796              
1797 0           my $forRange = $class->ForRange();
1798 0 0         if ($forRange) {
1799 0           $for .= $forRange;
1800             }
1801             else {
1802 0           return 0;
1803             }
1804              
1805 0           my $rParen = $class->RParen();
1806 0 0         if ($rParen) {
1807 0           $for .= $rParen;
1808             }
1809             else {
1810 0           return 0;
1811             }
1812              
1813 0           my $codeBlock = $class->CodeBlock();
1814 0 0         if ($codeBlock) {
1815 0           $for .= $codeBlock;
1816             }
1817             else {
1818 0           return 0;
1819             }
1820              
1821 0           return $codeBlock;
1822             }
1823              
1824             sub ForRange {
1825 0     0     my ($class) = @_;
1826 0           my $forRange = "";
1827              
1828 0           my $lowerRange = $class->LowerRange();
1829 0 0         if ($lowerRange) {
1830 0           $forRange .= $lowerRange;
1831             }
1832             else {
1833 0           return 0;
1834             }
1835              
1836 0           my $dot = $class->Dot();
1837 0 0         if ($dot) {
1838 0           $forRange .= $dot;
1839             }
1840             else {
1841 0           return 0;
1842             }
1843              
1844 0           $dot = $class->Dot();
1845 0 0         if ($dot) {
1846 0           $forRange .= $dot;
1847             }
1848             else {
1849 0           return 0;
1850             }
1851              
1852 0           $dot = $class->Dot();
1853 0 0         if ($dot) {
1854 0           $forRange .= $dot;
1855             }
1856             else {
1857 0           return 0;
1858             }
1859              
1860 0           my $upperRange = $class->UpperRange();
1861 0 0         if ($upperRange) {
1862 0           $forRange .= $upperRange;
1863             }
1864             else {
1865 0           return 0;
1866             }
1867              
1868 0           return $forRange;
1869             }
1870              
1871             sub LowerRange {
1872 0     0     my ($class) = @_;
1873              
1874 0           my $number = $class->Number();
1875 0 0         if ($number) {
1876 0           return $number;
1877             }
1878              
1879 0           my $variableName = $class->VariableName();
1880 0 0         if ($variableName) {
1881 0           return $variableName;
1882             }
1883              
1884 0           my $arrayElement = $class->ArrayElement();
1885 0 0         if ($arrayElement) {
1886 0           return $arrayElement;
1887             }
1888              
1889 0           my $hashElement = $class->HashElement();
1890 0 0         if ($hashElement) {
1891 0           return $hashElement;
1892             }
1893              
1894 0           my $classAccessor = $class->ClassAccessor();
1895 0 0         if ($classAccessor) {
1896 0           return $classAccessor;
1897             }
1898              
1899 0           my $classFunctionReturn = $class->ClassFunctionReturn();
1900 0 0         if ($classFunctionReturn) {
1901 0           return $classFunctionReturn;
1902             }
1903              
1904 0           my $FunctionReturn = $class->FunctionReturn();
1905 0 0         if ($FunctionReturn) {
1906 0           return $FunctionReturn;
1907             }
1908              
1909 0           return 0;
1910             }
1911              
1912             sub UpperRange {
1913 0     0     my ($class) = @_;
1914              
1915 0           my $number = $class->Number();
1916 0 0         if ($number) {
1917 0           return $number;
1918             }
1919              
1920 0           my $variableName = $class->VariableName();
1921 0 0         if ($variableName) {
1922 0           return $variableName;
1923             }
1924              
1925 0           my $arrayElement = $class->ArrayElement();
1926 0 0         if ($arrayElement) {
1927 0           return $arrayElement;
1928             }
1929              
1930 0           my $hashElement = $class->HashElement();
1931 0 0         if ($hashElement) {
1932 0           return $hashElement;
1933             }
1934              
1935 0           my $classAccessor = $class->ClassAccessor();
1936 0 0         if ($classAccessor) {
1937 0           return $classAccessor;
1938             }
1939              
1940 0           my $classFunctionReturn = $class->ClassFunctionReturn();
1941 0 0         if ($classFunctionReturn) {
1942 0           return $classFunctionReturn;
1943             }
1944              
1945 0           my $FunctionReturn = $class->FunctionReturn();
1946 0 0         if ($FunctionReturn) {
1947 0           return $FunctionReturn;
1948             }
1949              
1950 0           return 0;
1951             }
1952              
1953             sub IfElse {
1954 0     0     my ($class) = @_;
1955 0           my $ifElse = "";
1956              
1957 0           my $if = $class->If();
1958 0 0         if ($if) {
1959 0           $ifElse .= $if;
1960             }
1961             else {
1962 0           return 0;
1963             }
1964              
1965 0           my $elsIf = $class->ElsIf();
1966 0 0         if ($elsIf) {
1967 0           $ifElse .= $elsIf;
1968             }
1969              
1970 0           my $else = $class->Else();
1971 0 0         if ($else) {
1972 0           $ifElse .= $else;
1973             }
1974              
1975 0           return $ifElse;
1976             }
1977              
1978             sub If {
1979 0     0     my ($class) = @_;
1980 0           my $if = "";
1981              
1982 0           my $tokenIf = $class->TokenIf();
1983 0 0         if ($tokenIf) {
1984 0           $if .= $tokenIf;
1985             }
1986             else {
1987 0           return 0;
1988             }
1989              
1990 0           my $lParen = $class->LParen();
1991 0 0         if ($lParen) {
1992 0           $if .= $lParen;
1993             }
1994             else {
1995 0           return 0;
1996             }
1997              
1998 0           my $boolExpression = $class->BoolExpression();
1999 0 0         if ($boolExpression) {
2000 0           $if .= $boolExpression;
2001             }
2002             else {
2003 0           return 0;
2004             }
2005              
2006 0           my $rParen = $class->RParen();
2007 0 0         if ($rParen) {
2008 0           $if .= $rParen;
2009             }
2010             else {
2011 0           return 0;
2012             }
2013              
2014 0           my $codeBlock = $class->CodeBlock();
2015 0 0         if ($codeBlock) {
2016 0           $if .= $codeBlock;
2017             }
2018             else {
2019 0           return 0;
2020             }
2021              
2022 0           return $if;
2023             }
2024              
2025             sub BoolExpression {
2026 0     0     my ($class) = @_;
2027 0           my $boolExpression = "";
2028              
2029 0           my $booleanExpression = $class->BooleanExpression();
2030 0 0         if ($booleanExpression) {
2031 0           $boolExpression .= $booleanExpression;
2032             }
2033             else {
2034 0           return 0;
2035             }
2036              
2037 0           my $booleanOperator = $class->BooleanOperator();
2038 0 0         if ($booleanOperator) {
2039 0           $boolExpression .= $booleanOperator;
2040             }
2041             else {
2042 0           return $boolExpression;
2043             }
2044              
2045 0           my $rightBooleanExpression = $class->BoolExpression();
2046 0 0         if ($rightBooleanExpression) {
2047 0           $boolExpression .= $rightBooleanExpression;
2048             }
2049             else {
2050 0           return 0;
2051             }
2052              
2053 0           return $boolExpression;
2054             }
2055              
2056             sub BooleanExpression {
2057 0     0     my ($class) = @_;
2058 0           my $booleanExpression = "";
2059              
2060 0           my $boolOperands = $class->BoolOperands();
2061 0 0         if ($boolOperands) {
2062 0           $booleanExpression .= $boolOperands;
2063             }
2064             else {
2065 0           return 0;
2066             }
2067              
2068 0           my $boolOperatorExpression = $class->BoolOperatorExpression();
2069 0 0         if ($boolOperatorExpression) {
2070 0           $booleanExpression .= $boolOperatorExpression;
2071             }
2072              
2073 0           return $booleanExpression;
2074             }
2075              
2076             sub BoolOperatorExpression {
2077 0     0     my ($class) = @_;
2078 0           my $boolOperatorExpression = "";
2079              
2080 0           my $boolOperator = $class->BoolOperator();
2081 0 0         if ($boolOperator) {
2082 0           $boolOperatorExpression .= $boolOperator;
2083             }
2084             else {
2085 0           return 0;
2086             }
2087              
2088 0           my $boolOperands = $class->BoolOperands();
2089 0 0         if ($boolOperands) {
2090 0           $boolOperatorExpression .= $boolOperands;
2091             }
2092             else {
2093 0           return 0;
2094             }
2095              
2096 0           return $boolOperatorExpression;
2097             }
2098              
2099             sub BoolOperands {
2100 0     0     my ($class) = @_;
2101              
2102 0           my $realNumber = $class->RealNumber();
2103 0 0         if ($realNumber) {
2104 0           return $realNumber;
2105             }
2106              
2107 0           my $string = $class->String();
2108 0 0         if ($string) {
2109 0           return $string;
2110             }
2111              
2112 0           my $scalarVariable = $class->ScalarVariable();
2113 0 0         if ($scalarVariable) {
2114 0           return $scalarVariable;
2115             }
2116              
2117 0           my $arrayElement = $class->ArrayElement();
2118 0 0         if ($arrayElement) {
2119 0           return $arrayElement;
2120             }
2121              
2122 0           my $hashElement = $class->HashElement();
2123 0 0         if ($hashElement) {
2124 0           return $hashElement;
2125             }
2126              
2127 0           my $classAccessor = $class->ClassAccessor();
2128 0 0         if ($classAccessor) {
2129 0           return $classAccessor;
2130             }
2131              
2132 0           my $classFunctionReturn = $class->ClassFunctionReturn();
2133 0 0         if ($classFunctionReturn) {
2134 0           return $classFunctionReturn;
2135             }
2136              
2137 0           my $functionReturn = $class->FunctionReturn();
2138 0 0         if ($functionReturn) {
2139 0           return $functionReturn;
2140             }
2141              
2142 0           my $embedBlock = $class->EmbedBlock();
2143 0 0         if ($embedBlock) {
2144 0           return $embedBlock;
2145             }
2146              
2147 0           return 0;
2148             }
2149              
2150             sub BoolOperator {
2151 0     0     my ($class) = @_;
2152              
2153 0           my $greaterThan = $class->GreaterThan();
2154 0 0         if ($greaterThan) {
2155 0           return $greaterThan;
2156             }
2157              
2158 0           my $lessThan = $class->LessThan();
2159 0 0         if ($lessThan) {
2160 0           return $lessThan;
2161             }
2162              
2163 0           my $equals = $class->Equals();
2164 0 0         if ($equals) {
2165 0           return $equals;
2166             }
2167              
2168 0           my $greaterThanEquals = $class->GreaterThanEquals();
2169 0 0         if ($greaterThanEquals) {
2170 0           return $greaterThanEquals;
2171             }
2172              
2173 0           my $lessThanEquals = $class->LessThanEquals();
2174 0 0         if ($lessThanEquals) {
2175 0           return $lessThanEquals;
2176             }
2177              
2178 0           my $stringEquals = $class->StringEquals();
2179 0 0         if ($stringEquals) {
2180 0           return $stringEquals;
2181             }
2182              
2183 0           my $stringNotEquals = $class->StringNotEquals();
2184 0 0         if ($stringNotEquals) {
2185 0           return $stringNotEquals;
2186             }
2187              
2188 0           my $notEquals = $class->NotEqulas();
2189 0 0         if ($notEquals) {
2190 0           return $notEquals;
2191             }
2192              
2193 0           my $logicalAnd = $class->LogicalAnd();
2194 0 0         if ($logicalAnd) {
2195 0           return $logicalAnd;
2196             }
2197              
2198 0           my $logicalOr = $class->LogicalOr();
2199 0 0         if ($logicalOr) {
2200 0           return $logicalOr;
2201             }
2202              
2203 0           my $embedBlock = $class->EmbedBlock();
2204 0 0         if ($embedBlock) {
2205 0           return $embedBlock;
2206             }
2207              
2208 0           return 0;
2209             }
2210              
2211             sub ElsIf {
2212 0     0     my ($class) = @_;
2213 0           my $elsIf = "";
2214              
2215 0           my $elsIfChain = $class->ElsIfChain();
2216 0 0         if ($elsIfChain) {
2217 0           $elsIf .= $elsIfChain;
2218             }
2219             else {
2220 0           return $elsIf;
2221             }
2222              
2223 0           my $rightElsIf = $class->ElsIf();
2224 0 0         if ($rightElsIf) {
2225 0           $elsIf .= $rightElsIf;
2226             }
2227             else {
2228 0           return 0;
2229             }
2230              
2231 0           return $elsIf;
2232             }
2233              
2234             sub ElsIfChain {
2235 0     0     my ($class) = @_;
2236 0           my $elsIfChain = "";
2237              
2238 0           my $tokenIf = $class->TokenIf();
2239 0 0         if ($tokenIf) {
2240 0           $elsIfChain .= $tokenIf;
2241             }
2242             else {
2243 0           return 0;
2244             }
2245              
2246 0           my $lParen = $class->LParen();
2247 0 0         if ($lParen) {
2248 0           $elsIfChain .= $lParen;
2249             }
2250             else {
2251 0           return 0;
2252             }
2253              
2254 0           my $boolExpression = $class->BoolExpression();
2255 0 0         if ($boolExpression) {
2256 0           $elsIfChain .= $boolExpression;
2257             }
2258             else {
2259 0           return 0;
2260             }
2261              
2262 0           my $rParen = $class->RParen();
2263 0 0         if ($rParen) {
2264 0           $elsIfChain .= $rParen;
2265             }
2266             else {
2267 0           return 0;
2268             }
2269              
2270 0           my $codeBlock = $class->CodeBlock();
2271 0 0         if ($codeBlock) {
2272 0           $elsIfChain .= $codeBlock;
2273             }
2274             else {
2275 0           return 0;
2276             }
2277              
2278 0           return $elsIfChain;
2279             }
2280              
2281             sub Else {
2282 0     0     my ($class) = @_;
2283 0           my $else = "";
2284              
2285 0           my $tokenElse = $class->TokenElse();
2286 0 0         if ($tokenElse) {
2287 0           $else .= $tokenElse;
2288             }
2289             else {
2290 0           return 0;
2291             }
2292              
2293 0           my $codeBlock = $class->CodeBlock();
2294 0 0         if ($codeBlock) {
2295 0           $else .= $codeBlock;
2296             }
2297             else {
2298 0           return 0;
2299             }
2300              
2301 0           return $else;
2302             }
2303              
2304             sub Statement {
2305 0     0     my ($class) = @_;
2306              
2307 0           my $variableDeclaration = $class->VariableDeclaration();
2308 0 0         if ($variableDeclaration) {
2309 0           return $variableDeclaration;
2310             }
2311              
2312 0           my $functionCall = $class->FunctionCall();
2313 0 0         if ($functionCall) {
2314 0           return $functionCall;
2315             }
2316              
2317 0           my $classFunctionCall = $class->ClassFunctionCall();
2318 0 0         if ($classFunctionCall) {
2319 0           return $classFunctionCall;
2320             }
2321              
2322 0           my $objectCall = $class->ObjectCall();
2323 0 0         if ($objectCall) {
2324 0           return $objectCall;
2325             }
2326              
2327 0           my $assignment = $class->Assignment();
2328 0 0         if ($assignment) {
2329 0           return $assignment;
2330             }
2331              
2332 0           my $return = $class->Return();
2333 0 0         if ($return) {
2334 0           return $return;
2335             }
2336              
2337 0           my $last = $class->Last();
2338 0 0         if ($last) {
2339 0           return $last;
2340             }
2341              
2342 0           my $next = $class->Next();
2343 0 0         if ($next) {
2344 0           return $next;
2345             }
2346              
2347 0           return 0;
2348             }
2349              
2350             sub ClassFunctionCall {
2351 0     0     my ($class) = @_;
2352 0           my $classFunctionCall = "";
2353              
2354 0           my $tokenClass = $class->TokenClass();
2355 0 0         if ($tokenClass) {
2356 0           return $tokenClass;
2357             }
2358             else {
2359 0           return 0;
2360             }
2361              
2362 0           my $dot = $class->Dot();
2363 0 0         if ($dot) {
2364 0           return $dot;
2365             }
2366             else {
2367 0           return 0;
2368             }
2369              
2370 0           my $functionName = $class->FunctionName();
2371 0 0         if ($functionName) {
2372 0           return $functionName;
2373             }
2374             else {
2375 0           return 0;
2376             }
2377             }
2378              
2379             sub ObjectCall {
2380 0     0     my ($class) = @_;
2381 0           my $objectCall = "";
2382              
2383 0           my $objectFunctionCall = $class->ObjectFunctionCall();
2384 0 0         if ($objectFunctionCall) {
2385 0           $objectCall .= $objectFunctionCall;
2386             }
2387             else {
2388 0           return 0;
2389             }
2390              
2391 0           my $semiColon = $class->SemiColon();
2392 0 0         if ($semiColon) {
2393 0           $objectCall .= $semiColon;
2394             }
2395             else {
2396 0           return 0;
2397             }
2398              
2399 0           return $objectCall;
2400             }
2401              
2402             sub VariableDeclaration {
2403 0     0     my ($class) = @_;
2404              
2405 0           my $arrayDeclaration = $class->ArrayDeclaration();
2406 0 0         if ($arrayDeclaration) {
2407 0           return $arrayDeclaration;
2408             }
2409              
2410 0           my $hashDeclaration = $class->HashDeclaration();
2411 0 0         if ($hashDeclaration) {
2412 0           return $hashDeclaration;
2413             }
2414              
2415 0           my $scalarDeclaration = $class->ScalarDeclaration();
2416 0 0         if ($scalarDeclaration) {
2417 0           return $scalarDeclaration;
2418             }
2419              
2420 0           return 0;
2421             }
2422              
2423             sub ScalarDeclaration {
2424 0     0     my ($class) = @_;
2425 0           my $scalarDeclaration = "";
2426              
2427 0           my $var = $class->Var();
2428 0 0         if ($var) {
2429 0           $scalarDeclaration .= $var;
2430             }
2431             else {
2432 0           return 0;
2433             }
2434              
2435 0           my $variableName = $class->VariableName();
2436 0 0         if ($variableName) {
2437 0           $scalarDeclaration .= $variableName;
2438             }
2439             else {
2440 0           return 0;
2441             }
2442              
2443 0           my $equal = $class->Equal();
2444 0 0         if ($equal) {
2445 0           $scalarDeclaration .= $equal;
2446             }
2447             else {
2448 0           return 0;
2449             }
2450              
2451 0           my $value = $class->Value();
2452 0 0         if ($value) {
2453 0           $scalarDeclaration .= $value;
2454             }
2455             else {
2456 0           return 0;
2457             }
2458              
2459 0           my $semiColon = $class->SemiColon();
2460 0 0         if ($semiColon) {
2461 0           $scalarDeclaration .= $semiColon;
2462             }
2463             else {
2464 0           return 0;
2465             }
2466              
2467 0           return $scalarDeclaration;
2468             }
2469              
2470             sub Var {
2471 0     0     my ($class) = @_;
2472 0           my $var = "";
2473              
2474 0           my $currentToken = $class->getToken();
2475 0 0         if ( $currentToken->{"value"} eq "var" ) {
2476 0           $var .= $currentToken->{"value"};
2477             }
2478             else {
2479 0           $class->putToken($currentToken);
2480 0           return 0;
2481             }
2482              
2483 0           return $var;
2484             }
2485              
2486             sub VariableName {
2487 0     0     my ($class) = @_;
2488 0           my $variableName = "";
2489              
2490 0           my $currentToken = $class->getToken();
2491 0 0         if ( $currentToken->{"type"} eq "symbol" ) {
2492 0           $variableName .= $currentToken->{"value"};
2493             }
2494             else {
2495 0           $class->putToken($currentToken);
2496 0           return 0;
2497             }
2498              
2499 0           return $variableName;
2500             }
2501              
2502             sub Value {
2503 0     0     my ($class) = @_;
2504 0           my $value = "";
2505              
2506 0           my $rhs = $class->RHS();
2507 0 0         if ($rhs) {
2508 0           $value .= $rhs;
2509             }
2510             else {
2511 0           return 0;
2512             }
2513              
2514 0           return $value;
2515             }
2516              
2517             sub Number {
2518 0     0     my ($class) = @_;
2519 0           my $number = "";
2520              
2521 0           my $currentToken = $class->getToken();
2522 0 0         if ( $currentToken->{"type"} eq "Number" ) {
2523 0           $number .= $currentToken->{"value"};
2524             }
2525             else {
2526 0           $class->putToken($currentToken);
2527 0           return 0;
2528             }
2529              
2530 0           return $number;
2531             }
2532              
2533             sub RealNumber {
2534 0     0     my ($class) = @_;
2535 0           my $realNumber = "";
2536              
2537 0           my $currentToken = $class->getToken();
2538 0 0         if ( $currentToken->{"type"} eq "RealNumber" ) {
2539 0           $realNumber .= $currentToken->{"value"};
2540             }
2541             else {
2542 0           $class->putToken($currentToken);
2543 0           return 0;
2544             }
2545              
2546 0           return $realNumber;
2547             }
2548              
2549             sub String {
2550 0     0     my ($class) = @_;
2551 0           my $string = "";
2552              
2553 0           my $currentToken = $class->getToken();
2554 0 0         if($currentToken->{"type"} eq "String") {
2555 0           $string .= $currentToken->{"value"};
2556             }
2557             else {
2558 0           $class->putToken($currentToken);
2559 0           return 0;
2560             }
2561              
2562 0           return $string;
2563             }
2564              
2565             sub LQuote {
2566 0     0     my ($class) = @_;
2567 0           my $lQuote = "";
2568              
2569 0           my $quote = $class->Quote();
2570 0 0         if ($quote) {
2571 0           $lQuote .= $quote;
2572             }
2573             else {
2574 0           return 0;
2575             }
2576              
2577 0           return $lQuote;
2578             }
2579              
2580             sub RQuote {
2581 0     0     my ($class) = @_;
2582 0           my $rQuote = "";
2583              
2584 0           my $quote = $class->Quote();
2585 0 0         if ($quote) {
2586 0           $rQuote .= $quote;
2587             }
2588             else {
2589 0           return 0;
2590             }
2591              
2592 0           return $rQuote;
2593             }
2594              
2595             sub StringValue {
2596 0     0     my ($class) = @_;
2597 0           my $stringValue;
2598              
2599 0           my $currentToken = $class->getToken();
2600 0 0         if ( $currentToken->{"type"} eq "String" ) {
2601 0           $stringValue .= $currentToken->{"value"};
2602             }
2603             else {
2604 0           $class->putToken($currentToken);
2605 0           return 0;
2606             }
2607              
2608 0           return $stringValue;
2609             }
2610              
2611             sub ArrayDeclaration {
2612 0     0     my ($class) = @_;
2613 0           my $arrayDeclaration = "";
2614              
2615 0           my $var = $class->Var();
2616 0 0         if ($var) {
2617 0           $arrayDeclaration .= $var;
2618             }
2619             else {
2620 0           return 0;
2621             }
2622              
2623 0           my $variableName = $class->VariableName();
2624 0 0         if ($variableName) {
2625 0           $arrayDeclaration .= $variableName;
2626             }
2627             else {
2628 0           return 0;
2629             }
2630              
2631 0           my $equal = $class->Equal();
2632 0 0         if ($equal) {
2633 0           $arrayDeclaration .= $equal;
2634             }
2635             else {
2636 0           return 0;
2637             }
2638              
2639 0           my $arrayList = $class->ArrayList();
2640 0 0         if ($arrayList) {
2641 0           $arrayDeclaration .= $arrayList;
2642             }
2643             else {
2644 0           return 0;
2645             }
2646              
2647 0           my $semiColon = $class->SemiColon();
2648 0 0         if ($semiColon) {
2649 0           $arrayDeclaration .= $semiColon;
2650             }
2651             else {
2652 0           return 0;
2653             }
2654              
2655 0           return $arrayDeclaration;
2656             }
2657              
2658             sub ArrayList {
2659 0     0     my ($class) = @_;
2660 0           my $arrayList = "";
2661              
2662 0           my $lBracket = $class->LBracket();
2663 0 0         if ($lBracket) {
2664 0           $arrayList .= $lBracket;
2665             }
2666             else {
2667 0           return 0;
2668             }
2669              
2670 0           my $listElements = $class->ListElements();
2671 0 0         if ($listElements) {
2672 0           $arrayList .= $listElements;
2673             }
2674             else {
2675 0           return 0;
2676             }
2677              
2678 0           my $rBracket = $class->RBracket();
2679 0 0         if ($rBracket) {
2680 0           $arrayList .= $rBracket;
2681             }
2682             else {
2683 0           return 0;
2684             }
2685              
2686 0           return $rBracket;
2687             }
2688              
2689             sub ListElements {
2690 0     0     my ($class) = @_;
2691 0           my $listElements = "";
2692              
2693 0           my $listElement = $class->ListElement();
2694 0 0         if ($listElement) {
2695 0           my $listElements .= $listElement;
2696             }
2697              
2698 0           my $comma = $class->Comma();
2699 0 0         if ($comma) {
2700 0           my $listElements .= $comma;
2701             }
2702             else {
2703 0           return $listElements;
2704             }
2705              
2706 0           my $rightListElements = $class->ListElements();
2707 0 0         if ($rightListElements) {
2708 0           $listElements .= $rightListElements;
2709             }
2710              
2711 0           return $listElements;
2712             }
2713              
2714             sub ListElement {
2715 0     0     my ($class) = @_;
2716              
2717 0           my $realNumber = $class->RealNumber();
2718 0 0         if ($realNumber) {
2719 0           return $realNumber;
2720             }
2721              
2722 0           my $string = $class->String();
2723 0 0         if ($string) {
2724 0           return $string;
2725             }
2726              
2727 0           my $classFunctionReturn = $class->ClassFunctionReturn();
2728 0 0         if ($classFunctionReturn) {
2729 0           return $classFunctionReturn;
2730             }
2731              
2732 0           my $functionReturn = $class->FunctionReturn();
2733 0 0         if ($functionReturn) {
2734 0           return $functionReturn;
2735             }
2736              
2737 0           my $arrayElement = $class->ArrayElement();
2738 0 0         if ($arrayElement) {
2739 0           return $arrayElement;
2740             }
2741              
2742 0           my $hashElement = $class->HashElement();
2743 0 0         if ($hashElement) {
2744 0           return $hashElement;
2745             }
2746              
2747 0           my $arrayList = $class->ArrayList();
2748 0 0         if ($arrayList) {
2749 0           return $arrayList;
2750             }
2751              
2752 0           my $hashRef = $class->HashRef();
2753 0 0         if ($hashRef) {
2754 0           return $hashRef;
2755             }
2756              
2757 0           my $variableName = $class->VariableName();
2758 0 0         if ($variableName) {
2759 0           return $variableName;
2760             }
2761              
2762 0           my $embedBlock = $class->EmbedBlock();
2763 0 0         if ($embedBlock) {
2764 0           return $embedBlock;
2765             }
2766              
2767 0           return 0;
2768             }
2769              
2770             sub HashDeclaration {
2771 0     0     my ($class) = @_;
2772 0           my $hashDeclaration = "";
2773              
2774 0           my $var = $class->Var();
2775 0 0         if ($var) {
2776 0           $hashDeclaration .= $var;
2777             }
2778             else {
2779 0           return 0;
2780             }
2781              
2782 0           my $variableName = $class->VariableName();
2783 0 0         if ($variableName) {
2784 0           $hashDeclaration .= $variableName;
2785             }
2786             else {
2787 0           return 0;
2788             }
2789              
2790 0           my $equal = $class->Equal();
2791 0 0         if ($equal) {
2792 0           $hashDeclaration .= $equal;
2793             }
2794             else {
2795 0           return 0;
2796             }
2797              
2798 0           my $hashRef = $class->HashRef();
2799 0 0         if ($hashRef) {
2800 0           $hashDeclaration .= $hashRef;
2801             }
2802             else {
2803 0           return 0;
2804             }
2805              
2806 0           my $semiColon = $class->SemiColon();
2807 0 0         if ($semiColon) {
2808 0           $hashDeclaration .= $semiColon;
2809             }
2810             else {
2811 0           return 0;
2812             }
2813              
2814 0           return $hashDeclaration;
2815             }
2816              
2817             sub HashRef {
2818 0     0     my ($class) = @_;
2819 0           my $hashRef = "";
2820              
2821 0           my $lBrace = $class->LBrace();
2822 0 0         if ($lBrace) {
2823 0           my $hashRef .= $lBrace;
2824             }
2825             else {
2826 0           return 0;
2827             }
2828              
2829 0           my $keyValuePairs = $class->KeyValuePairs();
2830 0 0         if ($keyValuePairs) {
2831 0           my $hashRef .= $keyValuePairs;
2832             }
2833             else {
2834 0           return 0;
2835             }
2836              
2837 0           my $rBrace = $class->RBrace();
2838 0 0         if ($rBrace) {
2839 0           my $hashRef .= $rBrace;
2840             }
2841             else {
2842 0           return 0;
2843             }
2844              
2845 0           return $hashRef;
2846             }
2847              
2848             sub KeyValuePairs {
2849 0     0     my ($class) = @_;
2850 0           my $keyValuePairs = "";
2851              
2852 0           my $keyValue = $class->KeyValue();
2853 0 0         if ($keyValue) {
2854 0           $keyValuePairs .= $keyValue;
2855             }
2856             else {
2857 0           return 0;
2858             }
2859              
2860 0           my $comma = $class->Comma();
2861 0 0         if ($comma) {
2862 0           $keyValuePairs .= $comma;
2863             }
2864             else {
2865 0           return $keyValuePairs;
2866             }
2867              
2868 0           my $rightKeyValuePairs = $class->KeyValuePairs();
2869 0 0         if ($rightKeyValuePairs) {
2870 0           $keyValuePairs .= $rightKeyValuePairs;
2871             }
2872             else {
2873 0           return 0;
2874             }
2875              
2876 0           return $keyValuePairs;
2877             }
2878              
2879             sub KeyValue {
2880 0     0     my ($class) = @_;
2881 0           my $keyValue = "";
2882              
2883 0           my $pairKey = $class->PairKey();
2884 0 0         if ($pairKey) {
2885 0           $keyValue .= $pairKey;
2886             }
2887             else {
2888 0           return 0;
2889             }
2890              
2891 0           my $colon = $class->Colon();
2892 0 0         if ($colon) {
2893 0           $keyValue .= $colon;
2894             }
2895             else {
2896 0           return 0;
2897             }
2898              
2899 0           my $pairValue = $class->PairValue();
2900 0 0         if ($pairValue) {
2901 0           $keyValue .= $pairValue;
2902             }
2903             else {
2904 0           return 0;
2905             }
2906              
2907 0           return $pairValue;
2908             }
2909              
2910             sub PairKey {
2911 0     0     my ($class) = @_;
2912              
2913 0           my $number = $class->Number();
2914 0 0         if ($number) {
2915 0           return $number;
2916             }
2917              
2918 0           my $string = $class->String();
2919 0 0         if ($string) {
2920 0           return $string;
2921             }
2922              
2923 0           my $classFunctionReturn = $class->ClassFunctionReturn();
2924 0 0         if ($classFunctionReturn) {
2925 0           return $classFunctionReturn;
2926             }
2927              
2928 0           my $functionReturn = $class->FunctionReturn();
2929 0 0         if ($functionReturn) {
2930 0           return $functionReturn;
2931             }
2932              
2933 0           my $variableName = $class->VariableName();
2934 0 0         if ($variableName) {
2935 0           return $variableName;
2936             }
2937              
2938 0           my $embedBlock = $class->EmbedBlock();
2939 0 0         if ($embedBlock) {
2940 0           return $embedBlock;
2941             }
2942              
2943 0           return 0;
2944             }
2945              
2946             sub PairValue {
2947 0     0     my ($class) = @_;
2948              
2949 0           my $realNumber = $class->RealNumber();
2950 0 0         if ($realNumber) {
2951 0           return $realNumber;
2952             }
2953              
2954 0           my $string = $class->String();
2955 0 0         if ($string) {
2956 0           return $string;
2957             }
2958              
2959 0           my $classFunctionReturn = $class->ClassFunctionReturn();
2960 0 0         if ($classFunctionReturn) {
2961 0           return $classFunctionReturn;
2962             }
2963              
2964 0           my $functionReturn = $class->FunctionReturn();
2965 0 0         if ($functionReturn) {
2966 0           return $functionReturn;
2967             }
2968              
2969 0           my $variableName = $class->VariableName();
2970 0 0         if ($variableName) {
2971 0           return $variableName;
2972             }
2973              
2974 0           my $embedBlock = $class->EmbedBlock();
2975 0 0         if ($embedBlock) {
2976 0           return $embedBlock;
2977             }
2978              
2979 0           my $arrayElement = $class->ArrayElement();
2980 0 0         if ($arrayElement) {
2981 0           return $arrayElement;
2982             }
2983              
2984 0           my $hashElement = $class->HashElement();
2985 0 0         if ($hashElement) {
2986 0           return $hashElement;
2987             }
2988              
2989 0           my $arrayList = $class->ArrayList();
2990 0 0         if ($arrayList) {
2991 0           return $arrayList;
2992             }
2993              
2994 0           my $hashRef = $class->HashRef();
2995 0 0         if ($hashRef) {
2996 0           return $hashRef;
2997             }
2998              
2999 0           return 0;
3000             }
3001              
3002             sub FunctionCall {
3003 0     0     my ($class) = @_;
3004 0           my $functionCall = "";
3005              
3006              
3007 0           my $functionName = $class->FunctionName();
3008 0 0         if ($functionName) {
3009 0           $functionCall .= $functionName;
3010             }
3011             else {
3012 0           return 0;
3013             }
3014              
3015 0           my $lParen = $class->LParen();
3016 0 0         if ($lParen) {
3017 0           $functionCall .= $lParen;
3018             }
3019             else {
3020 0           return 0;
3021             }
3022              
3023 0           my $parameters = $class->Parameters();
3024 0 0         if ($parameters) {
3025 0           $functionCall .= $parameters;
3026             }
3027              
3028 0           my $rParen = $class->RParen();
3029 0 0         if ($rParen) {
3030 0           $functionCall .= $rParen;
3031             }
3032             else {
3033 0           return 0;
3034             }
3035              
3036 0           my $semiColon = $class->SemiColon();
3037 0 0         if ($semiColon) {
3038 0           $functionCall .= $semiColon;
3039             }
3040             else {
3041 0           return 0;
3042             }
3043              
3044 0           return $functionCall;
3045             }
3046              
3047             sub Parameters {
3048 0     0     my ($class) = @_;
3049 0           my $parameters = "";
3050              
3051 0           my $param .= $class->Param();
3052 0 0         if ($param) {
3053 0           $parameters .= $param;
3054             }
3055             else {
3056 0           return 0;
3057             }
3058              
3059 0           my $comma .= $class->Comma();
3060 0 0         if ($comma) {
3061 0           $parameters .= $comma;
3062             }
3063             else {
3064 0           return $parameters;
3065             }
3066              
3067 0           my $rightParameters = $class->Parameters();
3068 0 0         if ($rightParameters) {
3069 0           $parameters .= $rightParameters;
3070             }
3071             else {
3072 0           return 0;
3073             }
3074              
3075 0           return $parameters;
3076             }
3077              
3078             sub Param {
3079 0     0     my ($class) = @_;
3080              
3081 0           my $realNumber = $class->RealNumber();
3082 0 0         if ($realNumber) {
3083 0           return $realNumber;
3084             }
3085              
3086 0           my $string = $class->String();
3087 0 0         if ($string) {
3088 0           return $string;
3089             }
3090              
3091 0           my $classFunctionReturn = $class->ClassFunctionReturn();
3092 0 0         if ($classFunctionReturn) {
3093 0           return $classFunctionReturn;
3094             }
3095              
3096 0           my $functionReturn = $class->FunctionReturn();
3097 0 0         if ($functionReturn) {
3098 0           return $functionReturn;
3099             }
3100              
3101 0           my $variableName = $class->VariableName();
3102 0 0         if ($variableName) {
3103 0           return $variableName;
3104             }
3105              
3106 0           my $embedBlock = $class->EmbedBlock();
3107 0 0         if ($embedBlock) {
3108 0           return $embedBlock;
3109             }
3110              
3111 0           my $arrayElement = $class->ArrayElement();
3112 0 0         if ($arrayElement) {
3113 0           return $arrayElement;
3114             }
3115              
3116 0           my $hashElement = $class->HashElement();
3117 0 0         if ($hashElement) {
3118 0           return $hashElement;
3119             }
3120              
3121 0           my $arrayList = $class->ArrayList();
3122 0 0         if ($arrayList) {
3123 0           return $arrayList;
3124             }
3125              
3126 0           my $hashRef = $class->HashRef();
3127 0 0         if ($hashRef) {
3128 0           return $hashRef;
3129             }
3130              
3131 0           return 0;
3132             }
3133              
3134             sub Assignment {
3135 0     0     my ($class) = @_;
3136              
3137 0           my $scalarAssignment = $class->ScalarAssignment();
3138 0 0         if ($scalarAssignment) {
3139 0           return $scalarAssignment;
3140             }
3141              
3142 0           my $arrayAssignment = $class->ArrayAssignment();
3143 0 0         if ($arrayAssignment) {
3144 0           return $arrayAssignment;
3145             }
3146              
3147 0           my $hashAssignment = $class->HashAssignment();
3148 0 0         if ($hashAssignment) {
3149 0           return $hashAssignment;
3150             }
3151              
3152 0           my $accessorAssignment = $class->AccessorAssignment();
3153 0 0         if ($accessorAssignment) {
3154 0           return $accessorAssignment;
3155             }
3156              
3157 0           return 0;
3158             }
3159              
3160             sub ScalarAssignment {
3161 0     0     my ($class) = @_;
3162 0           my $scalarAssignment = "";
3163              
3164 0           my $scalarVariable = $class->ScalarVariable();
3165 0 0         if ($scalarVariable) {
3166 0           $scalarAssignment .= $scalarVariable;
3167             }
3168             else {
3169 0           return 0;
3170             }
3171              
3172 0           my $equal = $class->Equal();
3173 0 0         if ($equal) {
3174 0           $scalarAssignment .= $equal;
3175             }
3176             else {
3177 0           return 0;
3178             }
3179              
3180 0           my $rhs = $class->RHS();
3181 0 0         if ($rhs) {
3182 0           $scalarAssignment .= $rhs;
3183             }
3184             else {
3185 0           return 0;
3186             }
3187              
3188 0           my $semiColon = $class->SemiColon();
3189 0 0         if ($semiColon) {
3190 0           $scalarAssignment .= $semiColon;
3191             }
3192             else {
3193 0           return 0;
3194             }
3195              
3196 0           return $scalarAssignment;
3197             }
3198              
3199             sub ScalarVariable {
3200 0     0     my ($class) = @_;
3201 0           my $scalarVariable = "";
3202              
3203 0           my $currentToken = $class->getToken();
3204 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
3205 0           $scalarVariable .= $currentToken->{"value"};
3206             }
3207             else {
3208 0           $class->putToken($currentToken);
3209 0           return 0;
3210             }
3211              
3212 0           return $scalarVariable;
3213             }
3214              
3215             sub RHS {
3216 0     0     my ($class) = @_;
3217              
3218 0           my $realNumber = $class->RealNumber();
3219 0 0         if ($realNumber) {
3220 0           return $realNumber;
3221             }
3222              
3223 0           my $string = $class->String();
3224 0 0         if ($string) {
3225 0           return $string;
3226             }
3227              
3228 0           my $classFunctionReturn = $class->ClassFunctionReturn();
3229 0 0         if ($classFunctionReturn) {
3230 0           return $classFunctionReturn;
3231             }
3232              
3233 0           my $functionReturn = $class->FunctionReturn();
3234 0 0         if ($functionReturn) {
3235 0           return $functionReturn;
3236             }
3237              
3238 0           my $embedBlock = $class->EmbedBlock();
3239 0 0         if ($embedBlock) {
3240 0           return $embedBlock;
3241             }
3242              
3243 0           my $arrayElement = $class->ArrayElement();
3244 0 0         if ($arrayElement) {
3245 0           return $arrayElement;
3246             }
3247              
3248 0           my $hashElement = $class->HashElement();
3249 0 0         if ($hashElement) {
3250 0           return $hashElement;
3251             }
3252              
3253 0           my $arrayList = $class->ArrayList();
3254 0 0         if ($arrayList) {
3255 0           return $arrayList;
3256             }
3257              
3258 0           my $hashRef = $class->HashRef();
3259 0 0         if ($hashRef) {
3260 0           return $hashRef;
3261             }
3262              
3263 0           my $scalarVariable = $class->ScalarVariable();
3264 0 0         if ($scalarVariable) {
3265 0           return $scalarVariable;
3266             }
3267              
3268 0           my $calc = $class->Calc();
3269 0 0         if ($calc) {
3270 0           return $calc;
3271             }
3272              
3273 0           my $classAccessor = $class->classAccessor();
3274 0 0         if ($classAccessor) {
3275 0           return $classAccessor;
3276             }
3277              
3278 0           my $stdin = $class->STDIN();
3279 0 0         if ($stdin) {
3280 0           return $stdin;
3281             }
3282              
3283 0           my $objectFunctionCall = $class->ObjectFunctionCall();
3284 0 0         if ($objectFunctionCall) {
3285 0           return $objectFunctionCall;
3286             }
3287              
3288 0           return 0;
3289             }
3290              
3291             sub FunctionReturn {
3292 0     0     my ($class) = @_;
3293 0           my $functionReturn = "";
3294              
3295 0           my $functionName = $class->FunctionName();
3296 0 0         if ($functionName) {
3297 0           $functionReturn .= $functionName;
3298             }
3299             else {
3300 0           return 0;
3301             }
3302              
3303 0           my $lParen = $class->LParen();
3304 0 0         if ($lParen) {
3305 0           $functionReturn .= $lParen;
3306             }
3307             else {
3308 0           return 0;
3309             }
3310              
3311 0           my $parameters = $class->Parameters();
3312 0 0         if ($parameters) {
3313 0           $functionReturn .= $parameters;
3314             }
3315              
3316 0           my $rParen = $class->RParen();
3317 0 0         if ($rParen) {
3318 0           $functionReturn .= $rParen;
3319             }
3320             else {
3321 0           return 0;
3322             }
3323              
3324 0           return 0;
3325             }
3326              
3327             sub ArrayElement {
3328 0     0     my ($class) = @_;
3329 0           my $arrayElement = "";
3330              
3331 0           my $arrayName = $class->ArrayName();
3332 0 0         if ($arrayName) {
3333 0           $arrayElement .= $arrayName;
3334             }
3335             else {
3336 0           return 0;
3337             }
3338              
3339 0           while (1) {
3340 0           my $arrayAccess = $class->ArrayAccess();
3341 0 0         if ($arrayAccess) {
3342 0           $arrayElement .= $arrayAccess;
3343             }
3344             else {
3345 0           return $arrayElement;
3346             }
3347             }
3348              
3349 0           return $arrayElement;
3350             }
3351              
3352             sub ArrayAccess {
3353 0     0     my ($class) = @_;
3354 0           my $arrayAccess = "";
3355              
3356 0           my $lBracket = $class->LBracket();
3357 0 0         if ($lBracket) {
3358 0           $arrayAccess .= $lBracket;
3359             }
3360             else {
3361 0           return 0;
3362             }
3363              
3364 0           my $number = $class->Number();
3365 0 0         if ($number) {
3366 0           $arrayAccess .= $number;
3367             }
3368             else {
3369 0           return 0;
3370             }
3371              
3372 0           my $rBracket = $class->RBracket();
3373 0 0         if ($rBracket) {
3374 0           $arrayAccess .= $rBracket;
3375             }
3376             else {
3377 0           return 0;
3378             }
3379              
3380 0           return $arrayAccess;
3381             }
3382              
3383             sub ArrayName {
3384 0     0     my ($class) = @_;
3385 0           my $arrayName = "";
3386              
3387 0           my $currentToken = $class->getToken();
3388 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
3389 0           $arrayName .= $currentToken->{"value"};
3390             }
3391             else {
3392 0           $class->putToken($currentToken);
3393 0           return 0;
3394             }
3395              
3396 0           return $arrayName;
3397             }
3398              
3399             sub HashElement {
3400 0     0     my ($class) = @_;
3401 0           my $hashElement = "";
3402              
3403 0           my $hashName = $class->HashName();
3404 0 0         if ($hashName) {
3405 0           $hashElement .= $hashName;
3406             }
3407             else {
3408 0           return 0;
3409             }
3410              
3411 0           while (1) {
3412 0           my $hashAccess = $class->HashAccess();
3413 0 0         if ($hashAccess) {
3414 0           $hashElement .= $hashAccess;
3415             }
3416             else {
3417 0           return $hashElement;
3418             }
3419             }
3420              
3421 0           return $hashElement;
3422             }
3423              
3424             sub HashAccess {
3425 0     0     my ($class) = @_;
3426 0           my $hashAccess = "";
3427              
3428 0           my $lBrace = $class->LBrace();
3429 0 0         if ($lBrace) {
3430 0           $hashAccess .= $lBrace;
3431             }
3432             else {
3433 0           return 0;
3434             }
3435              
3436 0           my $hashKey = $class->HashKey();
3437 0 0         if ($hashKey) {
3438 0           $hashAccess .= $hashKey;
3439             }
3440             else {
3441 0           return 0;
3442             }
3443              
3444 0           my $rBrace = $class->RBrace();
3445 0 0         if ($rBrace) {
3446 0           $hashAccess .= $rBrace;
3447             }
3448             else {
3449 0           return 0;
3450             }
3451              
3452 0           return $hashAccess;
3453             }
3454              
3455             sub HashName {
3456 0     0     my ($class) = @_;
3457 0           my $hashName = "";
3458              
3459 0           my $currentToken = $class->getToken();
3460 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
3461 0           $hashName .= $currentToken->{"value"};
3462             }
3463             else {
3464 0           $class->putToken($currentToken);
3465 0           return 0;
3466             }
3467              
3468 0           return $hashName;
3469             }
3470              
3471             sub HashKey {
3472 0     0     my ($class) = @_;
3473              
3474 0           my $hashKeyString = $class->HashKeyString();
3475 0 0         if ($hashKeyString) {
3476 0           return $hashKeyString;
3477             }
3478              
3479 0           my $hashKeyNumber = $class->HashKeyNumber();
3480 0 0         if ($hashKeyNumber) {
3481 0           return $hashKeyNumber;
3482             }
3483              
3484 0           return 0;
3485             }
3486              
3487             sub HashKeyString {
3488 0     0     my ($class) = @_;
3489 0           my $hashKeyString = "";
3490              
3491 0           my $lQuote = $class->LQuote();
3492 0 0         if ($lQuote) {
3493 0           $hashKeyString .= $lQuote;
3494             }
3495             else {
3496 0           return 0;
3497             }
3498              
3499 0           my $hashKeyStringValue = $class->HashKeyStringValue();
3500 0 0         if ($hashKeyStringValue) {
3501 0           $hashKeyString .= $hashKeyStringValue;
3502             }
3503             else {
3504 0           return 0;
3505             }
3506              
3507 0           my $rQuote = $class->RQuote();
3508 0 0         if ($rQuote) {
3509 0           $hashKeyString .= $rQuote;
3510             }
3511             else {
3512 0           return 0;
3513             }
3514              
3515 0           return $hashKeyString;
3516             }
3517              
3518             sub HashKeyStringValue {
3519 0     0     my ($class) = @_;
3520 0           my $hashKeyStringValue = "";
3521              
3522 0           my $currentToken = $class->getToken();
3523 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
3524 0           $hashKeyStringValue .= $currentToken->{"value"};
3525             }
3526             else {
3527 0           $class->putToken($currentToken);
3528 0           return 0;
3529             }
3530              
3531 0           return $hashKeyStringValue;
3532             }
3533              
3534             sub HashKeyNumber {
3535 0     0     my ($class) = @_;
3536 0           my $hashKeyNumber = "";
3537              
3538 0           my $currentToken = $class->getToken();
3539 0 0         if ( $currentToken->{"type"} eq "Symbol" ) {
3540 0           $hashKeyNumber .= $currentToken->{"value"};
3541             }
3542             else {
3543 0           $class->putToken($currentToken);
3544 0           return 0;
3545             }
3546              
3547 0           return $hashKeyNumber;
3548             }
3549              
3550             sub STDIN {
3551 0     0     my ($class) = @_;
3552 0           my $stdin = "";
3553              
3554 0           my $lessThan = $class->LessThan();
3555 0 0         if ($lessThan) {
3556 0           $stdin .= $lessThan;
3557             }
3558             else {
3559 0           return 0;
3560             }
3561              
3562 0           my $tokenStdin = $class->TokenSTDIN();
3563 0 0         if ($tokenStdin) {
3564 0           $stdin .= $tokenStdin;
3565             }
3566             else {
3567 0           return 0;
3568             }
3569              
3570 0           my $greaterThan = $class->GreaterThan();
3571 0 0         if ($greaterThan) {
3572 0           $stdin .= $greaterThan;
3573             }
3574             else {
3575 0           return 0;
3576             }
3577              
3578 0           return $stdin;
3579             }
3580              
3581             sub AccessorAssignment {
3582 0     0     my ($class) = @_;
3583 0           my $accessorAssignment = "";
3584              
3585 0           my $tokenClass = $class->TokenClass();
3586 0 0         if ($tokenClass) {
3587 0           $accessorAssignment .= $tokenClass;
3588             }
3589             else {
3590 0           return 0;
3591             }
3592              
3593 0           my $dot = $class->Dot();
3594 0 0         if ($dot) {
3595 0           $accessorAssignment .= $dot;
3596             }
3597             else {
3598 0           return 0;
3599             }
3600              
3601 0           my $hashKeyStringValue = $class->HashKeyStringValue();
3602 0 0         if ($hashKeyStringValue) {
3603 0           $accessorAssignment .= $hashKeyStringValue;
3604             }
3605             else {
3606 0           return 0;
3607             }
3608              
3609 0           my $equal = $class->Equal();
3610 0 0         if ($equal) {
3611 0           $accessorAssignment .= $equal;
3612             }
3613             else {
3614 0           return 0;
3615             }
3616              
3617 0           my $rhs = $class->RHS();
3618 0 0         if ($rhs) {
3619 0           $accessorAssignment .= $rhs;
3620             }
3621             else {
3622 0           return 0;
3623             }
3624              
3625 0           my $semiColon = $class->SemiColon();
3626 0 0         if ($semiColon) {
3627 0           $accessorAssignment .= $semiColon;
3628             }
3629             else {
3630 0           return 0;
3631             }
3632              
3633 0           return $accessorAssignment;
3634             }
3635              
3636             sub ClassAccessor {
3637 0     0     my ($class) = @_;
3638 0           my $classAccessor = "";
3639              
3640 0           my $tokenClass = $class->TokenClass();
3641 0 0         if ($tokenClass) {
3642 0           $classAccessor .= $tokenClass;
3643             }
3644             else {
3645 0           return 0;
3646             }
3647              
3648 0           my $dot = $class->Dot();
3649 0 0         if ($dot) {
3650 0           $classAccessor .= $dot;
3651             }
3652             else {
3653 0           return 0;
3654             }
3655              
3656 0           my $hashKeyStringValue = $class->HashKeyStringValue();
3657 0 0         if ($hashKeyStringValue) {
3658 0           $classAccessor .= $hashKeyStringValue;
3659             }
3660             else {
3661 0           return 0;
3662             }
3663              
3664 0           return $classAccessor;
3665             }
3666              
3667             sub ClassFunctionReturn {
3668 0     0     my ($class) = @_;
3669 0           my $classFunctionReturn = "";
3670              
3671 0           my $tokenClass = $class->TokenClass();
3672 0 0         if ($tokenClass) {
3673 0           $classFunctionReturn .= $tokenClass;
3674             }
3675             else {
3676 0           return 0;
3677             }
3678              
3679 0           my $dot = $class->Dot();
3680 0 0         if ($dot) {
3681 0           $classFunctionReturn .= $dot;
3682             }
3683             else {
3684 0           return 0;
3685             }
3686              
3687 0           my $functionName = $class->FunctionName();
3688 0 0         if ($functionName) {
3689 0           $classFunctionReturn .= $functionName;
3690             }
3691             else {
3692 0           return 0;
3693             }
3694              
3695 0           my $lParen = $class->LParen();
3696 0 0         if ($lParen) {
3697 0           $classFunctionReturn .= $lParen;
3698             }
3699             else {
3700 0           return 0;
3701             }
3702              
3703 0           my $parameters = $class->Parameters();
3704 0 0         if ($parameters) {
3705 0           $classFunctionReturn .= $parameters;
3706             }
3707              
3708 0           my $rParen = $class->RParen();
3709 0 0         if ($rParen) {
3710 0           $classFunctionReturn .= $rParen;
3711             }
3712             else {
3713 0           return 0;
3714             }
3715              
3716 0           return $classFunctionReturn;
3717             }
3718              
3719             sub ArrayAssignment {
3720 0     0     my ($class) = @_;
3721 0           my $arrayAssignment = "";
3722              
3723 0           my $arrayElement = $class->ArrayElement();
3724 0 0         if ($arrayElement) {
3725 0           $arrayAssignment .= $arrayElement;
3726             }
3727             else {
3728 0           return 0;
3729             }
3730              
3731 0           my $equal = $class->Equal();
3732 0 0         if ($equal) {
3733 0           $arrayAssignment .= $equal;
3734             }
3735             else {
3736 0           return 0;
3737             }
3738              
3739 0           my $rhs = $class->RHS();
3740 0 0         if ($rhs) {
3741 0           $arrayAssignment .= $rhs;
3742             }
3743             else {
3744 0           return 0;
3745             }
3746              
3747 0           my $semiColon = $class->SemiColon();
3748 0 0         if ($semiColon) {
3749 0           $arrayAssignment .= $semiColon;
3750             }
3751             else {
3752 0           return 0;
3753             }
3754              
3755 0           return $arrayAssignment;
3756             }
3757              
3758             sub HashAssignment {
3759 0     0     my ($class) = @_;
3760 0           my $hashAssignment = "";
3761              
3762 0           my $hashElement = $class->HashElement();
3763 0 0         if ($hashElement) {
3764 0           $hashAssignment .= $hashElement;
3765             }
3766             else {
3767 0           return 0;
3768             }
3769              
3770 0           my $equal = $class->Equal();
3771 0 0         if ($equal) {
3772 0           $hashAssignment .= $equal;
3773             }
3774             else {
3775 0           return 0;
3776             }
3777              
3778 0           my $rhs = $class->RHS();
3779 0 0         if ($rhs) {
3780 0           $hashAssignment .= $rhs;
3781             }
3782             else {
3783 0           return 0;
3784             }
3785              
3786 0           my $semiColon = $class->SemiColon();
3787 0 0         if ($semiColon) {
3788 0           $hashAssignment .= $semiColon;
3789             }
3790             else {
3791 0           return 0;
3792             }
3793              
3794 0           return $hashAssignment;
3795             }
3796              
3797             sub Calc {
3798 0     0     my ($class) = @_;
3799 0           my $calc = "";
3800              
3801 0           my $calcExpression = $class->CalcExpression();
3802 0 0         if ($calcExpression) {
3803 0           $calc .= $calcExpression;
3804             }
3805             else {
3806 0           return 0;
3807             }
3808              
3809 0           return $calc;
3810             }
3811              
3812             sub CalcExpression {
3813 0     0     my ($class) = @_;
3814 0           my $calcExpression = "";
3815              
3816 0           my $calcOperands = $class->CalcOperands();
3817 0 0         if ($calcOperands) {
3818 0           $calcExpression .= $calcOperands;
3819             }
3820             else {
3821 0           return 0;
3822             }
3823              
3824 0           my $calcOperator = $class->CalcOperator();
3825 0 0         if ($calcOperator) {
3826 0           $calcExpression .= $calcOperator;
3827             }
3828             else {
3829 0           return $calcExpression;
3830             }
3831              
3832 0           my $rightCalcExpression = $class->CalcExpression();
3833 0 0         if ($rightCalcExpression) {
3834 0           $calcExpression .= $rightCalcExpression;
3835             }
3836             else {
3837 0           return 0;
3838             }
3839              
3840 0           return $calcExpression;
3841             }
3842              
3843             sub CalcOperands {
3844 0     0     my ($class) = @_;
3845              
3846 0           my $realNumber = $class->RealNumber();
3847 0 0         if ($realNumber) {
3848 0           return $realNumber;
3849             }
3850              
3851 0           my $classFunctionReturn = $class->ClassFunctionReturn();
3852 0 0         if ($classFunctionReturn) {
3853 0           return $classFunctionReturn;
3854             }
3855              
3856 0           my $functionReturn = $class->FunctionReturn();
3857 0 0         if ($functionReturn) {
3858 0           return $functionReturn;
3859             }
3860              
3861 0           my $embedBlock = $class->EmbedBlock();
3862 0 0         if ($embedBlock) {
3863 0           return $embedBlock;
3864             }
3865              
3866 0           my $arrayElement = $class->ArrayElement();
3867 0 0         if ($arrayElement) {
3868 0           return $arrayElement;
3869             }
3870              
3871 0           my $hashElement = $class->HashElement();
3872 0 0         if ($hashElement) {
3873 0           return $hashElement;
3874             }
3875              
3876 0           my $scalarVariable = $class->ScalarVariable();
3877 0 0         if ($scalarVariable) {
3878 0           return $scalarVariable;
3879             }
3880              
3881 0           my $classAccessor = $class->classAccessor();
3882 0 0         if ($classAccessor) {
3883 0           return $classAccessor;
3884             }
3885              
3886 0           my $objectFunctionCall = $class->ObjectFunctionCall();
3887 0 0         if ($objectFunctionCall) {
3888 0           return $objectFunctionCall;
3889             }
3890              
3891 0           return 0;
3892             }
3893              
3894             sub CalcOperator {
3895 0     0     my ($class) = @_;
3896              
3897 0           my $plus = $class->Plus();
3898 0 0         if ($plus) {
3899 0           return $plus;
3900             }
3901              
3902 0           my $minus = $class->Minus();
3903 0 0         if ($minus) {
3904 0           return $minus;
3905             }
3906              
3907 0           my $multiply = $class->Multiply();
3908 0 0         if ($multiply) {
3909 0           return $multiply;
3910             }
3911              
3912 0           my $divide = $class->Divide();
3913 0 0         if ($divide) {
3914 0           return $divide;
3915             }
3916              
3917 0           my $modulus = $class->Modulus();
3918 0 0         if ($modulus) {
3919 0           return $modulus;
3920             }
3921              
3922 0           my $exponent = $class->Exponent();
3923 0 0         if ($exponent) {
3924 0           return $exponent;
3925             }
3926              
3927 0           my $embedBlock = $class->EmbedBlock();
3928 0 0         if ($embedBlock) {
3929 0           return $embedBlock;
3930             }
3931              
3932 0           return 0;
3933             }
3934              
3935             sub Return {
3936 0     0     my ($class) = @_;
3937 0           my $return = "";
3938              
3939 0           my $tokenReturn = $class->TokenReturn();
3940 0 0         if ($tokenReturn) {
3941 0           $return .= $tokenReturn;
3942             }
3943             else {
3944 0           return 0;
3945             }
3946              
3947 0           my $rhs = $class->RHS();
3948 0 0         if ($rhs) {
3949 0           $return .= $rhs;
3950             }
3951              
3952 0           my $semiColon = $class->SemiColon();
3953 0 0         if ($semiColon) {
3954 0           $return .= $semiColon;
3955             }
3956             else {
3957 0           return 0;
3958             }
3959              
3960 0           return $return;
3961             }
3962              
3963             sub Last {
3964 0     0     my ($class) = @_;
3965 0           my $last = "";
3966              
3967 0           my $tokenLast = $class->TokenLast();
3968 0 0         if ($tokenLast) {
3969 0           $last .= $tokenLast;
3970             }
3971             else {
3972 0           return 0;
3973             }
3974              
3975 0           my $semiColon = $class->SemiColon();
3976 0 0         if ($semiColon) {
3977 0           $last .= $semiColon;
3978             }
3979             else {
3980 0           return 0;
3981             }
3982              
3983 0           return $last;
3984             }
3985              
3986             sub Next {
3987 0     0     my ($class) = @_;
3988 0           my $next = "";
3989              
3990 0           my $tokenNext = $class->TokenNext();
3991 0 0         if ($tokenNext) {
3992 0           $next .= $tokenNext;
3993             }
3994             else {
3995 0           return 0;
3996             }
3997              
3998 0           my $semiColon = $class->SemiColon();
3999 0 0         if ($semiColon) {
4000 0           $next .= $semiColon;
4001             }
4002             else {
4003 0           return 0;
4004             }
4005              
4006 0           return $next;
4007             }
4008              
4009             sub ObjectFunctionCall {
4010 0     0     my ($class) = @_;
4011 0           my $objectFunctionCall = "";
4012              
4013 0           my $object = $class->Object();
4014 0 0         if ($object) {
4015 0           $objectFunctionCall .= $object;
4016             }
4017             else {
4018 0           return 0;
4019             }
4020              
4021 0           my $dot = $class->Dot();
4022 0 0         if ($dot) {
4023 0           $objectFunctionCall .= $dot;
4024             }
4025             else {
4026 0           return 0;
4027             }
4028              
4029 0           my $functionName = $class->FunctionName();
4030 0 0         if ($functionName) {
4031 0           $objectFunctionCall .= $functionName;
4032             }
4033             else {
4034 0           return 0;
4035             }
4036              
4037 0           my $lParen = $class->LParen();
4038 0 0         if ($lParen) {
4039 0           $objectFunctionCall .= $lParen;
4040             }
4041             else {
4042 0           return 0;
4043             }
4044              
4045 0           my $parameters = $class->Parameters();
4046 0 0         if ($dot) {
4047 0           $objectFunctionCall .= $parameters;
4048             }
4049              
4050 0           my $rParen = $class->RParen();
4051 0 0         if ($rParen) {
4052 0           $objectFunctionCall .= $rParen;
4053             }
4054             else {
4055 0           return 0;
4056             }
4057              
4058 0           return $objectFunctionCall;
4059             }
4060              
4061             sub TokenReturn {
4062 0     0     my ($class) = @_;
4063 0           my $tokenReturn = "";
4064              
4065 0           my $currentToken = $class->getToken();
4066 0 0         if ( $currentToken->{"value"} eq "return" ) {
4067 0           $tokenReturn .= $currentToken->{"value"};
4068             }
4069             else {
4070 0           $class->putToken($currentToken);
4071 0           return 0;
4072             }
4073              
4074 0           return $tokenReturn;
4075             }
4076              
4077             sub TokenNext {
4078 0     0     my ($class) = @_;
4079 0           my $tokenNext = "";
4080              
4081 0           my $currentToken = $class->getToken();
4082 0 0         if ( $currentToken->{"value"} eq "next" ) {
4083 0           $tokenNext .= $currentToken->{"value"};
4084             }
4085             else {
4086 0           $class->putToken($currentToken);
4087 0           return 0;
4088             }
4089              
4090 0           return $tokenNext;
4091             }
4092              
4093             sub TokenLast {
4094 0     0     my ($class) = @_;
4095 0           my $tokenLast = "";
4096              
4097 0           my $currentToken = $class->getToken();
4098 0 0         if ( $currentToken->{"value"} eq "last" ) {
4099 0           $tokenLast .= $currentToken->{"value"};
4100             }
4101             else {
4102 0           $class->putToken($currentToken);
4103 0           return 0;
4104             }
4105              
4106 0           return $tokenLast;
4107             }
4108              
4109             sub TokenElse {
4110 0     0     my ($class) = @_;
4111 0           my $tokenElse = "";
4112              
4113 0           my $currentToken = $class->getToken();
4114 0 0         if ( $currentToken->{"value"} eq "else" ) {
4115 0           $tokenElse .= $currentToken->{"value"};
4116             }
4117             else {
4118 0           $class->putToken($currentToken);
4119 0           return 0;
4120             }
4121              
4122 0           return $tokenElse;
4123             }
4124              
4125             sub TokenElsIf {
4126 0     0     my ($class) = @_;
4127 0           my $tokenElseIf = "";
4128              
4129 0           my $currentToken = $class->getToken();
4130 0 0         if ( $currentToken->{"value"} eq "elsif" ) {
4131 0           $tokenElseIf .= $currentToken->{"value"};
4132             }
4133             else {
4134 0           $class->putToken($currentToken);
4135 0           return 0;
4136             }
4137              
4138 0           return $tokenElseIf;
4139             }
4140              
4141             sub TokenIf {
4142 0     0     my ($class) = @_;
4143 0           my $if = "";
4144              
4145 0           my $currentToken = $class->getToken();
4146 0 0         if ( $currentToken->{"value"} eq "if" ) {
4147 0           $if .= $currentToken->{"value"};
4148             }
4149             else {
4150 0           $class->putToken($currentToken);
4151 0           return 0;
4152             }
4153              
4154 0           return $if;
4155             }
4156              
4157             sub TokenFor {
4158 0     0     my ($class) = @_;
4159 0           my $for = "";
4160              
4161 0           my $currentToken = $class->getToken();
4162 0 0         if ( $currentToken->{"value"} eq "for" ) {
4163 0           $for .= $currentToken->{"value"};
4164             }
4165             else {
4166 0           $class->putToken($currentToken);
4167 0           return 0;
4168             }
4169              
4170 0           return $for;
4171             }
4172              
4173             sub TokenForEach {
4174 0     0     my ($class) = @_;
4175 0           my $forEach = "";
4176              
4177 0           my $currentToken = $class->getToken();
4178 0 0         if ( $currentToken->{"value"} eq "foreach" ) {
4179 0           $forEach .= $currentToken->{"value"};
4180             }
4181             else {
4182 0           $class->putToken($currentToken);
4183 0           return 0;
4184             }
4185              
4186 0           return $forEach;
4187             }
4188              
4189             sub TokenWhile {
4190 0     0     my ($class) = @_;
4191 0           my $tokenWhile = "";
4192              
4193 0           my $currentToken = $class->getToken();
4194 0 0         if ( $currentToken->{"value"} eq "while" ) {
4195 0           $tokenWhile .= $currentToken->{"value"};
4196             }
4197             else {
4198 0           $class->putToken($currentToken);
4199 0           return 0;
4200             }
4201              
4202 0           return $tokenWhile;
4203             }
4204              
4205             sub TokenFunction {
4206 0     0     my ($class) = @_;
4207 0           my $tokenFunction = "";
4208              
4209 0           my $currentToken = $class->getToken();
4210 0 0         if ( $currentToken->{"value"} eq "function" ) {
4211 0           $tokenFunction .= $currentToken->{"value"};
4212             }
4213             else {
4214 0           $class->putToken($currentToken);
4215 0           return 0;
4216             }
4217              
4218 0           return $tokenFunction;
4219             }
4220              
4221             sub TokenParent {
4222 0     0     my ($class) = @_;
4223 0           my $tokenParent = "";
4224              
4225 0           my $currentToken = $class->getToken();
4226 0 0         if ( $currentToken->{"value"} eq "parent" ) {
4227 0           $tokenParent .= $currentToken->{"value"};
4228             }
4229             else {
4230 0           $class->putToken($currentToken);
4231 0           return 0;
4232             }
4233              
4234 0           return $tokenParent;
4235             }
4236              
4237             sub TokenClass {
4238 0     0     my ($class) = @_;
4239 0           my $tokenClass = "";
4240              
4241 0           my $currentToken = $class->getToken();
4242 0 0         if ( $currentToken->{"value"} eq "class" ) {
4243 0           $tokenClass .= $currentToken->{"value"};
4244             }
4245             else {
4246 0           $class->putToken($currentToken);
4247 0           return 0;
4248             }
4249              
4250 0           return $tokenClass;
4251             }
4252              
4253             sub TokenEmbedBlock {
4254 0     0     my ($class) = @_;
4255 0           my $tokenEmbedBlock = "";
4256              
4257 0           my $currentToken = $class->getToken();
4258 0 0         if ( $currentToken->{"value"} eq "embed" ) {
4259 0           $tokenEmbedBlock .= $currentToken->{"value"};
4260             }
4261             else {
4262 0           $class->putToken($currentToken);
4263 0           return 0;
4264             }
4265              
4266 0           return $tokenEmbedBlock;
4267             }
4268              
4269             sub TokenSTDIN {
4270 0     0     my ($class) = @_;
4271 0           my $tokenSTDIN = "";
4272              
4273 0           my $currentToken = $class->getToken();
4274 0 0         if ( $currentToken->{"value"} eq "STDIN" ) {
4275 0           $tokenSTDIN .= $currentToken->{"value"};
4276             }
4277             else {
4278 0           $class->putToken($currentToken);
4279 0           return 0;
4280             }
4281              
4282 0           return $tokenSTDIN;
4283             }
4284              
4285             sub Modulus {
4286 0     0     my ($class) = @_;
4287 0           my $modulus = "";
4288              
4289 0           my $currentToken = $class->getToken();
4290 0 0         if ( $currentToken->{"value"} eq "%" ) {
4291 0           $modulus .= $currentToken->{"value"};
4292             }
4293             else {
4294 0           $class->putToken($currentToken);
4295 0           return 0;
4296             }
4297              
4298 0           return $modulus;
4299             }
4300              
4301             sub Exponent {
4302 0     0     my ($class) = @_;
4303 0           my $exponent = "";
4304              
4305 0           my $currentToken = $class->getToken();
4306 0 0         if ( $currentToken->{"value"} eq "**" ) {
4307 0           $exponent .= $currentToken->{"value"};
4308             }
4309             else {
4310 0           $class->putToken($currentToken);
4311 0           return 0;
4312             }
4313              
4314 0           return $exponent;
4315             }
4316              
4317             sub LogicalAnd {
4318 0     0     my ($class) = @_;
4319 0           my $logicalAnd = "";
4320              
4321 0           my $currentToken = $class->getToken();
4322 0 0         if ( $currentToken->{"value"} eq "&&" ) {
4323 0           $logicalAnd .= $currentToken->{"value"};
4324             }
4325             else {
4326 0           $class->putToken($currentToken);
4327 0           return 0;
4328             }
4329              
4330 0           return $logicalAnd;
4331             }
4332              
4333             sub LogicalOr {
4334 0     0     my ($class) = @_;
4335 0           my $logicalOr = "";
4336              
4337 0           my $currentToken = $class->getToken();
4338 0 0         if ( $currentToken->{"value"} eq "||" ) {
4339 0           $logicalOr .= $currentToken->{"value"};
4340             }
4341             else {
4342 0           $class->putToken($currentToken);
4343 0           return 0;
4344             }
4345              
4346 0           return $logicalOr;
4347             }
4348              
4349             sub NotEqulas {
4350 0     0     my ($class) = @_;
4351 0           my $notEquals = "";
4352              
4353 0           my $currentToken = $class->getToken();
4354 0 0         if ( $currentToken->{"value"} eq "!=" ) {
4355 0           $notEquals .= $currentToken->{"value"};
4356             }
4357             else {
4358 0           $class->putToken($currentToken);
4359 0           return 0;
4360             }
4361              
4362 0           return $notEquals;
4363             }
4364              
4365             sub StringNotEquals {
4366 0     0     my ($class) = @_;
4367 0           my $stringNotEquals = "";
4368              
4369 0           my $currentToken = $class->getToken();
4370 0 0         if ( $currentToken->{"value"} eq "ne" ) {
4371 0           $stringNotEquals .= $currentToken->{"value"};
4372             }
4373             else {
4374 0           $class->putToken($currentToken);
4375 0           return 0;
4376             }
4377              
4378 0           return $stringNotEquals;
4379             }
4380              
4381             sub StringEquals {
4382 0     0     my ($class) = @_;
4383 0           my $stringEquals = "";
4384              
4385 0           my $currentToken = $class->getToken();
4386 0 0         if ( $currentToken->{"value"} eq "eq" ) {
4387 0           $stringEquals .= $currentToken->{"value"};
4388             }
4389             else {
4390 0           $class->putToken($currentToken);
4391 0           return 0;
4392             }
4393              
4394 0           return $stringEquals;
4395             }
4396              
4397             sub LessThanEquals {
4398 0     0     my ($class) = @_;
4399 0           my $lessThanEquals = "";
4400              
4401 0           my $currentToken = $class->getToken();
4402 0 0         if ( $currentToken->{"value"} eq "<=" ) {
4403 0           $lessThanEquals .= $currentToken->{"value"};
4404             }
4405             else {
4406 0           $class->putToken($currentToken);
4407 0           return 0;
4408             }
4409              
4410 0           return $lessThanEquals;
4411             }
4412              
4413             sub GreaterThanEquals {
4414 0     0     my ($class) = @_;
4415 0           my $greaterThanEquals = "";
4416              
4417 0           my $currentToken = $class->getToken();
4418 0 0         if ( $currentToken->{"value"} eq ">=" ) {
4419 0           $greaterThanEquals .= $currentToken->{"value"};
4420             }
4421             else {
4422 0           $class->putToken($currentToken);
4423 0           return 0;
4424             }
4425              
4426 0           return $greaterThanEquals;
4427             }
4428              
4429             sub GreaterThan {
4430 0     0     my ($class) = @_;
4431 0           my $greaterThan = "";
4432              
4433 0           my $currentToken = $class->getToken();
4434 0 0         if ( $currentToken->{"value"} eq ">" ) {
4435 0           $greaterThan .= $currentToken->{"value"};
4436             }
4437             else {
4438 0           $class->putToken($currentToken);
4439 0           return 0;
4440             }
4441              
4442 0           return $greaterThan;
4443             }
4444              
4445             sub LessThan {
4446 0     0     my ($class) = @_;
4447 0           my $lessThan = "";
4448              
4449 0           my $currentToken = $class->getToken();
4450 0 0         if ( $currentToken->{"value"} eq "<" ) {
4451 0           $lessThan .= $currentToken->{"value"};
4452             }
4453             else {
4454 0           $class->putToken($currentToken);
4455 0           return 0;
4456             }
4457              
4458 0           return $lessThan;
4459             }
4460              
4461             sub Equals {
4462 0     0     my ($class) = @_;
4463 0           my $equals = "";
4464              
4465 0           my $currentToken = $class->getToken();
4466 0 0         if ( $currentToken->{"value"} eq "==" ) {
4467 0           $equals .= $currentToken->{"value"};
4468             }
4469             else {
4470 0           $class->putToken($currentToken);
4471 0           return 0;
4472             }
4473              
4474 0           return $equals;
4475             }
4476              
4477             sub Plus {
4478 0     0     my ($class) = @_;
4479 0           my $plus = "";
4480              
4481 0           my $currentToken = $class->getToken();
4482 0 0         if ( $currentToken->{"value"} eq "+" ) {
4483 0           $plus .= $currentToken->{"value"};
4484             }
4485             else {
4486 0           $class->putToken($currentToken);
4487 0           return 0;
4488             }
4489              
4490 0           return $plus;
4491             }
4492              
4493             sub Minus {
4494 0     0     my ($class) = @_;
4495 0           my $minus = "";
4496              
4497 0           my $currentToken = $class->getToken();
4498 0 0         if ( $currentToken->{"value"} eq "-" ) {
4499 0           $minus .= $currentToken->{"value"};
4500             }
4501             else {
4502 0           $class->putToken($currentToken);
4503 0           return 0;
4504             }
4505              
4506 0           return $minus;
4507             }
4508              
4509             sub Multiply {
4510 0     0     my ($class) = @_;
4511 0           my $multiply = "";
4512              
4513 0           my $currentToken = $class->getToken();
4514 0 0         if ( $currentToken->{"value"} eq "*" ) {
4515 0           $multiply .= $currentToken->{"value"};
4516             }
4517             else {
4518 0           $class->putToken($currentToken);
4519 0           return 0;
4520             }
4521              
4522 0           return $multiply;
4523             }
4524              
4525             sub Divide {
4526 0     0     my ($class) = @_;
4527 0           my $divide = "";
4528              
4529 0           my $currentToken = $class->getToken();
4530 0 0         if ( $currentToken->{"value"} eq "/" ) {
4531 0           $divide .= $currentToken->{"value"};
4532             }
4533             else {
4534 0           $class->putToken($currentToken);
4535 0           return 0;
4536             }
4537              
4538 0           return $divide;
4539             }
4540              
4541             sub Quote {
4542 0     0     my ($class) = @_;
4543 0           my $quote = "";
4544              
4545 0           my $currentToken = $class->getToken();
4546 0 0         if ( $currentToken->{"value"} eq '"' ) {
4547 0           $quote .= $currentToken->{"value"};
4548             }
4549             else {
4550 0           $class->putToken($currentToken);
4551 0           return 0;
4552             }
4553              
4554 0           return $quote;
4555             }
4556              
4557             sub SemiColon {
4558 0     0     my ($class) = @_;
4559 0           my $semiColon = "";
4560              
4561 0           my $currentToken = $class->getToken();
4562 0 0         if ( $currentToken->{"value"} eq ";" ) {
4563 0           $semiColon .= $currentToken->{"value"};
4564             }
4565             else {
4566 0           $class->putToken($currentToken);
4567 0           return 0;
4568             }
4569              
4570 0           return $semiColon;
4571             }
4572              
4573             sub Colon {
4574 0     0     my ($class) = @_;
4575 0           my $colon = "";
4576              
4577 0           my $currentToken = $class->getToken();
4578 0 0         if ( $currentToken->{"value"} eq ":" ) {
4579 0           $colon .= $currentToken->{"value"};
4580             }
4581             else {
4582 0           $class->putToken($currentToken);
4583 0           return 0;
4584             }
4585              
4586 0           return $colon;
4587             }
4588              
4589             sub Dot {
4590 0     0     my ($class) = @_;
4591 0           my $dot = "";
4592              
4593 0           my $currentToken = $class->getToken();
4594 0 0         if ( $currentToken->{"value"} eq "." ) {
4595 0           $dot .= $currentToken->{"value"};
4596             }
4597             else {
4598 0           $class->putToken($currentToken);
4599 0           return 0;
4600             }
4601              
4602 0           return $dot;
4603             }
4604              
4605             sub Equal {
4606 0     0     my ($class) = @_;
4607 0           my $equal = "";
4608              
4609 0           my $currentToken = $class->getToken();
4610 0 0         if ( $currentToken->{"value"} eq "=" ) {
4611 0           $equal .= $currentToken->{"value"};
4612             }
4613             else {
4614 0           $class->putToken($currentToken);
4615 0           return 0;
4616             }
4617              
4618 0           return $equal;
4619             }
4620              
4621             sub Comma {
4622 0     0     my ($class) = @_;
4623 0           my $comma = "";
4624              
4625 0           my $currentToken = $class->getToken();
4626 0 0         if ( $currentToken->{"value"} eq "," ) {
4627 0           $comma .= $currentToken->{"value"};
4628             }
4629             else {
4630 0           $class->putToken($currentToken);
4631 0           return 0;
4632             }
4633              
4634 0           return $comma;
4635             }
4636              
4637             sub LParen {
4638 0     0     my ($class) = @_;
4639 0           my $lParen = "";
4640              
4641 0           my $currentToken = $class->getToken();
4642 0 0         if ( $currentToken->{"value"} eq "(" ) {
4643 0           $lParen .= $currentToken->{"value"};
4644             }
4645             else {
4646 0           $class->putToken($currentToken);
4647 0           return 0;
4648             }
4649              
4650 0           return $lParen;
4651             }
4652              
4653             sub RParen {
4654 0     0     my ($class) = @_;
4655 0           my $rParen = "";
4656              
4657 0           my $currentToken = $class->getToken();
4658 0 0         if ( $currentToken->{"value"} eq ")" ) {
4659 0           $rParen .= $currentToken->{"value"};
4660             }
4661             else {
4662 0           $class->putToken($currentToken);
4663 0           return 0;
4664             }
4665              
4666 0           return $rParen;
4667             }
4668              
4669             sub LBrace {
4670 0     0     my ($class) = @_;
4671 0           my $lBrace = "";
4672              
4673 0           my $currentToken = $class->getToken();
4674 0 0         if ( $currentToken->{"value"} eq "{" ) {
4675 0           $lBrace .= $currentToken->{"value"};
4676             }
4677             else {
4678 0           $class->putToken($currentToken);
4679 0           return 0;
4680             }
4681              
4682 0           return $lBrace;
4683             }
4684              
4685             sub RBrace {
4686 0     0     my ($class) = @_;
4687 0           my $rBrace = "";
4688              
4689 0           my $currentToken = $class->getToken();
4690 0 0         if ( $currentToken->{"value"} eq "}" ) {
4691 0           $rBrace .= $currentToken->{"value"};
4692             }
4693             else {
4694 0           $class->putToken($currentToken);
4695 0           return 0;
4696             }
4697              
4698 0           return $rBrace;
4699             }
4700              
4701             sub LBracket {
4702 0     0     my ($class) = @_;
4703 0           my $lBracket = "";
4704              
4705 0           my $currentToken = $class->getToken();
4706 0 0         if ( $currentToken->{"value"} eq "[" ) {
4707 0           $lBracket .= $currentToken->{"value"};
4708             }
4709             else {
4710 0           $class->putToken($currentToken);
4711 0           return 0;
4712             }
4713              
4714 0           return $lBracket;
4715             }
4716              
4717             sub RBracket {
4718 0     0     my ($class) = @_;
4719 0           my $rBracket = "";
4720              
4721 0           my $currentToken = $class->getToken();
4722 0 0         if ( $currentToken->{"value"} eq "]" ) {
4723 0           $rBracket .= $currentToken->{"value"};
4724             }
4725             else {
4726 0           $class->putToken($currentToken);
4727 0           return 0;
4728             }
4729              
4730 0           return $rBracket;
4731             }
4732              
4733             1;
4734              
4735             package Lang::HL::Syntax;
4736              
4737 1     1   13521 use strict;
  1         4  
  1         36  
4738 1     1   7 use warnings;
  1         2  
  1         45  
4739 1     1   7 use utf8;
  1         2  
  1         8  
4740 1     1   19 use Data::Printer;
  1         2  
  1         5  
4741              
4742             our $VERSION = '0.08';
4743              
4744             our @ISA = qw(Lexer Parser);
4745              
4746             sub new {
4747 0     0 0   my ($class) = @_;
4748 0           return bless {}, $class;
4749             }
4750              
4751             sub syntax {
4752 0     0 0   my ( $class, $program ) = @_;
4753              
4754 0           $program =~ s/[\t\r\n\f]+//g;
4755              
4756 0           my @tokens = $class->lexer($program);
4757             #p(@tokens);
4758 0           my $code = $class->parse( \@tokens );
4759 0           return $code;
4760             }
4761              
4762             1;
4763              
4764             __END__