編譯原理上機 實驗1 簡單的詞法分析子程序

理解詞法分析在編譯程序中的做用ios

 初步瞭解和掌握詞法分析程序的實現方法和技術git

【實驗內容】app

1. 編寫程序,輸入一串字符,判斷該字符串是否爲合法標識符或合法整型常量spa

2. 無符號數的算術四則運算中的各種單詞識別。code

輸入:無符號*/、(、)構成的算術表達式blog

輸出:對識別出的每一單詞均單行輸出ci

輸入:字符串

8*2.5-1.0e2input

則,輸出:string

8

*

2.5

-

1.0e2

描述無符號數的肯定的、最小化的狀態轉換圖如圖1所示。其中編號126爲終態,分別表明整數、小數和科學計數的識別結束狀態。

 

 

 

1 文法G[<無符號數>]的狀態轉換圖

 

#include <iostream> #include <string> #include <ctype.h>
using namespace std; int fun(char art) { if((art>='a'&&art<='z')||(art>='A'&&art<='Z')|| art == '_') { return 1; } else if(isdigit(art)) { return 1; } else { return 0; } } void main() { int count = 0; char string[20]; cin>>string; if(string[0]>='a'&&string[0]<='z' || string[0]>='A' && string[0]<='z') { for(int i=1;i<strlen(string);i++) { if(fun(string[i]) == 0) { cout<<"標識符不合法"<<endl; count = 1; } } if(count == 0) { cout<<string; cout<<"標識符合法"<<endl; } } else { cout<<"首字符要大寫"<<endl; } }

 

import re a = input() b = list(a) str1 = list() #用來存放+ - * / 在b中的位置
str2 = ['+','-','*','/','(',')'] for index,i in enumerate(b): if i in str2: # c = [index,i] #將運算符的位置存入str1中
 str1.append(i) l1 = re.split('[-,*,+,/,(,)]',a) for index,i in enumerate(l1): print(i) if index< len(l1)-1: print(str1[index])
相關文章
相關標籤/搜索