commit d06ef8e5dd739d41df0297c0d6cf3bb7f6f278c3
parent d0dcbf0a7470719f9f41394be363160b4cc376b8
Author: Jan Pobrislo <ccx@webprojekty.cz>
Date: Wed, 30 Oct 2013 22:03:06 +0100
remove let macro, more debugging, fix complex query output
Diffstat:
4 files changed, 31 insertions(+), 15 deletions(-)
diff --git a/bin/aat.awk b/bin/aat.awk
@@ -52,15 +52,16 @@ function call_macro(name, args) {
}
# Assign a variable with query expression
- else if(name == "let"){
- if (!match(args, / *= */)) {
- print "ERROR: invalid let statement: " args >"/dev/stderr"
- exit 1
- }
- tok_type=T_AWK
- token("V[\"" substr(args, 1, RSTART-1) "\"] = " \
- aat_process(substr(args, RSTART+RLENGTH)) "\n")
- }
+ # else if(name == "let"){
+ # if (!match(args, / *= */)) {
+ # print "ERROR: invalid let statement: " args >"/dev/stderr"
+ # exit 1
+ # }
+ # tok_type=T_AWK
+ # token("V[\"" substr(args, 1, RSTART-1) "\"] = " \
+ # substr(args, RSTART+RLENGTH)) "\n"
+ # # aat_process(substr(args, RSTART+RLENGTH)) "\n")
+ # }
# if with a query expression
else if(name == "if"){
diff --git a/bin/aat_macros.sed b/bin/aat_macros.sed
@@ -13,4 +13,4 @@ s/^[[:space:]]*@if[[:space:]]\+\(.\+\)$/if(get("\1")) {\n/
s/^[[:space:]]*@elif[[:space:]]\+\(.\+\)$/} else if(get("\1")) {\n/
s/^[[:space:]]*@else[[:space:]]*$/} else {/
s/^[[:space:]]*@endif[[:space:]]*$/}/
-s/^[[:space:]]*@let[[:space:]]\+\([a-zA-Z_][a-zA-Z0-9_]*\)[[:space:]]*=[[:space:]]*\(.*\)$/V["\1"] = \2\n/
+#s/^[[:space:]]*@let[[:space:]]\+\([a-zA-Z_][a-zA-Z0-9_]*\)[[:space:]]*=[[:space:]]*\(.*\)$/V["\1"] = \2\n/
diff --git a/bin/query.awk b/bin/query.awk
@@ -13,22 +13,28 @@ function out(str) {
# called for expanding {< >}
# global variable expand_remaining used as input
function expand_query( expanded) {
+ if(DEBUG) printf "E: →%s←\n", expand_remaining >"/dev/stderr"
expanded = ""
while(match(expand_remaining, "['<>]")) {
- if(RSTART > 1)
+ if(RSTART > 1) {
expanded = expanded "\"" substr(expand_remaining, 1, RSTART-1) "\""
+ if(DEBUG) printf "e: →%s←\n", expanded >"/dev/stderr"
+ }
char = substr(expand_remaining, RSTART, 1)
expand_remaining = substr(expand_remaining, RSTART+1)
if(char == ">")
return "get("expanded")"
else if(char == "<") {
expanded = expanded expand_query()
+ if(DEBUG) printf "e: →%s←\n", expanded >"/dev/stderr"
} else if(char == "'") {
if(match(expand_remaining, "'")) {
- expanded = expanded substr(expand_remaining, 1, RSTART-1)
+ expanded = expanded "(" substr(expand_remaining, 1, RSTART-1) ")"
+ if(DEBUG) printf "e: →%s←\n", expanded >"/dev/stderr"
expand_remaining = substr(expand_remaining, RSTART+1)
} else {
- expanded = expand_remaining
+ expanded = expanded "(" expand_remaining ")"
+ if(DEBUG) printf "e: →%s←\n", expanded >"/dev/stderr"
expand_remaining = ""
}
} else {
@@ -37,7 +43,8 @@ function expand_query( expanded) {
}
}
if(expand_remaining) {
- expanded = "\"" expand_remaining "\""
+ expanded = expanded "\"" expand_remaining "\""
+ if(DEBUG) printf "e: →%s←\n", expanded >"/dev/stderr"
expand_remaining = ""
}
return "get("expanded")"
diff --git a/data.awk b/data.awk
@@ -77,7 +77,7 @@ function loop_end() {
loop_stack["depth"]--
}
-function get(varname, i, n, names, values, loopvar, looprow, prefix) {
+function _get(varname, i, n, names, values, loopvar, looprow, prefix) {
for(i=loop_stack["depth"]; i>0; i--) {
prefix = loop_stack[i, "pre"]
if(prefix)
@@ -115,6 +115,14 @@ function get(varname, i, n, names, values, loopvar, looprow, prefix) {
return V[varname]
}
+function get(varname, result) {
+ result = _get(varname)
+ if(DEBUG) {
+ print "get →" varname "← ⇒ →"result"←" >"/dev/stderr"
+ }
+ return result
+}
+
function or_(a, b) {
return a ? a : b
}