覺得時間過得很快,很多事情,還來不及思考,卻依然已經過去,可是許多的事情,明明已經過去,卻還是在不斷地思考,是為了挽回個人的顏面,還是為了挽回那自以為是的感覺。本周很多事情,做的都不算太好,回想整個工作的過程,竟然還沒有發現自己做了些什么?工作了,但是收獲卻并不多,曾經告誡自己的總結,卻依然沒有能夠去堅持,很心疼,卻也很無奈。
項目的事情已經完成的差不太多,可能在一些細節的方面,需要自己進一步的去探究。距離上次使用.net平臺的東西,已經07年的事情,很慶幸還能夠記起一些,但是依然暴露出自己的許多問題。
1、回想曾經學過的古訓,“工欲善其事,必先利其器”,做事情,過于急躁,依然是自己一個很大的毛病,沒有靜下來去思考,看看例子,學習學習模板,走的全是相反的方向,上來就往前沖,走了許多的彎路,也浪費了許多的時間,完全是愣頭青一個。如ue的使用、vs快捷鍵的使用等,都是對效率巨大的提升,可惜在前期卻沒有做。
2、在做事情的過程中,沒有及時的跳出圈子,積極思考問題,沒有對問題進行通盤的研究與考量,只知道,把這個模塊弄好,也只想著學好這個技術,忘記了全面思考。做事情,不能光顧著腳下,一定要學著抬頭看天。如在弄css時,完全不會去考慮在各個模塊中的重用問題,在使用asp.net控件時,沒有沉下來去思考控件的功能點,疲于應對,卻忘記了積極思考。
3、總結思路。想想這些周的忙碌,沒有太多的總結與提煉,雖然花費許多的時間,但是成長不足,沒有自己的沉淀與總結,在今后的項目中,也將會遇到更多的問題。始終記著一句話,你的能力是有限,但是你應該盡可能的在能力允許的范圍內,將自己的價值最大化。而現在的自己,恰恰是沒有做到這些,所以,總結沉淀這個習慣一定要完成。
其實,綜上所述,發現更多的問題,還是出現在一個人的學習方法上。沒有按照一個適合的過程去學習,走了許多的彎路,但是依然執迷不悟,對于一個新工具,新方法的學習,應該試著從以下幾個方面去思考總結。
1、程序幫助文檔。包括有,自帶的幫助手冊、安裝文件目錄結構等。許多現成的示例、demo就在自己的電腦上,如此簡單、易學的寶藏被丟棄的話,豈不是太可惜。所以,先學示例,然后,再圖發展。
2、交流學習。都是有圈子的存在,都在努力著做著更好,你需要去尋找這樣的圈子。有的時候,真不應該去逃避,因為,你現在所不重視的,所嫌麻煩的,在今后的將來都會成為你發展的瓶頸,所以,明白那些是重要的事情,就應該去做,而不是去等,去跟別人交流著,也試著去勇敢的貢獻自己的力量。
3、個人的總結。其實知識都是相通的,站在一個高度的時候,跳出自己的思維模式,學著去理解別人的思路與構想,試著去提煉、總結自己,這樣也許就是一個簡單的創新過程,而也許就是這些簡單的創新,才能夠讓自己變的有那么一點不一樣。
成長總會要付出許多的努力,我不怕付出,我就怕自己的根本就沒有想到,所以,有的時候,勇敢的去面對現實,在自己的能力范圍內,把現在的自己做好,在自己能夠想到的事情做好。聽過一個語音內容,說是任何想法,任何創意,都是一個沉淀的過程,所以,不必太介意一時的得失,對于好的想法,記下來,在隔斷時間后,再試著去思考、擴展、刪減等等,當你最后剩下這些的時候,你就會明白,這些才是你真正想要去做的,所以,加油加油,在自己的能力范圍內,最大化自己的價值。
posted @
2012-03-18 22:50 mingsen 閱讀(330) |
評論 (0) |
編輯 收藏
本周轉眼就過去了,隨之而來的,二月份也快見底了,匆匆忙忙的一個月,毛毛躁躁的一周,感覺收獲不是很大,是自己太急躁了點?還是太沉迷于事情本身,而忘記了跳出來思考?或者真的是兩者兼而有之。忙忙碌碌的一周,回憶起來最有收獲的,居然還是自己在下班之余寫的小結。因為匆忙,而忘記了自己曾經許多的習慣,也因為犯懶,而忘記了應該有的堅持,這個周,得恢復起來了,新的一周就要要開始了,抖擻起精神來,好好干活,機會不多,好好把握。
本周完成的基本事項有:
1、項目本身事宜的溝通,包括網絡問題初步溝通,需求問題初步溝通等。
高效很重要,臉皮厚也需要,不要怕打擾別人,有問題及時溝通,不能把自己憋傷了,學會珍惜自己的時間和精力,在思考問題全面的同時,及時解決問題,不要盲目等待。
2、jquery學習
很強大的一個框架,優秀的定位功能,以及ajax異步、css裝飾等,在實現功能的同時,結合css的知識,達到網頁美化的目的。
內容很豐富,但是時間有限,嘗試著把每天學習到的新東西用xmind進行整理,慢慢積累,相信會收獲許多的。
3、《金字塔原理》
陸陸續續在看著,雖然基本過了大概,但是不明白的東西還是很多,在接下來的這幾天時間里,抓緊時間吧,不然真的要食言了。
感想:書中提及的思考、表達方法是一些很有意思的嘗試,學習著 在交談、寫作前,提供更多有思考的信息,總結、歸納、分類等等,也學著設身處地的去做一件事情,想清楚其中的步驟流程,提煉后,進行交流、應用。
4、游泳:
被老師說了一頓,自己也認為學習的太慢,水性很不好,但是依然希望能夠通過勤奮去彌補。本周周末,利用網絡資源,學習了下蛙泳的基本步驟,有些收獲,希望能繼續堅持,我的時間不多哇,好好加油啊~~
感想:早就應該知道主動去學習,一直以忙為借口去逃避,接下來不找借口,努力把事情做好。
5、sybase ase 的安裝
真的很遺憾,忙活了一周,這個數據庫還是沒有配置好,遇到許多的問題,但是感覺自己沒有按照一個正確的思路去做、去構思、去定位問題。毛躁了太多,跳出的圈子還是不夠,這個周接著努力吧,不管怎么樣,靜下心來,當你把這個問題解決的時候,也許就是你再踏上一步的時刻,加油加油。
6、學習方法的思考
本周遇到sybase安裝部署的問題,許多事情都沒有做好,在問題定位、縮小范圍、重復工作上存在較大問題。嘗試著將這方面的思路整理下,使用結構化的方式進行思考吧。
總結本周的工作,用毛躁來形容真的是一點都不為過,下周的任務依然還有許多,學著安靜下來做事情吧,把手頭上的任務結束掉,學著勞逸結合,學習
跳出圈子思考問題,
用好總結,
用好番茄鐘。
posted @
2012-02-26 23:04 mingsen 閱讀(542) |
評論 (0) |
編輯 收藏
本周的匆匆忙忙,似乎總是抓不住自己的時間,有點急躁,有點不安,但是所幸還好,能夠在后半程靜下心來去做事情,還挺不錯的。
本周有幾件事情,讓自己有了技能及思考力上的提升,也在其中體會著成長的快樂,加油加油。
1、學會使用 摳圖工具。
之前使用 光影魔術手,一直不知道如何使用摳圖,一個誤打誤撞的機會,讓自己硬著頭皮折騰一把,發現還挺有意思的,呵呵,以后可以考慮多弄些素材,好好的學習下ps的東西,記住,要安排一個獨立的月份完成攝影和ps的工作。要學著
獨立承擔責任,哪怕會耽誤一些自己的時間,但是依然很值當。
2、學會使用div+css。
不得不說,有些事情 得積累到一定的程度,才能夠想明白。之前一直在學習css的知識,但是一直沒能理解透徹其中的含義,但是當你真正投入進去的時候,開始逼迫著自己去學習的時候,才發現css其實真的很簡單。懂得區分 <div>和<span>的區別,懂得display:block的含義,知曉盒子模型(padding、border、margin的概念及區別),定位(position:absolute、relative等)、明白float的含義(定義float后,原有div與父div的關系),就能夠明白div布局的基本設計方式了,真的要比table好很多。推薦圖書《精通CSS+Div》 前沿科技-曾順。其實,
積累不在于一時,而在于生活的分分秒秒中。
3、《金字塔原理》
看了一半的內容,收獲還是頗多,明白寫文章的一個思路,也明白語言的思想性,嘗試著去整理學習吧,慢慢來,興趣是最好的老師。這個月馬上就要結束了,自己得抓緊時間了。
4、log4j日志方法學習
明白不同級別日志的記錄方式,進而思考項目中的日志問題,一個好的項目,必要的日志文件是必須的,就像一個開關,可以隨時通過配置文件,實現程序問題的快速定位,實現問題的解決。一個好的程序,不光是功能的實現,效率的高效,更是需要有清晰的代碼結構、日志記錄、注釋等,
簡潔才是最優!!
5、項目
依然在穩步推進中,盡管還有許多未完成的事情,但是爭取加快進度,因為還有好多事情等著去努力,加油加油~~
6、游泳
已經開始了第二次課程學習,雖然嗆了好幾次水,但依然很不錯,能夠在水里面挪動了,呵呵,小小進步的開始,蛙泳,你得用心去學。
在這些事情之外,其實還有好多令人沮喪的事情,但是始終覺得,
既然一件事情,你投入了時間,投入了精力,那么就應該努力著去把它做好。下周的事情依然還有許多所以繼續努力,繼續前進。
posted @
2012-02-19 22:35 mingsen 閱讀(206) |
評論 (0) |
編輯 收藏
生活得有著自己的節奏,當你的步調被打亂的時候,放松自己,學著去接受,進而去調整,不要急躁。
把別人眼中的自己看輕,其實你本沒有那么的重要。
但是,把自己眼中的自己看重,你其實很重要,你來到這個世界,是如此的特別,有自己的理想與追求,做好現在的自己。
走慢一點,但要學著看遠一點~~~
本周的工作進步不大,感覺有些渾渾噩噩,被一些事情干擾著,再加上本身就缺乏著計劃,有點手足無措的感覺,調整好自己,學著去理清楚,重要的事情,緊急的事情,加油加油!!行動前,請先思考。
游泳的計劃已經開始了,希望能堅持。
項目的事情,進入到比較棘手的階段,得用心去解決問題了,學著慢一些,思考全面一點,對于恐懼的事情,認真著手去解決。
《金字塔的原理》已經開始閱讀了,但似乎沒有堅持做好,努力努力吧。
一些重要的事情,如資訊、Excel等等,沒有著手準備,確實是不應該,調整調整吧。
下一周,
1、繼續讀書,繼續思考,
2、提高工作效率,著手解決項目中遇到的難題。
3、提高個人抗干擾的能力,把握好自己的節奏,專注并不僅僅是一種時間上的投入。
posted @
2012-02-12 22:28 mingsen 閱讀(183) |
評論 (0) |
編輯 收藏
恐懼,每個人都會有,每個人都會在某一時刻對某些事情很犯怵,很擔心,也有許多人因此而畏首畏尾,自縛手腳。但是,其實,當你跳出這種情緒的包圍,以一種積極的心態來面對這件事情,把它當成一個問題來處理,而不管它將花費多長的時間,就是想著解決它,那么你會發現,其實并不可怕,而這也許就是自信心建立的開始。把
恐懼、擔心的事情寫下來,分析它,用心去解決它。
本周就有許多次這樣的嘗試,其實說成恐懼有點托大,但是至少是令人感到有些煩惱的一些事情,如照片的修復、虛擬網絡的搭建等等。很煩這樣的事情,一直拖到周末才集中處理,但是當你真正開始著手處理的時候,發現其實并不難,而這對于個人自信心的培養卻很重要。
本周感覺挺受用的事情,主要如下:
1、照片修復
對于照片修復,知道肯定需要使用一些軟件來處理,上網找到了美圖秀秀,并進行了安裝,發現功能雖然很多,但是并不滿足自己的要求,于是繼續尋找。這次學乖了一點,找到了光影魔術手,先看說明及功能特性,發現依然不能滿足,直接跳過,尋找下一個軟件,雖然無用,但卻省去了自己下載安裝的時間和精力。最后,簡單的問題,還是依靠笨拙的方法解決了,想到了windows自帶的畫圖工具,依靠取點采樣,完成了圖片的修改。
思考:在這整個過程中,發現做事情
慢一點真的很重要。
做之前,請先思量。會省時間,更會節約自己的精力。此外,慢一點的好處是,讓自己對一些事情,如軟件的功能點等,看的更仔細些,知道那些軟件可以做些什么,為下次節約了更多的時間。挺受用的一個方法。
2、vmvare虛擬網絡搭建
在本周,進行了虛擬網絡的搭建。為了滿足家庭網絡布局的要求,使用vmvare搭建了虛擬機及網絡,并在其上進行了系統及sql server的安裝,并通過vmvare實現虛擬網絡的搭建,就這樣,一個基于局域網的開發環境就構建好了,在今后的開發過程中,即可使用虛擬機進行,為自己的主機保持了一個相對干凈的使用環境。
思考:期間也曾遇到網絡不通的問題,嘗試著
跳出圈子進行思考,才發現,原來是防火墻的緣故。當你低頭干活時,嘗試著跳出來想想,站在更高的角度,也許會有更大的收獲。此外,
平時的積累整理也很重要,對于一些重要的軟件、文檔等等,要學會整理,這樣才能有更大的提高,而不是等到出現問題,需要了,才撓破頭去找。
3、工作上:
在本周,對于工作上,應該說是依然在穩步推進著,雖然有點慢,但是對于節后的第一周,還是挺滿意,至少在狀態的恢復上還行。
在項目上,對于需求方面的溝通,
自己要先想明白,對于自己都不能明白的東西,就更別指望著客戶去想清楚,所以,做之前先思考,簡化流程,才能做出更好的系統。
下周,要重點思考一些項目管理方面的問題,如進度管理、風險管理、培訓、個人時間管理、溝通等方法的問題。
發現自己有些時候,有點過于嚴肅,應該試著
放下自己,哪怕這樣會讓自己犧牲點時間。
4、讀書
本周,重點閱讀了《思考力決定競爭力》這本書,書中對于一些邏輯性思考的描述,還是挺有意思的,對于一個論點或論據,
區分其是“結論”還是“假設”很重要,平對對于問題,多思考為什么,在閑暇時間,多考驗自己,像大前研一一樣,去積極思考,這樣,你才能在真正遇到問題的時候,快速的解決問題【
多問自己,學會換位思考,適當YY,有益健康】。
對于假設,要找出足夠的論點進行支撐,這樣,才能富有良好的結構,而這其中,就需要進行全面的思考,以及專業的態度,對于管理類問題、程序類問題,等等,都要嘗試著去鍛煉自己這方面的能力,挺有意思的事情,加油加油~~,本周,將在此基礎上完成《麥肯錫方法》的閱讀,以及《金字塔原理》的初步閱讀。
5、思考
本周感悟,認識到有一個字----“
敬”的重要性,有些事情,不管你承認與否,它都是存在著。靜下心來去思考這份過程,你會發現自己并不是那么重感情,“敬”也許是表達的最貼切的說法,至少“敬”的成分會多很多,那么對于無法改變的事情,就去“敬”吧,同時也敬自己,尊重自己內心的想法,面對現實,開拓創新,也許就是我接下來應該去努力的事情。
恍恍惚惚,寫下了這么多本周的思考與感想,對于本又想放棄寫周記的人該情以何堪啊~~,呵呵,不過既然決定了,就繼續吧,也不擔心各位朋友的笑話,堅持做自己才是最重要的,我要堅持把這個游戲玩到底,還要繼續折騰呢~~
posted @
2012-02-05 21:19 mingsen 閱讀(170) |
評論 (0) |
編輯 收藏
轉眼即到2月了,總覺得自己在這個月做些什么,圍繞的新年的計劃,我得加把油去把一些事情執行一下了,列個計劃,嘗試著去做這些做好吧。
1、
游泳,本月報名,預計每周4個小時左右,依靠外力完成
2、讀書;
《金字塔原理》
《思考力》
培養個人的邏輯思考能力,本月完成兩本書,使用思維導圖對其進行總結。睡前完成
3、
項目(花費大量時間) 工作上的事項:項目管理等嘗試
業余時間:vs學習
4、Excel、英語學習,通過微博進行每日關注,每周總結。
5、資訊信息,通過163等網站進行每日關注
任務似乎非常的艱巨,想體驗嘗試的東西很多,盡力而為去嘗試吧。
此外,有些事情,希望自己能接著做好
1、資料的定期整理,養成良好的習慣
2、總結回顧
3、周計劃的執行
posted @
2012-02-01 22:51 mingsen 閱讀(146) |
評論 (0) |
編輯 收藏
春節期間讀了兩本書,一本是余華的《活著》,還有一本是《十四堂人生創意課》,其實,都是在回家的途中閱讀的,頗有些感慨,尤其是前者,讓自己在讀的過程中,禁不住自己情緒的波動,為主人公的曲折人生感慨著,也為主人公的堅強而慶幸著,但是,想想,這人世間的苦難,怎么就這般呢,一個顫巍巍的老人,何以就能夠在人生的大悲大苦面前,這樣的從容,這樣的淡定呢?可能有人會想,這可能就是個小說而已,但是,我想,這絕對不僅僅是!
春節期間,趁著拜年走親戚的功夫,和爸媽一起聊天,聊到了我外公、爺爺那一代人的人生經歷,真的感覺,在現實面前,在動蕩的時局面前,個人的力量是何等的微不足道,有時,時代會展示出它猙獰的面目,讓人們如此的戰栗與不安。在我們的上上一代人中,他們先后經歷了抗日救國、國共內戰、新中國成立、3年自然災害、十年文革、計劃經濟、改革開放等等故事,在時代的大起大落面前,因為年少的沖動,因為生活的艱辛,因為站錯了隊伍,過早地品嘗著人生的苦楚,那個時候,有人被活活餓死,有人因為生病沒錢治療,在家煎熬著等死,有人被批斗,有人被關進了牛棚里,而這些人,其實并不遠,就是咱們祖輩的兄弟姐妹們,他們與我們離的很近很近,本來他們可以過得很好,但是卻因為種種因素,年紀輕輕就過早的離去。有時,會突然地覺得,人活著是多么的不易,有時也會想到,能活到現在,真的是個奇跡。如今,生活的確是變好了許多,在父輩口中,只能過年才能吃到的菜,已經可以天天品嘗的到了,但是,父輩他們吃過的苦,又能有多少人,能夠去品味,去珍惜呢?
讀欣頻的《十四堂人生創意課》則讓人為另一種生存的方式而喝彩著,雖然,不能做到書中描述的部分內容,但是,依然會是一些非常有意思的嘗試,嘗試著去以一種更健康、更高昂的態度去活著,去為那種豐富的人生閱歷活著,去品味著、也嘗試著去換位思考著,多一種視角,多一種與自然,與世界聯系的方式, 很有意思,讓自己有很強的沖動,想著去旅游、去學習、去交流,或許,這也是我們應該追求的另一種人生吧,也是我們生于這個時代,所應該做的珍惜吧。
珍惜現在,活出自我。
posted @
2012-01-28 21:40 mingsen 閱讀(171) |
評論 (0) |
編輯 收藏
新的一年,想放下曾今那個膽小、吝嗇的自我,想勇敢的去嘗試一些事情,學著跟自己做一些游戲,跟自己比賽。
1、堅持去寫博客,堅持對每周的生活、工作、感想,進行著總結,這樣,當我到年底的時候,是不是可以嘗試著去出
本書呢?好期待 那厚厚的、踏實的樣子。
2、學會
游泳。
生存必須的技能,只是為了在這個社會能夠活下去。
3、
項目管理。學習著去站在更高的角度思考問題,嘗試著去抓住
僅有的幾次機會,你知道自己的機會并不多。
4、
英語口語。生存必備的技能,為了在這個世界上,能夠有更多的嘗試。
5、旅游。想去很多的地方,可以一個人去,也可以和朋友一起,找個可以相互招呼,能夠愉快交談的人。可以開車自駕,也可以火車旅行,總之,不要在顧慮太多,其實確實也沒有太多可以去擔心的。山西、陜西必去的地方~~~,加油加油
6、演講。希望能夠有良好的思考力與邏輯能力,能夠準確地表達自己的意思,提高與人溝通的技能~~,加油加油,這個差距真的很大。
自己與自己賽跑,自己與自己比賽,你知道,其實你真的可以做的更好
新年里的讀書清單:
1、《十四堂人生創意課》
2、《思考力》
旅行:
天柱山
posted @
2012-01-18 22:44 mingsen 閱讀(324) |
評論 (1) |
編輯 收藏
已經很長時間沒有更新博客了,都有些忘記了網站的用戶和密碼了,看著博客的標題,真的有點慚愧,因為忙碌,因為缺乏方向,因為沒有堅持,真的忘記了許許多多。決定,還是 好好收拾整理下心情,寫一些自己的東西,也算是對過往生活的總結吧,人嘛,總是在總結積累中,逐步提高的。
本文介紹的是一款軟件,xmind,一個思維導圖的軟件,之所以推薦,是因為很好用,工具的功能很強大,也能夠支持許多的知識技能,如“頭腦風暴”、“知識管理”、“圖書提綱”等等~~,但是 目前而且本人還是把他當做了一個優秀的 信息收集的功能,或者說也是一種知識管理吧,呵呵,不知道原作者看到了,會不會吐血~~
廢話少說,嘗試著整理下吧,以下圖為例,說明思維導圖xmind的概況。

哇,貌似圖形 有點大,但是更多的是想說明,這個軟件的一些基本的用法,和 功能的簡單介紹。
我相信,如果看過這個圖的話,你會對思維導圖有一定的了解,如果 你 懂得一些基本的知識管理,你會知道,這個就是一個簡單的知識匯總與分類,是的,的確很簡單,但是這個至少能夠幫助我們幾點:
1、快速的告訴我們,xmind 是個什么東西,能夠做什么(傳達信息)
2、便捷的知識管理功能,對于 大綱信息,可以作為節點,對于 輔助信息,我們可以放到輔助提示框中,對于詳細的描述信息,可以放到 附注中(做到主次分明,快速定位信息)
3、優秀的圖形表達能力。(賞心悅目)
好了,暫時先總結這些吧,后續內容在整理資料后,繼續補充,歡迎提寶貴意見~~~
posted @
2011-11-10 22:26 mingsen 閱讀(1547) |
評論 (2) |
編輯 收藏
1、概念:
antlr是 another tool for language recongnition,用于 詞法、語法和語義分析。如果大家仔細看一些開源項目的lib包,會經常看到其包含有antlr.jar文件。
2、使用場景:
設想一個運算的場景,“1+3”為多少,如果通過程序解析這個字符串,可以嘗試使用拆解字符串的方法,識別其中的運算符“+”,然后將結果輸出,感覺很簡單。但是,如果場景變化呢?“1+3-6/2”這個樣子的呢,也得改程序?是不是有些頭大呢?那么antlr就可以幫助你來解決這個頭大的問題。
3、主要內容:
antlr重要包含三個重要的內容,分別是 詞法分析、語法分析、語義分析,其各個部分的用途主要如下所示:
詞法分析: (識別出 “1”,“+”,“3”)
(1)逐個字符讀取公式源文件
(2)識別公式源文件中的詞法單元(Token)
(3)將詞法單元傳遞給語法分析器
(4)詞法分析器又叫掃描器(Scanner)
語法分析:(識別1+3)
(1)從詞法分析器獲得詞法單元
(2)利用文法定義驗證詞法單元組合
(3)構造語法分析樹
(4)將語法分析樹傳遞給下一階段
(5)語法分析器又叫解析器(Parser)
語義分析:(計算結果)
(1)完成語義動作定義
(2)一般在語法分析器中完成語義分析
大致各部分的含義就是,首先 識別出 輸入的字符是否正確,其次檢驗字符之間的運算關系,然后計算得出相關的結果。
4、主要工作:
需要寫兩個.g的文件,分別是 Expr.g和Eval.g文件,前者生成詞法、語法分析相關的java文件,通過編譯生成ExprLexer.java、ExprParser.java 和 Expr.tokens文件,后者生成語義分析文件,分別為Eval.java和Eval.tokens文件。
相關的編譯方法為:java org.antlr.Tool Expr.g
5、開發環境搭建:
1、配置java環境變量
2、將antlr的相關jar包添加到環境變量中
3、運行 java org.antlr.Tool 進行驗證
6、簡單代碼展示,用于計算簡答的加減運算
1)、expr.g
grammar Expr;
options {
language=Java;
output=AST;
ASTLabelType=CommonTree; // type of $stat.tree ref etc...
}
@header {
package test.tool;
}
prog: ( stat {/* System.out.println($stat.tree.toStringTree()); */})+ ;
stat
: expr NEWLINE -> expr
| NEWLINE ->
;
expr: multExpr (('+' ^|'-' ^) multExpr)* ;
multExpr
: atom (('/' ^|'*' ^) atom)*
;
atom
: INT
| DOUBLE
| ID
| '(' ! expr ')' !
;
ID : ('N'|'R'|'A'|'C'|'I'|'D')'B'('S'|'H');
INT : '0'..'9'+ ;
WS : (' '|'\t')+ {skip();} ;
NEWLINE:'\r'? '\n' ;
DOUBLE : (('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9')*) '.' (('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9')*);
2)Eval.g
tree grammar Eval;
options {
tokenVocab=Expr; // read token types from Expr.tokens file
ASTLabelType=CommonTree; // what is Java type of nodes?
}
@header {
package fanxiqian.tool;(可在此處添加 package和import等相關信息)
}
@members {
…………(可在此處添加java方法)
}
prog: stat+ ;
stat: expr+;
expr returns [double value]
: ^('+' a=expr b=expr) {$value = a+b;} //此處定義了 相關運算符的含義
| ^('-' a=expr b=expr) {$value = a-b;}
| ^('*' a=expr b=expr) {$value = a*b;}
| ^('/' a=expr b=expr) {$value=a/b;}
| INT {$value = Integer.parseInt($INT.text);}
| DOUBLE {$value = Double.parseDouble($DOUBLE.text);}
;
3)通過編譯命令,生成相關的java文件
java org.antlr.Tool Expr.g
java org.antlr.Tool Eval.g
4)編寫相關的測試類
public class Test
{
public static void main(String[] args) throws Exception
{
ANTLRStringStream input;
ExprLexer lexer;
CommonTokenStream tokens;
ExprParser parser;
String formula="1+3";
//開始解析
formula += "\n";
input = new ANTLRStringStream(formula);
lexer = new ExprLexer(input);
tokens = new CommonTokenStream(lexer);
parser = new ExprParser(tokens);
ExprParser.prog_return r = parser.prog();
// walk resulting tree
CommonTree t = (CommonTree)r.getTree();
CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
Eval walker = new Eval(nodes);
System.out.println(walker.expr());
// }
即可得到輸出結果為4。
7,總結
antlr是個強大的公式解析工具,本文只是簡單的一個小結,以后遇到相關的使用繼續補充吧,歡迎大家補充添加吧。
posted @
2011-05-16 20:12 mingsen 閱讀(4524) |
評論 (0) |
編輯 收藏