c_cpp c中自我评估型系统的原型。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp c中自我评估型系统的原型。相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
enum NodeType
{
NODE_ADD,
NODE_INT
};
#define NODE_BASE enum NodeType type;
#define NODE_PROPERTY(node, type, prop) (((type*)node)->prop)
struct AbsNode
{
NODE_BASE
};
// represents an int
struct IntNode
{
NODE_BASE
int val;
};
// represents an add node.
struct AddNode
{
NODE_BASE
struct AbsNode* lfs;
struct AbsNode* rfs;
};
// A special type of node that represents
// Any node that is a return value.
struct ResultNode
{
NODE_BASE
struct IntNode _int;
struct AddNode _add;
};
/* eval function that evaluates the nodes,
* and stores the result in result.
*/
void eval_node(struct AbsNode* ast, struct ResultNode* result)
{
int store;
switch(ast->type)
{
case NODE_INT:
result->_int.val = NODE_PROPERTY(ast, struct IntNode, val);
return;
case NODE_ADD:
eval_node(NODE_PROPERTY(ast, struct AddNode, lfs), result);
store = result->_int.val;
eval_node(NODE_PROPERTY(ast, struct AddNode, lfs), result);
result->_int.val += store;
return;
}
}
int main(void) {
struct IntNode a = {NODE_INT, 40};
struct IntNode b = {NODE_INT, 40};
struct AddNode c = {NODE_ADD, (struct AbsNode*)&a, (struct AbsNode*)&b};
struct ResultNode r;
eval_node((struct AbsNode*)&c, &r);
printf("Result is %d\n", r._int.val);
return 0;
}
以上是关于c_cpp c中自我评估型系统的原型。的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 反应式编程系统的原型
c_cpp 这是数据块系统的原型,以动态二进制格式存储数据
创建型设计-原型模式
创建型设计-原型模式
c_cpp 可评估表达式中的新计算模型。
c_cpp 评估反向波兰表示法