YACC
进击的横打
此人不懒,但也什么都没有写
展开
-
简单的YCAA
%{int tempCount1 = -1;int tempCount2 = -1;int tempCount3 = -1;int tempCount4 = -1;int tempCount5 = -1;%}%token NUMBER%left + -%left * /%%list:|list q {exit(0);}|list /n|list expr /n {pri原创 2007-08-30 21:14:00 · 1106 阅读 · 0 评论 -
开始写代码STEP_3
#ifndef STMT__H_#define STMT__H_#include stdio.h>#include "Vector.h"#include "Expression.h"#include "CodeRepo.h"typedef struct Stmt_t CStmt;typedef struct Stmt_VMT...{ void(*generate)(CStmt*, FIL原创 2007-09-28 17:04:00 · 769 阅读 · 0 评论 -
开始写代码STEP_4
#ifndef _DECLARATION_H#define _DECLARATION_H#include "Vector.h"#include stdio.h>#include "Stmt.h"#include "Port.h"typedef struct Declaration_t CDeclaration;typedef struct Declaration_VMT...{原创 2007-09-29 11:24:00 · 860 阅读 · 0 评论 -
开始写代码STEP_6
%{#include #include #include "attr_type.h"#include "token_type.h"#include "vhdlparser.tab.h"/* VHDLソースの行番号 */int Source_Position=1;%}A [aA]B [bB]C [cC]D [dD]E [eE]F [fF]G [gG]H [hH]I [iI]J [jJ原创 2007-10-17 09:09:00 · 802 阅读 · 0 评论 -
开始写代码 STEP_2
#include "PrimaryExpression.h"static const CPrimaryExpression_VMT vmt = ...{ CPrimaryExpression_Generate };void CPrimaryExpression_Initialize(CPrimaryExpression* this)...{ CExpression_Initialize(原创 2007-09-27 13:55:00 · 835 阅读 · 0 评论 -
开始写代码,STEP_1
#include "Vector.h"void Vector_Initialize(Vector* this)...{ this->count = 0;}void add(Vector* this, void* obj)...{ this->obj[this->count] = obj; this->count++;}int size(Vector* this)...{原创 2007-09-21 15:11:00 · 892 阅读 · 0 评论 -
zheng zhe biao da shi
引言 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来:(1)检查一个串中是否含有符合某个规则的子串,并且可以得到这个子串;(2)根据匹配规则对字符串进行灵活的替换操作。 正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先转载 2007-09-19 16:28:00 · 985 阅读 · 0 评论 -
解释器的代码....
这个是书上的例子, %{#include #include #define STRSIZE 64#include "y.tab.h"#include "intall.h"extern void lexerror();int strcnt = 0;char string[STRSIZE + 1] ={0};%}%start STR1 COMM%%"+" {return(ADD原创 2007-09-19 14:38:00 · 983 阅读 · 0 评论 -
的功能扩张....
%{#include stdlib.h>#include "entint.tab.h"extern long yylval;%}D [0-9]N [1-9]O [0-7]H [0-9a-fA-F]%%"+" {return(ADDOP);}"-" {return(SUBOP);}"*"原创 2007-09-14 18:33:00 · 954 阅读 · 0 评论 -
ycaa的计算器,开始写ACTION
主函数 #include "memory.h"int yyparse();main()...{#if YYDEBUG extern int yydebug; yydebug = 1;#endif init_memory(); yyparse(); clean_memory(); } 控制内存 #include "memory.h"#include s原创 2007-09-12 11:13:00 · 1038 阅读 · 0 评论 -
ycaa基础
被遗忘的强大的工具UNIX系统的功能的之所以强大,不是在于它本身有多好的内核,而是在于它为我们提供了很多能完成小功能的命令,而这些命令的组合使用使得它更加的强大。其实在这里它为我们体现了这样的一个观点:要完成一个项目,或者是个大型的程序。应该先从小做起,然后不断的发展壮大。在本文中,主要为您介绍一写UNIX 系统下面的3 个命令的,似乎它不常用。可能make用得多一些,但是他们功能确实强大。yac转载 2007-08-30 21:18:00 · 1574 阅读 · 0 评论 -
ccaY 的补充内容
Lex 的常规表达式常规表达式是一种使用元语言的模式描述。表达式由符号组成。符号一般是字符和数字,但是 Lex 中还有一些具有特殊含义的其他标记。 下面两个表格定义了 Lex 中使用的一些标记并给出了几个典型的例子。用 Lex 定义常规表达式 字符 含义转载 2007-08-31 17:24:00 · 1314 阅读 · 0 评论 -
xeL dna ccaY 又是计算器
%{#include "parser.h"%}%%"+" { return PLUS;}"-" { return MINUS;}"/" { return DIV;}"*" { return MULT;}"(" { return L_PAR;}")" { return R_PAR;}[0-9]+ { yylval = atoi(yytext); return IN原创 2007-08-31 12:01:00 · 869 阅读 · 0 评论 -
开始写代码STEP_5
%{#include "attr_type.h"#include "token_type.h"#include "memory.h"#include "symtab.h"extern int Source_Position;extern CEntity *ent;extern CArchitecture *arch;extern Symtab *port_tab;extern Symtab *原创 2007-10-17 09:07:00 · 1184 阅读 · 0 评论