summaryrefslogtreecommitdiff
path: root/CHANGES
diff options
context:
space:
mode:
authorDavid Beazley <dave@dabeaz.com>2015-04-21 16:31:32 -0500
committerDavid Beazley <dave@dabeaz.com>2015-04-21 16:31:32 -0500
commitaf651673ba6117a0a5405055a92170fffd028106 (patch)
treeed62991309d8669dfea7c8c27ed7361f34a3adec /CHANGES
parentaa8f06c083194f64f2aaf68382675062adbdf196 (diff)
downloadply-af651673ba6117a0a5405055a92170fffd028106.tar.gz
Added optional support for defaulted states
Diffstat (limited to 'CHANGES')
-rw-r--r--CHANGES29
1 files changed, 29 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index ec6c71a..54ffe3b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,34 @@
Version 3.5
---------------------
+04/21/15: beazley
+ Added optional support for defaulted_states in the parser.
+ A defaulted_state is a state where the only legal action is
+ a reduction of a single grammar rule across all valid input
+ tokens. For such states, the rule is reduced and the
+ reading of the next lookahead token is delayed until it is
+ actually needed at a later point in time.
+
+ This delay in consuming the next lookahead token is a potentially
+ important feature in advanced parsing applications that require tight
+ interaction between the lexer and the parser. For example, a grammar
+ rule change modify the lexer state upon reduction and have such changes
+ take effect before the next input token is read.
+
+ One potential danger of defaulted_states is that syntax errors might
+ be deferred to a a later point of processing than where they were detected
+ in the past. Thus, it's possible that your error handling could change
+ slightly over previous versions of PLY.
+
+ In order to enable defaulted_state support. You need to activate it
+ explicitly. For example:
+
+ parser = yacc.yacc()
+ parser.use_defaulted_states()
+
+04/21/15: beazley
+ Fixed debug logging in the parser. It wasn't properly reporting goto states
+ on grammar rule reductions.
+
04/20/15: beazley
Added actions to be defined to character literals (Issue #32). For example: