summaryrefslogtreecommitdiff
path: root/parser.h
Commit message (Collapse)AuthorAgeFilesLines
* Avoid redundant copies in string evalsFather Chrysostomos2011-11-061-1/+3
| | | | | | | Perl_lex_start copies the string passed to it unconditionally. Sometimes pp_entereval makes a copy before passing the string to lex_start. So in those cases we can pass a flag to avoid a redundant copy.
* Merge some parser fieldsFather Chrysostomos2011-11-061-3/+3
| | | | | | | By combining two booleans with the flags field, we save some space. By making it a 16-bit instead of 32-bit field (only two flag bits are currently used), we also avoid alignment holes (I hope; I’m not very good at this).
* Make source filters work in evalbytesFather Chrysostomos2011-11-061-1/+5
| | | | | | When a filter is added, the current buffer is hung on the end of the filters array, and a new substring of it becomes the current buffer.
* parser.h: Rearrange constantsFather Chrysostomos2011-11-061-1/+2
| | | | | Put LEX_IGNORE_UTF8_HINTS near the only other constant passed to lex_start
* eval STRING UTF8 cleanup.Brian Fraser2011-11-061-0/+2
| | | | | (modified by the committer only to apply when the unicode_eval feature is enabled)
* [perl #87064] eval no longer shares filtersFather Chrysostomos2011-04-031-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit: commit f07ec6dd59215a56bc1159449a9631be7a02a94d Author: Zefram <zefram@fysh.org> Date: Wed Oct 13 19:05:19 2010 +0100 remove filter inheritance option from lex_start The only uses of lex_start that had the new_filter parameter false, to make the new lexer context share source filters with the previous lexer context, were uses with rsfp null, which therefore never invoked source filters. Inheriting source filters from a logically unrelated file seems like a silly idea anyway. string evals could inherit the same source filter space as the cur- rently compiling code. Despite what the quoted commit message says, sharing source filters allows filters to be inherited in both direc- tions: A source filter created when the eval is being compiled also applies to the file with which it is sharing its space. There are at least 20 CPAN distributions relying on this behaviour (or, rather, what could be considered a Test::More bug). So this com- mit restores the source-filter-sharing capability. It does not change the current API or make public the API for sharing source filters, as this is supposed to be a temporary stop-gap measure for 5.14.
* recursive-descent expression parsingZefram2010-12-111-2/+19
| | | | | | New API functions parse_fullexpr(), parse_listexpr(), parse_termexpr(), and parse_arithexpr(), to parse an expression at various precedence levels.
* function to parse isolated labelZefram2010-10-251-0/+3
| | | | | | | New API function parse_label() parses a label, separate from statements. If a label has not already been lexed and queued up, it does not use yylex(), but parses the label itself at the character level, to avoid unwanted lexing past an absent optional label.
* replace PL_doextract with better kinds of variableZefram2010-10-211-0/+1
| | | | | | | | PL_doextract had two unrelated jobs, neither best served by an interpreter global variable. The first was to track the -x command-line switch. That is replaced with a local variable in S_parse_body(). The second was to track whether the lexer is in the middle of a =pod section. That is replaced with an element in PL_parser.
* Store the PL_compcv instead of the the PL_comppad in parser stack, and make ↵Gerard Goossen2009-12-161-1/+1
| | | | it reference counted. Properly solves [perl #66094]
* lexer APIZefram2009-11-151-0/+4
| | | | | | | | | Attached is a patch that adds a public API for the lowest layers of lexing. This is meant to provide a solid foundation for the parsing that Devel::Declare and similar modules do, and it complements the pluggable keyword mechanism. The API consists of some existing variables combined with some new functions, all marked as experimental (which making them public certainly is).
* Add editor blocks to some header files.Marcus Holland-Moritz2008-01-011-1/+9
| | | p4raw-id: //depot/perl@32793
* Re-order struct yy_parser to save space on most systems.Nicholas Clark2007-07-161-3/+2
| | | | | Re-order struct yy_stack_frame to save space on LP64 systems. p4raw-id: //depot/perl@31618
* change #31615 added the new field in the wrong placeDave Mitchell2007-07-161-1/+1
| | | | | p4raw-link: @31615 on //depot/perl: 503de4705ff6537018ae94e9179e16636748b2a6 p4raw-id: //depot/perl@31616
* [perl #43425] local $[: fix scoping during parser error handling.Dave Mitchell2007-07-161-0/+1
| | | | | | | | | Change 22306# inadvertently made 'local $[' statement-scoped rather than block-scoped; so revert that change and add a different fix. The problem was to ensure that the savestack got popped correctly while popping errored tokens. We how record the current value of PL_savestack_ix with each pushed parser state. p4raw-id: //depot/perl@31615
* move PL_error_count into the PL_parser structDave Mitchell2007-05-211-0/+1
| | | p4raw-id: //depot/perl@31255
* move PL_multi_end into the PL_parser structDave Mitchell2007-05-211-0/+2
| | | p4raw-id: //depot/perl@31254
* move PL_tokenbuf into the PL_parser structDave Mitchell2007-05-211-0/+1
| | | p4raw-id: //depot/perl@31252
* move PL_in_my and PL_in_my_stash into the PL_parser structDave Mitchell2007-05-121-1/+4
| | | p4raw-id: //depot/perl@31203
* save old PL_curcop value in parser structDave Mitchell2007-05-121-0/+2
| | | p4raw-id: //depot/perl@31201
* move PL_rsfp_filters into the parser structDave Mitchell2007-05-121-0/+1
| | | p4raw-id: //depot/perl@31200
* move PL_rsfp into the PL_parser structDave Mitchell2007-05-111-0/+1
| | | | | and simplify its creation and destruction p4raw-id: //depot/perl@31199
* move PL_lex_state into the PL_parser structDave Mitchell2007-05-051-0/+1
| | | p4raw-id: //depot/perl@31154
* migrate more variables to PL_parser struct:Dave Mitchell2007-05-051-0/+9
| | | | | PL_nexttoke PL_curforce PL_nextval PL_nexttype p4raw-id: //depot/perl@31148
* move some more variables into the PL_parser struct:Dave Mitchell2007-05-041-0/+8
| | | | | | | PL_bufptr PL_oldbufptr PL_oldoldbufptr PL_linestart PL_bufend PL_last_uni PL_last_lop PL_last_lop_op p4raw-id: //depot/perl@31147
* move PL_expect and PL_copline into the PL_parser structureDave Mitchell2007-05-041-0/+2
| | | p4raw-id: //depot/perl@31134
* move PL_linestr from the interpreter struct to the parser structDave Mitchell2007-04-241-0/+1
| | | p4raw-id: //depot/perl@31058
* Several members of struct yy_parser can go on a diet. Some I32s wereNicholas Clark2007-04-211-6/+6
| | | | | actually only holding chars. p4raw-id: //depot/perl@31015
* Rearrange members of structures to reduce memory size on someNicholas Clark2007-03-311-2/+2
| | | | | | platforms. On LP64 structs stackinfo, refcounted_he, and magic shrink by 8 bytes, struct yy_parser by 16. p4raw-id: //depot/perl@30817
* Update copyright years to include 2007. (Plus a couple of 2006s andNicholas Clark2007-01-021-1/+1
| | | | | earlier we missed in av.h and hv.h) p4raw-id: //depot/perl@29670
* move easy lexer state variables into PL_parserDave Mitchell2007-01-021-0/+41
| | | | | (where "easy" == "only appear in toke.c") p4raw-id: //depot/perl@29655
* split parser initialisation from parser executionDave Mitchell2007-01-011-0/+2
| | | p4raw-id: //depot/perl@29652
* split parser stack from parser objectDave Mitchell2007-01-011-2/+3
| | | p4raw-id: //depot/perl@29649
* move parser state into new parser object, PL_parserDave Mitchell2006-12-181-0/+34
p4raw-id: //depot/perl@29570