編譯原理練習一(處理c原始碼)

2021-08-18 21:39:16 字數 1221 閱讀 4178

題目描述:編寫乙個程式,將c原始碼中的所有注釋字母大寫,注釋之外的所有保留字大寫,所有識別符號小寫

我使用的是js程式設計,先畫出有限狀態機的轉換,再用雙重switch,case處理自動轉換機的狀態,(雙重迴圈巢狀的switch,case是

解決此類問題的乙個模式,雖不是**最簡,但保證了簡單清晰的結構)

首先是狀態轉換圖:

按照狀態圖,寫出**如下:

const fs = require("fs");

var data="";

const redline = require("readline");

data = fs.readfilesync("test2.txt");

var tem = data.tostring();

var keys = ["auto","break","case","switch","char","const","continue","default","do","while",

"double","else","if","enum","extern","float","for","goto","int","long","register","return","short",

"signed","sizeof","static","struct","typedef","unino","unsigned","void","volatile"]; //關鍵字的定義

var chararray = "qwertyuiopasdfghjklzxcvbnm"

+"qwertyuiopasdfghjklzxcvbnm";

var digitarray = [0,1,2,3,4,5,6,7,8,9];

//對每一行的資料進行判斷

//用迴圈case處理

var t1 = judge(tem);

fs.writefilesync("test3.txt",t1.join(""));

console.log("寫入完成");

function judge(str) {

var m=0;

var n=0;

var tokens=;

for (m=0;m經過簡單的測試,沒有問題,但是肯定不是包含了所有測試樣例的。

先就這樣啦。

統一處理異常

1.controlleradvice 註解定義全域性異常處理類 controlleradvice public class globalexceptionhandler 2.exceptionhandler 註解宣告異常處理方法,註解的方法的引數列表裡,還可以宣告很多種型別的引數 controlle...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...