Index: lib/src/prism/tests/languages/bison/c_feature.test |
diff --git a/lib/src/prism/tests/languages/bison/c_feature.test b/lib/src/prism/tests/languages/bison/c_feature.test |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a131ec3d8490f5f4631fe9e941326a5694ef55c0 |
--- /dev/null |
+++ b/lib/src/prism/tests/languages/bison/c_feature.test |
@@ -0,0 +1,56 @@ |
+%{ |
+ #include <stdio.h> |
+%} |
+%code { |
+ if(foo) { |
+ |
+ } |
+} |
+%% |
+exp: |
+ NUM { |
+ $$ = f($3, $4); |
+ @$.first_column = @1.first_column; |
+ $result = $left + $<itype>1; |
+ } |
+%% |
+ |
+---------------------------------------------------- |
+ |
+[ |
+ ["bison", [ |
+ ["c", [ |
+ ["delimiter", "%{"], |
+ ["macro", ["#include ", ["string", "<stdio.h>"]]], |
+ ["delimiter", "%}"] |
+ ]], |
+ ["keyword", "%code"], |
+ ["c", [ |
+ ["delimiter", "{"], |
+ ["keyword", "if"], ["punctuation", "("], "foo", ["punctuation", ")"], |
+ ["punctuation", "{"], ["punctuation", "}"], |
+ ["delimiter", "}"] |
+ ]], |
+ ["punctuation", "%%"], |
+ ["property", "exp"], ["punctuation", ":"], |
+ "\r\n\tNUM ", |
+ ["c", [ |
+ ["delimiter", "{"], |
+ ["bison-variable", ["$$"]], ["operator", "="], |
+ ["function", "f"], ["punctuation", "("], |
+ ["bison-variable", ["$3"]], ["punctuation", ","], |
+ ["bison-variable", ["$4"]], ["punctuation", ")"], ["punctuation", ";"], |
+ ["bison-variable", ["@$"]], ["punctuation", "."], "first_column ", ["operator", "="], |
+ ["bison-variable", ["@1"]], ["punctuation", "."], "first_column", ["punctuation", ";"], |
+ ["bison-variable", ["$result"]], ["operator", "="], |
+ ["bison-variable", ["$left"]], ["operator", "+"], |
+ ["bison-variable", ["$", ["punctuation", "<"], "itype", ["punctuation", ">"], "1"]], ["punctuation", ";"], |
+ ["delimiter", "}"] |
+ ]], |
+ ["punctuation", "%%"] |
+ ]] |
+] |
+ |
+---------------------------------------------------- |
+ |
+Checks for C inside Bison, along with special Bison variables. |