[augeas-devel] augeas: master - * src/jmt.c (print_grammar): recurse into L_REC if they are not rec_internal

David Lutterkort lutter at fedoraproject.org
Tue Jan 26 02:22:14 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=f6efcbe9b36e30a58d558a88f868d3f97596b05a
Commit:        f6efcbe9b36e30a58d558a88f868d3f97596b05a
Parent:        4c35fdaf501a9ea88d8b37edc6e52d970019ed50
Author:        David Lutterkort <lutter at redhat.com>
AuthorDate:    Mon Jan 25 17:03:33 2010 -0800
Committer:     David Lutterkort <lutter at redhat.com>
CommitterDate: Mon Jan 25 18:06:10 2010 -0800

* src/jmt.c (print_grammar): recurse into L_REC if they are not rec_internal

---
 src/jmt.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/jmt.c b/src/jmt.c
index 1cbba49..33119f4 100644
--- a/src/jmt.c
+++ b/src/jmt.c
@@ -1084,7 +1084,7 @@ static void print_grammar(struct jmt *jmt, struct lens *lens) {
     ind_t l = lens_index(jmt, lens);
     struct state *sA = lens_state(jmt, l);
 
-    if (sA == NULL || lens->tag == L_REC)
+    if (sA == NULL || (lens->tag == L_REC && lens->rec_internal))
         return;
 
     printf("  ");
@@ -1134,6 +1134,11 @@ static void print_grammar(struct jmt *jmt, struct lens *lens) {
         printf("?\n");
         print_grammar(jmt, lens->child);
         break;
+    case L_REC:
+        print_lens_symbol(stdout, jmt, lens->body);
+        printf("\n");
+        print_grammar(jmt, lens->body);
+        break;
     default:
         BUG_ON(true, jmt, "Unexpected lens tag %d", lens->tag);
         break;
@@ -1142,14 +1147,16 @@ static void print_grammar(struct jmt *jmt, struct lens *lens) {
     return;
 }
 
-static void print_grammar_top(struct jmt *jmt, struct lens *rec) {
+static void print_grammar_top(struct jmt *jmt, struct lens *lens) {
     printf("Grammar:\n");
-    printf("  ");
-    print_lens_symbol(stdout, jmt, rec);
-    printf(" := ");
-    print_lens_symbol(stdout, jmt, rec->body);
-    printf("\n");
-    print_grammar(jmt, rec->body);
+    print_grammar(jmt, lens);
+    if (lens->tag == L_REC) {
+        printf("  ");
+        print_lens_symbol(stdout, jmt, lens->alias);
+        printf(" := ");
+        print_lens_symbol(stdout, jmt, lens->alias->body);
+        printf("\n");
+    }
 }
 
 static void index_lenses(struct jmt *jmt, struct lens *lens) {




More information about the augeas-devel mailing list