发新话题
打印

linux下用C编写C语言编辑器

linux下用C编写C语言编辑器

遇到问题:1.用快捷键打开菜单中的file 若ALT+F 如何实现?3 p* l* x8 d+ A- \0 f) m, I0 o3 x
ncurses库中是否只有单键的定义?
+ R0 g4 u$ e: D3 w% Y& Z2.用正则表达式实现语法高亮,有否相关小例子?:cool:      

TOP

用过VIM吗?      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

就是用vi编一个类似vi的编辑器....      

TOP

可以看看vi的源代码      

TOP

用c来编写c的编译器?那如何转为汇编语言或二进制码呢。3 ]7 |$ j, a- C% G; ]1 i2 ]/ _
偶没有学过编译原理,只是感觉上有点奇怪。      

TOP

[QUOTE=海天一色]用c来编写c的编译器?那如何转为汇编语言或二进制码呢。
! N4 K) d0 C$ z$ G" Z偶没有学过编译原理,只是感觉上有点奇怪。[/QUOTE]; ~  h9 Q! I) d: ^" I+ Y
3 |$ L7 i( n8 ]; w
是编辑器8 d7 N+ ]1 Q* m& n
:p      

TOP

词法分析(flex++)-语法分析(bison++,语法树,一般是采用自下而上的语法树)-语义分析(静态语义检查,类型检查)-中间代码生成(主要是对 抽象语法树的翻译, 说明语句\控制语言\赋值语句的翻译)-中间代码优化-目标代码生成(汇编指令)-目标代码优化
  T+ u! N0 g) R  S6 K' F " {/ C5 H1 b  a" h* Q) g: f
还有在此过程中,会用到符号表(symbol_table),和出错处理(warning, errors,)
5 k! x+ \9 J+ T! M
' ]1 H; R3 I7 |( r. M/ Y( t+ PJava的编译器(javac.exe) 和C编译器不一样& ~$ R" j! k% V6 W1 _9 T
建立批解析环境-词法分析+语法分析(JavaCC)-语义分析-翻译(主要是类中的方法)-字节码文件生成
# l+ @: V8 s7 P: z" x3 h. o& L出错处理(env.err(para1,....))+常量池(Constant_Pool)
5 N1 ], S  [! d3 j$ @: ^. Z: c! ]格式:( Y: o$ n3 @9 y+ F& `
typedef unsigned char u1;
  ]/ T5 x0 i) ~/ ~6 btypedef unsigned short u2;3 ~4 m. O+ z) A& m9 c
typedef unsigned int u4;: Q$ ]2 V+ G8 {6 W5 p" t
typedef unsigned __int64 u8;- c# v2 G. }$ Q4 \% m
typdef struct _ClassFile{
4 w1 a$ v- b3 G- f. ou4 java_magic;
4 k8 _+ T/ Q: L' iu2 minor_version;
$ f. ~( u. C+ P; g0 Cu2 major_version;) x) Z& J& N5 t5 \2 U8 ^. g1 f; S: {
u2 constantPool_count;
$ d, o4 I/ d/ {/ X" o. P7 d/ t) cconstantPool_info constatPool[constantPool_count-1];
6 i/ M4 C( n& M7 G1 `! Ou2 access_flags;
5 i' G) t: `+ n( r( p, uu2 this_class;
+ y& b) N  R7 X" S' P7 E; Ou2 super_class;8 ~5 R: {( J, x
u2 interfaces_count;7 e2 r3 e6 z6 l, z. F. @7 |
u2 interferfaces;
, E7 n0 j# D: v. N3 pu2 field_count
7 Y3 o+ i  a7 p% X# ]: L# }field_info field[fields_count];
2 I- u1 |1 Q6 w8 p& cu2 method_count;
4 _) A% b! Y, A+ L0 e+ x) Emethods_info method[methods_count];! N! y  ~& C+ a- s* v! |! I
u2 attribute_count;
8 f5 g* K5 p% Mattribute_info attribute[attribute_count];
' P* I( s% |5 Q( \}ClassFile;      

TOP

崇拜部分回帖不看贴的人,五体投地.      
-----------------------------------------
http://www.darkspy.org/blog

自大的人把宗教当迷信,无知的人把迷信当宗教

TOP

发新话题