B演习(言语处理系演习)第一回课件.ppt

上传人(卖家):三亚风情 文档编号:3376300 上传时间:2022-08-25 格式:PPT 页数:30 大小:251KB
下载 相关 举报
B演习(言语处理系演习)第一回课件.ppt_第1页
第1页 / 共30页
B演习(言语处理系演习)第一回课件.ppt_第2页
第2页 / 共30页
B演习(言语处理系演习)第一回课件.ppt_第3页
第3页 / 共30页
B演习(言语处理系演习)第一回课件.ppt_第4页
第4页 / 共30页
B演习(言语处理系演习)第一回课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、B演習(言語処理系演習)第4回田浦構文解析器“fib”nn2defif構文木def fib(n):if n B C D 対,uparse_A(tokenizer_t t)parse_B(t);parse_C(t);parse_D(t);u注:構文木組立部分省略複数選択肢場合u例:A-B C D|E F Gu現在字句選択uparse_A(tokenizer_t t)if(現在tokenB C D先頭)parse_B(t);parse_C(t);parse_D(t);else if(E F G先頭)parse_E(t);parse_F(t);parse_G(t);else parse_err(t)

2、;構文解析器課題u読込,構文木作,printumain()tree=parse_program();print_program(tree,);u(空白以外)同出力u出力文字列一度同入今度同一文字列出u./parser a.py b.py./parser b.py c.pydiff b.py c.pyu注:a.py b.py 空白除同一 b.py c.py 同一文字列自然構成usyntree.h :構文木typedef宣言usyntree.c:多数(mk_A)定義uparser.h:構文解析器(parse_file_input)宣言uparser.c:多数構文解析器(parse_A)定義(syn

3、tree.h#include)u原理実際構造体定義関数書大変少提供 syntree.h almost_empty_parser.c parser.c,少数解析木説明用残,空u使作業道筋思,解読明注意(基本説明)修正(HP上PDF修正済)u資料(3)字句解析器up20.4.4節 最後行 cs_cur_line実現 cs_cur_line_string実現up21.4.5節 tokenizer 定義内 char_buf_t str_buf;/*現在行先頭空白数*/char_buf_t str_buf;/*現在行(先頭現在文字)保持*/int_vec_t indents;int_stack_t in

4、dents;前半課題u締切 u詳HP()subversion”parser”名前登録&Makefile checkout“make”“parser”名前./parser 名 構文解析行,構文木戻表示u報告別途 班番号,checkout名報告C言語雑学汎用u(入物),表,探索木,etc.u頻出(多言語,提供,組込)C+STL Java Python 辞書,何問題u実装,入何同u,int入物,char*入物別定義u例:of T(T入)typedef struct T_list *T_list_t;T_list_t mk_T_list();void list_append(T_list_t l,T

5、x);T list_get(T_list_t l,int i)例:u整数 int_list_t mk_int_list();void int_list_append(int_list_t l,int x);int int_list_get(int_list_t l,int i);uchar*string_list_t mk_string_list();void string_list_append(string_list_t l,char*x);char*string_list_get(string_list_t l,int i);選択肢?u1:似何度書u2:int_list定義思切(笑),i

6、nt_listchar*入 int_list_t l=mk_int_list();int_list_append(l,“hello”);char*x=int_list_get(l,0);u実,場合2機能u2(一般)根本的原因,int型領域(変数,配列/構造体要素)char*値代入 例:int_list_append(l,“hello”);u実際,char*int32 bit整数,実代入情報失 char*p=“hello”;int x=p;char*y=x;/*y=p*/C言語危険合法代入uC言語,機械語上可能代入(自己責任)合法u警告出 char*x=1000;/*:=整数*/int a10;

7、char*p=a;/*char*:=int*/f(int x)f(“hello”);uvoid*generic,不明型保持慣習的用,以下合法uint_list_t l=mk_int_list();int_list_append(l,“hello”);char*x=int_list_get(l,0);用黙可能uint_list_t l=mk_int_list();int_list_append(l,(int)“hello”);char*x=(char*)int_list_get(l,0);u,無様 間違犯元(一般,何(int?char*?)入区別手段慣習u“汎用版”一度定義 中身void*良 g

8、eneric_list_t mk_generic_list();generic_list_append(generic_list_t l,void*x);generic_list_get(generic_list_t l,int i);u用個型対定義例 int_list 定義utypedef struct int_list*int_list_t;uint_list_t mk_int_list()return(int_list_t)mk_generic_list();uint int_list_append(int_list_t l,int x)generic_list_append(generic_list_t)l,(void*)x);uint int_list_get(int_list_t l,int i)return(int)generic_list_get(generic_list_t)l,i);注:要代入合法?u否 :=浮動小数点数 :=構造体 整数:=構造体 注:構造体 構造体A:=構造体B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(B演习(言语处理系演习)第一回课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|