SlideShare una empresa de Scribd logo
1 de 24
函数调用关系工具 2011年8月
目录 原理 Antlr Eclipse CDT 函数调用关系工具 工具目标 工具设计思路 实现过程 问题
Antlr Another Tool  for Language Recognition ,[object Object]
提供了一个框架,构造语言识别器,编 译器和解释器
基于LL(*)的识别:自顶向下分析的编译方法,最左推导
Input:接受文法语言描述Output:产生识别这些语言语句的程序(Java ,Python,C++,C#,Ruby) ,[object Object]
支持多种语言
使用更加方便,[object Object]
Antlr内部机理 Character Stream Lexer(词法分析器) 形成token Parser(语法分析器) 处理一系列的token,形成AST Abstract Syntax Tree(AST) 得到的解析树 Tree Parser 处理AST Lexer Token Stream Parser AST Tree Parser Text Output
Antlr环境搭建 JDK(Java Runtime Environment ) http://www.antlr.org/ antlr的jar包 设置环境变量 ClASSPATH ,[object Object],集成开发环境
Antlr使用一般步骤 (1) 输入一个grammar(xx.g) (2) java org.antlr.Toolxx.g (3) 产生Class (4) 使用Class进行相应的应用 Antlrworks?
Antlr-Grammar  EBNF 法则 Extended Backus-Naur Form 扩展巴科斯范式 规则 ,[object Object]
A:a;来表示规则,“:”代替了“=>”
选择“|”A:a|b|c符号A可以推导出a或b或c
连接“  ”A:abc;。此规则接收句型abc
重复“*,+” A:a*,A:a+;
可选 “?” A:a?终结符 ,[object Object]
“~”: ~’B’;(除B之外的所有字符)
“.”:任意字符,[object Object]
Antlr-一个简单的例子 识别加、减、乘、除 算术表达式     2+3;     2+(3*4);
Antlr-解析编程语言 http://www.antlr.org/ 开源的语法文件(grammar) C.g, Cpp.g, Java.g, Python.g, js.g   …
Eclipse CDT  CDT是什么? ,[object Object]
为Eclipse 平台提供功能完全的 C/C++IDE
开放的源代码,免费

Más contenido relacionado

Similar a 函数调用关系工具-Lite

Hcsm lect-20120913
Hcsm lect-20120913Hcsm lect-20120913
Hcsm lect-20120913lusecheng
 
Interactive Data Language
Interactive Data LanguageInteractive Data Language
Interactive Data Languagesiufu
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式Will Huang
 
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)National Cheng Kung University
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure National Cheng Kung University
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章浒 刘
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 

Similar a 函数调用关系工具-Lite (20)

Hcsm lect-20120913
Hcsm lect-20120913Hcsm lect-20120913
Hcsm lect-20120913
 
C+
C+C+
C+
 
C#
C#C#
C#
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
 
Test
TestTest
Test
 
from Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Works
 
Go
GoGo
Go
 
Interactive Data Language
Interactive Data LanguageInteractive Data Language
Interactive Data Language
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
 
Ch01
Ch01Ch01
Ch01
 
系統程式 -- 第 8 章
系統程式 -- 第 8 章系統程式 -- 第 8 章
系統程式 -- 第 8 章
 
Jni文档
Jni文档Jni文档
Jni文档
 
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 
系統程式 -- 第 1 章
系統程式 -- 第 1 章系統程式 -- 第 1 章
系統程式 -- 第 1 章
 
beidakejian
beidakejianbeidakejian
beidakejian
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 

Más de Wu Liang

Smart pointer
Smart pointerSmart pointer
Smart pointerWu Liang
 
cppcheck源码分析
cppcheck源码分析cppcheck源码分析
cppcheck源码分析Wu Liang
 
Dynamo cassandra
Dynamo cassandraDynamo cassandra
Dynamo cassandraWu Liang
 
Cppcheck分析
Cppcheck分析Cppcheck分析
Cppcheck分析Wu Liang
 
向量空间模型与动态规划分享
向量空间模型与动态规划分享 向量空间模型与动态规划分享
向量空间模型与动态规划分享 Wu Liang
 
Trie树分享
Trie树分享Trie树分享
Trie树分享Wu Liang
 

Más de Wu Liang (6)

Smart pointer
Smart pointerSmart pointer
Smart pointer
 
cppcheck源码分析
cppcheck源码分析cppcheck源码分析
cppcheck源码分析
 
Dynamo cassandra
Dynamo cassandraDynamo cassandra
Dynamo cassandra
 
Cppcheck分析
Cppcheck分析Cppcheck分析
Cppcheck分析
 
向量空间模型与动态规划分享
向量空间模型与动态规划分享 向量空间模型与动态规划分享
向量空间模型与动态规划分享
 
Trie树分享
Trie树分享Trie树分享
Trie树分享
 

函数调用关系工具-Lite