c_feature.test 1.48 KB
%{
	#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.