中文詞法分析的簡單程式 (轉)
6.0 下編譯透過 disc 為辭典 expression 為輸入的短語
// Code.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream.h"
#include "string.h"
#include ".h"
int Count(char* words); 算有多少個字元
struct dict
{
char syn[8],word[6];
int de,wcode;
} dic[19];
int main(int argc, char* argv[])
{
strcpy(dic[0].syn,"祈使動詞");
dic[0].scode=0;
strcpy(dic[0].word,"請");
dic[0].wcode=0;
strcpy(dic[1].syn,"祈使動詞");
dic[1].scode=0;
strcpy(dic[1].word,"把");
dic[1].wcode=1;
strcpy(dic[2].syn,"代詞");
dic[2].scode=1;
strcpy(dic[2].word,"你");
dic[2].wcode=0;
strcpy(dic[3].syn,"動詞");
dic[3].scode=2;
strcpy(dic[3].word,"走");
dic[3].wcode=0;
strcpy(dic[4].syn,"動詞");
dic[4].scode=2;
strcpy(dic[4].word,"跑");
dic[4].wcode=1;
strcpy(dic[5].syn,"動詞");
dic[5].scode=2;
strcpy(dic[5].word,"跳");
dic[5].wcode=2;
strcpy(dic[6].syn,"動詞");
dic[6].scode=2;
strcpy(dic[6].word,"轉");
dic[6].wcode=3;
strcpy(dic[7].syn,"動詞");
dic[7].scode=2;
strcpy(dic[7].word,"抬");
dic[7].wcode=4;
strcpy(dic[8].syn,"方向詞");
dic[8].scode=3;
strcpy(dic[8].word,"向左");
dic[8].wcode=0;
strcpy(dic[9].syn,"方向詞");
dic[9].scode=3;
strcpy(dic[9].word,"向右");
dic[9].wcode=1;
strcpy(dic[10].syn,"方位詞");
dic[10].scode=4;
strcpy(dic[10].word,"向前");
dic[10].wcode=0;
strcpy(dic[11].syn,"方位詞");
dic[11].scode=4;
strcpy(dic[11].word,"側");
dic[11].wcode=1;
strcpy(dic[12].syn,"名詞");
dic[12].scode=5;
strcpy(dic[12].word,"左手");
dic[12].wcode=0;
strcpy(dic[13].syn,"名詞");
dic[13].scode=5;
strcpy(dic[13].word,"右手");
dic[13].wcode=1;
strcpy(dic[14].syn,"名詞");
dic[14].scode=5;
strcpy(dic[14].word,"左腿");
dic[14].wcode=2;
strcpy(dic[15].syn,"名詞");
dic[15].scode=5;
strcpy(dic[15].word,"右腿");
dic[15].wcode=3;
strcpy(dic[16].syn,"副詞");
dic[16].scode=6;
strcpy(dic[16].word,"快");
dic[16].wcode=0;
strcpy(dic[17].syn,"副詞");
dic[17].scode=6;
strcpy(dic[17].word,"慢");
dic[17].wcode=1;
strcpy(dic[18].syn,"其他詞");
dic[18].scode=7;
strcpy(dic[18].word,"起來");
dic[18].wcode=0;
//////////////////////--Init Data End
///////////////////////////////////////////
char expression[30],phrase[40]; 入句子的分詞
char *p1,*p2;
PWORD pw_exp1,pw_exp2,pw_old; pw_old Can RollBack
int n_WordNub = 0,n_InputNub = 0;
strcpy(expression,"請你向前走快抬左手側左腿");
for(int i=0; i<40; i++)
phrase[i] = ' ' ;
phrase[39] = '';
p2 = expression;
p1 = phrase;
pw_old = pw_exp1 = (PWORD)p2;
算輸入的字數以確定查詢的次數
n_InputNub = CountWord(p2);
printf("分析結果: n");
for(int nub=0; nub
for(int i=0; i<19; i++) // 查詢詞表
{
pw_exp2 = (PWORD)dic[i].word;
for(int j=0; j
if (*pw_exp1 == *pw_exp2)
{
pw_exp1++;
pw_exp2++;
}
else
{
pw_exp1 = pw_old;
}
}
if ((char*)pw_exp1 != p2) 表找到單詞
{
for(int x=0; x {
*p1 = *(p2+x);
p1++;
}
*p1 = '/'; 入分隔符
p1++;
p2 =(char*) pw_exp1; 詢下一個
pw_old = pw_exp1; RollBack
}
if (*p2 == '') //完了!
{
break;
}
}
}
詢完辭典!
if( ((char*)pw_exp1 == p2) && (*p2 != '') ) 表裡沒有找到
{
cout< }
else{
cout< cout<
return 0;
}
int CountWord(char* words)
{
int n = 0;
while(*words != '')
{
words++;
n++;
}
return int(n/2);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996071/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++原始碼單詞掃描程式(詞法分析)C++原始碼詞法分析
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- Java 實現《編譯原理》簡單詞法分析功能Java編譯原理詞法分析
- go練手:簡單的單詞格式轉換工具Go
- 簡單有效的多標準中文分詞詳解中文分詞
- 詞法分析的前奏:字元分析(三)詞法分析字元
- 什麼是詞法分析?請描述下js詞法分析的過程?詞法分析JS
- 劍指offer—58.翻轉單詞順序列—分析及程式碼(Java)Java
- Go 語言的詞法分析和語法分析(1)Go詞法分析語法分析
- 編譯程式(compiler)的簡單分析編譯Compile
- vue之詞法分析Vue詞法分析
- 詞法分析基礎詞法分析
- 詞法分析器詞法分析
- SCWS PHP 中文簡易分詞PHP分詞
- 中文分詞工具之基於字標註法的分詞中文分詞
- pyhanlp 中文詞性標註與分詞簡介HanLP詞性標註分詞
- Lex詞法分析器詞法分析
- Go 語言的詞法分析和語法分析(2)—Import宣告的解析Go詞法分析語法分析Import
- python hex轉ascii轉換Python程式碼的簡單方法PythonASCII
- 簡單程式的時間複雜度分析時間複雜度
- 科大訊飛語音轉文字以及中文分詞的Java測試程式碼中文分詞Java
- [譯]用javascript實現一門程式語言-詞法分析JavaScript詞法分析
- [轉]:如何快速構建一個簡單的程式
- Go編譯原理系列2(詞法分析&語法分析基礎)Go編譯原理詞法分析語法分析
- JavaScript簡單計算器程式碼分析JavaScript
- 中文簡繁體轉化
- 中文簡體轉繁體
- 小C語言--詞法分析程式(編譯原理實驗一)C語言詞法分析編譯原理
- Monkey 01 lexer 詞法分析器詞法分析
- 簡單實用的Mac影片轉換軟體:UniConverter mac中文版Mac
- 文字分析——分配單詞權重
- 簡簡單單的Vue2(簡單語法,生命週期,元件)Vue元件
- LeetCode-151-翻轉字串裡的單詞LeetCode字串
- 高大上的詞雲,其實很簡單
- python實現簡單猜單詞遊戲Python遊戲
- 簡單的UrlDns鏈分析DNS
- 簡單的查詢語法
- Go編譯原理系列3(詞法分析)Go編譯原理詞法分析
- 力扣之反轉字串中的單詞 III力扣字串