yacclinux
㈠ opensuse linux上面安裝mysql的時候出錯提示yacc找不到 make[2]: Entering directory `/root/soft/mysql-4.
make[2]: Entering directory `/data0/software/mysql-5.5.3-m3/mysql-...我今天晚上的時候,又安裝了一遍,到這個地方又停住了,於是不斷的重復兩個...
㈡ yacc lex cpp
linux里的info文檔有關於bison(yacc的gnu版)的C++介面,yacc的C++介面我沒看見,不過你可以直接用yacc與lex生成C代碼,然後用宏extern 「C」包裹yyparse函數調用就可以在C++中使用了。
㈢ Linux下關於Yacc的問題!
可能是文件最後有空行,或者是文件結束符傳給了Yacc,在語法分析時,Yacc把它當作錯誤輸入了。
㈣ linux下有沒有什麼好的代碼統計工具
1 sloccount源代碼行數統計工具
--------------------------------------------------------------------------------
sloccount=Count Source Lines Of Code
官網 : http://www.dwheeler.com/sloccount/
1.1 Ubuntu安裝
--------------------------------------------------------------------------------
sudo apt-get install sloccount
1.2 使用
--------------------------------------------------------------------------------
sloccount [--version] [--cached] [--append] [ --datadir directory ]
[--follow] [--plicates] [--crossps] [--autogen] [--multiproject]
[--filecount] [--wide] [--details] [ --effort F E ] [ --schele F E ] [
--personcost cost ] [ --overhead overhead ] [ --addlang language ] [
--addlangall ] [--] directories
--cached
跳過計算過程,直接使用上次結果
參數
描述
–multiproject
如果該文件夾包括一系列的子文件夾,而它們中的每一個都是相對獨立開發的不同的項目,那麼使用」–multiproject」選項,評估將會正確的考慮到這一點
–filecount
顯示文件數目而非代碼行數
–details
顯示每個源文件的詳細信息
–plicates
算上所有重復的(默認情況下如果文件有相同的內容,則只算一個)
–crossps
如果頂目錄包含幾個不同的項目,並且你想把不同的項目下重復的文件在每個項目中都算上一次,則使用該選項
1.3 轉換成html文件
--------------------------------------------------------------------------------
有一個sloc2html.py可以把生成的結果轉換為帶圖形統計結果的html文件. 缺點是對中文支持不好
例如:
sloccount --wide --multiproject SourceDirectory > result.txt
sloc2html.py result.txt > result.html
再打開result.html即可看到結果形如:
下載地址 http://www.dwheeler.com/sloccount/sloc2html.py.txt
輸出樣例 http://www.dwheeler.com/sloccount/sloc2html-example.html
wget http://www.dwheeler.com/sloccount/sloc2html.py.txt -O sloc2html.py
sloc2html.py文件源代碼如下
#!/usr/bin/env python
# Written by Rasmus Toftdahl Olesen <[email protected]>
# Modified slightly by David A. Wheeler
# Released under the GNU General Public License v. 2 or higher
from string import *
import sys
NAME = "sloc2html"
VERSION = "0.0.2"
if len(sys.argv) != 2:
print "Usage:"
print "\t" + sys.argv[0] + " <sloc output file>"
print "\nThe output of sloccount should be with --wide and --multiproject formatting"
sys.exit()
colors = { "python" : "blue",
"ansic" : "yellow",
"perl" : "purple",
"cpp" : "green",
"sh" : "red",
"yacc" : "brown",
"lex" : "silver"
# Feel free to make more specific colors.
"ruby" : "maroon",
"cs" : "gray",
"java" : "navy",
"ada" : "olive",
"lisp" : "fuchsia",
"objc" : "purple",
"fortran" : "purple",
"cobol" : "purple",
"pascal" : "purple",
"asm" : "purple",
"csh" : "purple",
"tcl" : "purple",
"exp" : "purple",
"awk" : "purple",
"sed" : "purple",
"makefile" : "purple",
"sql" : "purple",
"php" : "purple",
"mola3" : "purple",
"ml" : "purple",
"haskell" : "purple"
}
print "<html>"
print "<head>"
print "<title>Counted Source Lines of Code (SLOC)</title>"
print "</head>"
print "<body>"
print "<h1>Counted Source Lines of Code</h1>"
file = open ( sys.argv[1], "r" )
print "<h2>Projects</h2>"
line = ""
while line != "SLOC\tDirectory\tSLOC-by-Language (Sorted)\n":
line = file.readline()
print "<table>"
print "<tr><th>Lines</th><th>Project</th><th>Language distribution</th></tr>"
line = file.readline()
while line != "\n":
num, project, langs = split ( line )
print "<tr><td>" + num + "</td><td>" + project + "</td><td>"
print "<table width=\"500\"><tr>"
for lang in split ( langs, "," ):
l, n = split ( lang, "=" )
print "<td bgcolor=\"" + colors[l] + "\" width=\"" + str( float(n) / float(num) * 500 ) + "\">" + l + "=" + n + " (" + str(int(float(n) / float(num) * 100)) + "%)</td>"
print "</tr></table>"
print "</td></tr>"
line = file.readline()
print "</table>"
print "<h2>Languages</h2>"
while line != "Totals grouped by language (dominant language first):\n":
line = file.readline()
print "<table>"
print "<tr><th>Language</th><th>Lines</th></tr>"
line = file.readline()
while line != "\n":
lang, lines, per = split ( line )
lang = lang[:-1]
print "<tr><td bgcolor=\"" + colors[lang] + "\">" + lang + "</td><td>" + lines + " " + per + "</td></tr>"
line = file.readline()
print "</table>"
print "<h2>Totals</h2>"
while line == "\n":
line = file.readline()
print "<table>"
print "<tr><td>Total Physical Lines of Code (SLOC):</td><td>" + strip(split(line,"=")[1]) + "</td></tr>"
line = file.readline()
print "<tr><td>Estimated development effort:</td><td>" + strip(split(line,"=")[1]) + " person-years (person-months)</td></tr>"
line = file.readline()
line = file.readline()
print "<tr><td>Schele estimate:</td><td>" + strip(split(line,"=")[1]) + " years (months)</td></tr>"
line = file.readline()
line = file.readline()
print "<tr><td>Total estimated cost to develop:</td><td>" + strip(split(line,"=")[1]) + "</td></tr>"
print "</table>"
file.close()
print "Please credit this data as \"generated using 'SLOCCount' by David A. Wheeler.\"\n"
print "</body>"
print "</html>"
㈤ linux 下怎樣安裝使用 Yacc 和 Lex
yacc/lex在linux下的使用指南
鏈接:http://blog.csdn.net/ruglcc/article/details/7817619
Lex 和 Yacc 是 Unix 和Linux 下詞法和語法的分析,解析工具,有了這兩個工具,你可以自己製作想要的編譯器,也可以重新製作已有程序語言的解析器。需要注意的是linux下的這兩個工具生成的程序源碼只能是C和C++語言,當然現在早已有類似可以生成Java源碼的語法分析器,如較常用的JavaCC(Java Compiler Compiler),相關內容可以去網上搜索。Lex和Yacc已被移植到windows下,現在常用的工具有Parser Generator。本文只介紹Linux 下Lex和Yacc的使用方法。
Lex介紹
Lex 通過對.lex或.l文件定義的格式生成一個C語言源碼文件,通過編譯這個源碼,就生成了.lex文件或.l文件定義的編譯器。.lex或.l文件的格式分三段:
1.全局變數聲明部分
2.詞法規則部分
3.函數定義部分
以下是一個簡單的例子:lex_example.l文件
%{ //全局聲明部分
/*林木100 linux
www.linmu100.com
*/
#include <stdio.h>
extern char *yytext;
extern FILE *yyin;
int sem_count = 0;
%}
//規則定義部分,
%%
[a-zA-Z][a-zA-Z0-9]* {printf("WORD[%s] ", yytext);}
[a-zA-Z0-9\/.-]+ printf("FILENAME ");
\" printf("QUOTE ");
\{ printf("OBRACE ");
\} printf("EBRACE ");
; {sem_count++; printf("SEMICOLON ");}
\n printf("\n");
[ \t]+ /* ignore whitespace */;
%%
//以下為函數定義部分
int main(int avgs, char *avgr[])
{
yyin = fopen(avgr[1], "r");
if (!yyin)
{
return 0;
}
yylex();
printf("sem_count : %d\n", sem_count);
fclose(yyin);
return 1;
}
㈥ linux ./configure
安裝 yacc
yacc(Yet Another Compiler Compiler),是Unix/Linux上一個用來生成編譯器的編譯器(編譯器代碼生成器)。
㈦ linux 下怎樣安裝使用 yacc 和 lex
wilful boy of her own girlhood, the child
㈧ linux bison 包干什麼用的
這個包是Linux的基礎包之一,它包括 bison 和 yacc 這兩個程序,用於GNU編譯工具包的語法生成,以一系列規則, 分析文本文件結構,這個庫通常沒有什麼用處,但是POSIX 需要它。
㈨ 中科創達 linux 面試怎麼樣
本文將帶來11個Linux基礎面試問題,希望對即將換工作或者正在找相關工作的朋友們一些幫助。
Q.1: Linux 操作系統的核心是什麼?
Shell
Kernel
Command
Script
Terminal
答: 內核(Kernel)是Linux 操作系統的核心。Shell是一個命令行解釋器,命令(Command)是針對計算機的指令,腳本(Script)是存儲在文件中的命令的集合,終端(Termial)是命令行介面。
Q.2: Linus Torvalds 都創建過什麼東東?
Fedora
Slackware
Debian
Gentoo
Linux
答: Linux Torvalds 創建了Linux,Linux是所有上述操作系統的核心,同樣也是其他一些Linux 操作系統的核心。
Q.3: Torvalds,使用C++語言編寫了Linux內核的大部分代碼,是這樣嗎?
答: 不! Linux內核包含了12,020,528行代碼,其中注釋佔去了2,151,595 行。因此剩下的9,868,933 行就是純代碼了。而其中7,896,318行都是用C語言寫的。
剩下的1,972,615行則是使用C++,匯編,Perl, Shell Script, Python, Bash Script, HTML, awk, yacc, lex, sed等。
註:代碼行數每天都在變動,平均每天超過3,509行代碼添加到內核。
Q.4: 起初,Linux 是為 Intel X86 架構編寫的,但是後來比其他操作系統移植的硬體平台都多,是這樣嗎 ?
答: 是的,我同意。Linux那時候是為x86機器寫的,而且現已移至到所有類型的平台。今天超過90%的超級計算機都在使用Linux。Linux在移動手機和平板電腦領域前景廣闊。事實上我們被Linux包圍著,遠程遙控,太空科學,研究,Web,桌面計算等等,舉之不盡。
Q.5: 編輯 Linux 內核合法嗎?
答: 是的,內核基於GPL發布,任何人都可以基於GPL允許的許可權隨意編輯內核。Linux內核屬於免費開源軟體(FOSS)。
Q.6: UNIX和Linux操作系統,本質上的不同在哪裡?
答: Linux操作系統屬於免費開源軟體,內核是由 Linus Torvalds 和開源社區共同開發的。當然我們不能說UNIX操作系統和免費開源軟體(FOSS)無關,BSD 就是基於 FOSS 范疇的 UNIX 的變種。而且大公司如 Apple,IBM,Oracle,HP等,都在為UNIX內核貢獻代碼。
Q. 7: 挑出來一個與眾不同的來.
HP-UX
AIX
OSX
Slackware
Solaris
答 : Slackware。 HP-UX, AIX, OSX, Solaris 分別是由 HP, IBM, APPLE, Oracle 開發的,並且都是UNIX的變種. Slackware 則是一個Linux操作系統.
Q.8: Linux 不會感染病毒嗎?
答 : 當然會! 這個地球上不存在不會感染病毒的操作系統。但是Linux以迄今為止病毒數量少而著稱,是的,甚至比UNIX還要少。Linux榜上有名的病毒只有60-100個,而且沒有一個病毒在傳播蔓延。Unix粗略估計有85-120個。
Q.9: Linux 屬於哪種類型的操作系統?
多用戶
多任務
多線程
以上所有
以上都不是
答 : 以上所有。Linux是一個支持多用戶,可以同時運行多個進程執行多個任務的操作系統。
Q.10: 一般的 Linux 命令的語法格式是:
command [選項] [參數]
command 選項 [參數]
command [選項] [參數]
command 選項 參數
答 : Linux 命令的正確語法是, Command [選項] [參數]。
Q.11: 挑出來一個與眾不同的來。
Vi
vim
cd
nano
答 : cd 與其他命令不同。Vi,vim和 nano都是編輯器,用於編輯文檔,而cd是用於切換目錄的命令。
就這么多了。上述問題你學到手幾個?效果如何?我們期待著你的評論。下周,會有新的問題,讓我們拭目以待。保持健康,鎖定鏈接,記得來Tecmint哦。