xsawyerx / guacamole

Guacamole is a parser toolkit for Standard Perl. It provides fully static BNF-based parsing capability to a reasonable subset of Perl.
https://metacpan.org/pod/Guacamole
20 stars 8 forks source link

'for' loop issue #115

Closed valcomm closed 2 years ago

valcomm commented 2 years ago

Simplified code

#!/usr/bin/env perl

use standard;
use strict;
use warnings;

for
  ( my $do_req = 1;
    $do_req;
  ) {
  $do_req = 0;
}

produces lengthy

File './1.pl' does not pass Standard Perl.
Parser says:
> Error in SLIF parse: No lexeme found at line 10, column 3
> * String before error: ngs;\n\nfor\n  ( my $do_req = 1;\n    $do_req;\n\s\s
> * The error was at line 10, column 3, and at character 0x0029 ')', ...
> * here: ) {\n  $do_req = 0;\n}\n\n\n# for ( my $do_req = 1
> Marpa::R2 exception at /home/val/.plenv/versions/5.32.0/lib/perl5/site_perl/5.32.0/Guacamole.pm line 2103.
>
> Failed to parse past: warnings (char 7, length 1), expected [Lex-0],[Lex-10],[Lex-2],[Lex-4],[Lex-5],[Lex-7],[Lex-9],LParen,OpKeywordMy,Ellipsis,OpKeywordUse,OpKeywordNo,OpKeywordRequire,OpKeywordPackage,OpKeywordSub,OpInc,OpUnary,OpNameNot,OpKeywordOur,OpKeywordLocal,OpKeywordState,UnderscorePackage,UnderscoreFile,UnderscoreLine,UnderscoreSub,SigilScalar,SigilArray,SigilHash,SigilGlob,SigilCode,SigilArrayTop,SubNameNonQLike,SubName,LBrace,LBracket,SingleQuote,DoubleQuote,OpKeywordAbs,OpKeywordAccept,OpKeywordAlarm,OpKeywordAtan2,OpKeywordBind,OpKeywordBinmode,OpKeywordBless,OpKeywordBreak,OpKeywordCaller,OpKeywordChdir,OpKeywordChmod,OpKeywordChomp,OpKeywordChop,OpKeywordChown,OpKeywordChr,OpKeywordChroot,OpKeywordClose,OpKeywordClosedir,OpKeywordConnect,OpKeywordCos,OpKeywordCrypt,OpKeywordDbmclose,OpKeywordDbmopen,OpKeywordDefined,OpKeywordDelete,OpKeywordDie,OpKeywordDo,OpKeywordDump,OpKeywordEach,OpKeywordEof,OpKeywordEval,OpKeywordEvalbytes,OpKeywordExists,OpKeywordExit,OpKeywordExp,OpKeywordFc,OpKeywordFcntl,OpKeywordFileno,OpKeywordFlock,OpKeywordFork,OpKeywordGetc,OpKeywordGetlogin,OpKeywordGetpeername,OpKeywordGetpgrp,OpKeywordGetppid,OpKeywordGetpriority,OpKeywordGetpwnam,OpKeywordGetgrnam,OpKeywordGethostbyname,OpKeywordGetnetbyname,OpKeywordGetprotobyname,OpKeywordGetpwuid,OpKeywordGetgrgid,OpKeywordGetservbyname,OpKeywordGethostbyaddr,OpKeywordGetnetbyaddr,OpKeywordGetprotobynumber,OpKeywordGetservbyport,OpKeywordGetpwent,OpKeywordGetgrent,OpKeywordGethostent,OpKeywordGetnetent,OpKeywordGetprotoent,OpKeywordGetservent,OpKeywordSetpwent,OpKeywordSetgrent,OpKeywordSethostent,OpKeywordSetnetent,OpKeywordSetprotoent,OpKeywordSetservent,OpKeywordEndpwent,OpKeywordEndgrent,OpKeywordEndhostent,OpKeywordEndnetent,OpKeywordEndprotoent,OpKeywordEndservent,OpKeywordExec,OpKeywordGetsockname,OpKeywordGetsockopt,OpKeywordGlob,OpKeywordGmtime,OpKeywordGoto,OpKeywordGrep,OpKeywordHex,OpKeywordIndex,OpKeywordInt,OpKeywordIoctl,OpKeywordJoin,OpKeywordKeys,OpKeywordKill,OpKeywordLast,OpKeywordLc,OpKeywordLcfirst,OpKeywordLength,OpKeywordLink,OpKeywordListen,OpKeywordLocaltime,OpKeywordLock,OpKeywordLog,OpKeywordLstat,OpKeywordMap,OpKeywordMkdir,OpKeywordMsgctl,OpKeywordMsgget,OpKeywordMsgrcv,OpKeywordMsgsnd,OpKeywordNext,OpKeywordOct,OpKeywordOpen,OpKeywordOpendir,OpKeywordOrd,OpKeywordPack,OpKeywordPipe,OpKeywordPop,OpKeywordPos,OpKeywordPrint,OpKeywordPrintf,OpKeywordPrototype,OpKeywordPush,OpKeywordQuotemeta,OpKeywordRand,OpKeywordRead,OpKeywordReaddir,OpKeywordReadline,OpKeywordReadlink,OpKeywordReadpipe,OpKeywordRecv,OpKeywordRedo,OpKeywordRef,OpKeywordRename,OpKeywordReset,OpKeywordReturn,OpKeywordReverse,OpKeywordRewinddir,OpKeywordRindex,OpKeywordRmdir,OpKeywordSay,OpKeywordScalar,OpKeywordSeek,OpKeywordSeekdir,OpKeywordSelect,OpKeywordSemctl,OpKeywordSemget,OpKeywordSemop,OpKeywordSend,OpKeywordSetpgrp,OpKeywordSetpriority,OpKeywordSetsockopt,OpKeywordShift,OpKeywordShmctl,OpKeywordShmget,OpKeywordShmread,OpKeywordShmwrite,OpKeywordShutdown,OpKeywordSin,OpKeywordSleep,OpKeywordSocket,OpKeywordSocketpair,OpKeywordSort,OpKeywordSplice,OpKeywordSplit,OpKeywordSprintf,OpKeywordSqrt,OpKeywordSrand,OpKeywordStat,OpKeywordStudy,OpKeywordSubstr,OpKeywordSymlink,OpKeywordSyscall,OpKeywordSysopen,OpKeywordSysread,OpKeywordSysseek,OpKeywordSyswrite,OpKeywordSystem,OpKeywordTell,OpKeywordTelldir,OpKeywordTie,OpKeywordTied,OpKeywordTime,OpKeywordTimes,OpKeywordTruncate,OpKeywordUc,OpKeywordUcfirst,OpKeywordUmask,OpKeywordUndef,OpKeywordUnlink,OpKeywordUnpack,OpKeywordUnshift,OpKeywordUntie,OpKeywordUtime,OpKeywordValues,OpKeywordVec,OpKeywordWait,OpKeywordWaitpid,OpKeywordWantarray,OpKeywordWarn,OpKeywordWrite,OpFileReadableEffective,OpFileWritableEffective,OpFileRExecutableEffective,OpFileOwnedEffective,OpFileReadableReal,OpFileWritableReal,OpFileRExecutableReal,OpFileOwnedReal,OpFileExists,OpFileEmpty,OpFileNonEmpty,OpFilePlain,OpFileDirectory,OpFileSymbolic,OpFileNamedPipe,OpFileSocket,OpFileBlock,OpFileCharacter,OpFileOpenedTty,OpFileSetuid,OpFileSetgid,OpFileSticky,OpFileAsciiUtf8,OpFileBinary,OpFileStartTime,OpFileAccessTime,OpFileChangeTime,QLikeValueExpr,QLikeValueExprWithMods,NumberDec,NumberOct,NumberHex,NumberBin at /home/val/.plenv/versions/5.32.0/lib/perl5/site_perl/5.32.0/Guacamole.pm line 2119.
xsawyerx commented 2 years ago

Merged #117.