]> granicus.if.org Git - re2c/commitdiff
Moved comment.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 15 Mar 2016 08:15:24 +0000 (08:15 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 15 Mar 2016 08:15:24 +0000 (08:15 +0000)
re2c/src/ir/adfa/adfa.cc
re2c/src/ir/compile.cc

index 83aa560af6cd46070a3aeb1c23d5056dc705f7ad..db400854c74f618f89f591efa90e66aa6b9c4e4e 100644 (file)
@@ -94,6 +94,24 @@ DFA::~DFA()
        delete skeleton;
 }
 
+/* note [reordering DFA states]
+ *
+ * re2c-generated code depends on the order of states in DFA: simply
+ * flipping two states may change the output significantly.
+ * The order of states is affected by many factors, e.g.:
+ *   - flipping left and right subtrees of alternative when constructing
+ *     AST (also applies to iteration and counted repetition)
+ *   - changing the order in which graph nodes are visited (applies to
+ *     any intermediate representation: bytecode, NFA, DFA, etc.)
+ *
+ * To make the resulting code independent of such changes, we hereby
+ * reorder DFA states. The ordering scheme is very simple:
+ *
+ * Starting with DFA root, walk DFA nodes in breadth-first order.
+ * Child nodes are ordered accoding to the (alphabetically) first symbol
+ * leading to each node. Each node must be visited exactly once.
+ * Default state (NULL) is always the last state.
+ */
 void DFA::reorder()
 {
        std::vector<State*> ord;
index cc058c39d24a6cdf874c8f586a938ee3c6c7b3a4..8bd15d8cbd736f11378d5e0b120ecb053b3e57f2 100644 (file)
@@ -68,25 +68,7 @@ smart_ptr<DFA> compile (Spec & spec, Output & output, const std::string & cond,
        // ADFA stands for 'DFA with actions'
        DFA *adfa = new DFA(dfa, fill, fallback, skeleton, cs, name, cond, line);
 
-       /*
-        * note [reordering DFA states]
-        *
-        * re2c-generated code depends on the order of states in DFA: simply
-        * flipping two states may change the output significantly.
-        * The order of states is affected by many factors, e.g.:
-        *   - flipping left and right subtrees of alternative when constructing
-        *     AST (also applies to iteration and counted repetition)
-        *   - changing the order in which graph nodes are visited (applies to
-        *     any intermediate representation: bytecode, NFA, DFA, etc.)
-        *
-        * To make the resulting code independent of such changes, we hereby
-        * reorder DFA states. The ordering scheme is very simple:
-        *
-        * Starting with DFA root, walk DFA nodes in breadth-first order.
-        * Child nodes are ordered accoding to the (alphabetically) first symbol
-        * leading to each node. Each node must be visited exactly once.
-        * Default state (NULL) is always the last state.
-        */
+       // see note [reordering DFA states]
        adfa->reorder();
 
        // skeleton is constructed, do further DFA transformations