当前位置: 首页 > news >正文

网站建设找邓金平wordpress给导航加链接

网站建设找邓金平,wordpress给导航加链接,室内装修装饰设计培训班,金阊网站建设采用实验1的简单语言#xff0c;设计并实现含多条简单赋值语句的语法语义分析程序#xff0c;要求采用递归下降翻译法。 注意与实验1、2的衔接。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.T…采用实验1的简单语言设计并实现含多条简单赋值语句的语法语义分析程序要求采用递归下降翻译法。 注意与实验1、2的衔接。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks;namespace SemanticsAnalysis {/// summary/// 四元式/// /summaryclass FourFormula {public Word result;public Word arg1;public Word operate;public Word arg2;public override string ToString() {string s result.word arg1.word;if(operate ! null) {s operate.word;}if(arg2 ! null) {s arg2.word;}return s; }}class SemanticsAnalysis {WordStream wordStream new WordStream(text.txt);// ListError errors new ListError();static void Main(string[] args) {SemanticsAnalysis syntax new SemanticsAnalysis();syntax.SemanticsParser();Console.ReadKey();}/// summary/// 语义分析/// /summarypublic void SemanticsParser() {do {functionParser();} while(wordStream.ReadNextWord().typeNum ! WordPicker.endTypeNumber);if(success) {// Console.WriteLine(成功);foreach(FourFormula f in list) {Console.WriteLine(f);}Console.WriteLine(---finish---); }}/// summary/// 函数/// /summaryprivate void functionParser() {Word word wordStream.ReadNextWord();//返回类型if(!KeyWords.isReturnType(word)) {addError(word, 返回值错误);}word wordStream.ReadNextWord();//函数名if(!isIdentifier(word)) {addError(word, 函数名错误);}//参数{word wordStream.ReadNextWord();if(word.typeNum ! Symbols.left_bracket.typeNum) {addError(word, (缺失);}arguments();word wordStream.ReadNextWord();if(word.typeNum ! Symbols.right_bracket.typeNum) {addError(word, )缺失);}word wordStream.ReadNextWord();if(word.typeNum ! Symbols.left_curly_bracket.typeNum) {addError(word, {缺失);}//语句串statementSequence();//}word wordStream.ReadNextWord();if(word.typeNum ! Symbols.right_curly_bracket.typeNum) {addError(word, }缺失);wordStream.retractWord();}}/// summary/// 参数/// /summaryprivate void arguments() {Word word wordStream.ReadNextWord();if(!KeyWords.isType(word)) {if(isIdentifier(word))addBeforeError(word, 参数类型缺失);else {if(wordStream.LastWord().typeNum Symbols.comma.typeNum)addBeforeError(word, ,多余);wordStream.retractWord();return;}}word wordStream.ReadNextWord();if(!isIdentifier(word)) {addBeforeError(word, 参数标识符错误);if(word.typeNum Symbols.right_bracket.typeNum) {wordStream.retractWord();return;}}//逗号word wordStream.ReadNextWord();if(word.typeNum Symbols.comma.typeNum) {arguments();}else if(word.typeNum Symbols.right_bracket.typeNum) {wordStream.retractWord();return;}}/// summary/// 判断是否是标识符/// /summary/// param nameword/param/// returns/returnsprivate bool isIdentifier(Word word) {return word.typeNum WordPicker.identifierTypeNumber;}/// summary/// 语串/// /summaryprivate void statementSequence() {Word word wordStream.ReadNextWord();while(word.typeNum ! Symbols.right_curly_bracket.typeNum word.typeNum ! WordPicker.endTypeNumber) {if(KeyWords.isType(word)) {defineStatement();}else if(isIdentifier(word)) {assignStatement();}else {addError(word, 多余);}/* else if(KeyWords.isCondition(word)) {}else if(KeyWords.isFORLoop(word)) {}else {// addError(word, 多余);}*/word wordStream.ReadNextWord();}wordStream.retractWord();}/// summary/// 定义语句/// /summaryprivate void defineStatement() {Word word wordStream.ReadNextWord();if(!isIdentifier(word)) {addBeforeError(word, 变量名缺失);wordStream.retractWord();}word wordStream.ReadNextWord();if(word.typeNum Symbols.assign.typeNum) {FourFormula fourFormula new FourFormula();fourFormula.result wordStream.LastWord(); fourFormula.arg1 expressStatement();addFourFormula(fourFormula);word wordStream.ReadNextWord(); }if(word.typeNum Symbols.comma.typeNum) {defineStatement();}else if(word.typeNum ! Symbols.semicolon.typeNum) {addBeforeError(word, ;缺失);wordStream.retractWord();}}/// summary/// 赋值语句/// /summaryprivate void assignStatement() {FourFormula fourFormula new FourFormula();fourFormula.result wordStream.NowWord();Word word wordStream.ReadNextWord();if(word.typeNum ! Symbols.assign.typeNum) {addBeforeError(word, 缺失);wordStream.retractWord();}fourFormula.arg1expressStatement();addFourFormula(fourFormula);word wordStream.ReadNextWord();if(word.typeNum ! Symbols.semicolon.typeNum) {addBeforeError(word, ;缺失);wordStream.retractWord();}}#region 表达式解析/// summary/// 表达式/// /summaryprivate Word expressStatement() {Word express;FourFormula fourFormula new FourFormula();express term();fourFormula.arg1 express; Word word wordStream.ReadNextWord();while(word.typeNum Symbols.add.typeNum || word.typeNum Symbols.sub.typeNum) {fourFormula.operate word;fourFormula.arg2 term();express createTempVar();fourFormula.result express;addFourFormula(fourFormula);fourFormula new FourFormula();fourFormula.arg1 express; word wordStream.ReadNextWord();}wordStream.retractWord();return express;}/// summary/// 项/// /summary/// returns/returnsprivate Word term() {Word term;FourFormula fourFormula new FourFormula();term factor();fourFormula.arg1 term;Word word wordStream.ReadNextWord();while(word.typeNum Symbols.mul.typeNum || word.typeNum Symbols.except.typeNum || word.typeNum Symbols.remain.typeNum) {fourFormula.operate word;fourFormula.arg2factor();term createTempVar();fourFormula.result term;addFourFormula(fourFormula);fourFormula new FourFormula();fourFormula.arg1 term;word wordStream.ReadNextWord();}wordStream.retractWord();return term;}/// summary/// 表达式因子/// /summaryprivate Word factor() {Word factornull;Word word wordStream.ReadNextWord();if(isValue(word)) {factor word;}else if(word.typeNum Symbols.left_bracket.typeNum) {factor expressStatement();word wordStream.ReadNextWord();if(word.typeNum ! Symbols.right_bracket.typeNum) {addBeforeError(word, )缺失);wordStream.retractWord();}}else {addBeforeError(word, 表达式错误);wordStream.retractWord();}return factor;}#endregion/// summary/// 判断是否是数值变量类型/// /summary/// param nameword/param/// returns/returnsprivate bool isValue(Word word) {return word.typeNum WordPicker.numberTypeNumber|| word.typeNum WordPicker.charTypeNumber|| word.typeNum WordPicker.stringTypeNumber|| word.typeNum WordPicker.identifierTypeNumber;}#region 添加四元式ListFourFormula list new ListFourFormula();/// summary/// 保存四元式/// /summary/// param namefourFormula/paramprivate void addFourFormula(FourFormula fourFormula) {list.Add(fourFormula);}int idNameCount 0;/// summary/// 创建临时变量/// /summary/// returns/returnspublic Word createTempVar() {Word word new Word();word.word $t idNameCount;word.typeNum 0;return word;}#endregion #region 输出错误bool success true;//语法解析结果/// summary/// 输出在特定之前的错误/// /summary/// param nameword/param/// param namev/paramprivate void addBeforeError(Word word, string v) {success false;Console.WriteLine(word.ToPositionInfo() \t之前 v);}/// summary/// 输出错误/// /summary/// param nameword/param/// param namev/paramprivate void addError(Word word, string v) {success false;Console.WriteLine(word.ToPositionInfo() \t v);}#endregion} }using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks;namespace SemanticsAnalysis {/// summary/// 词/// /summaryclass Word {public int typeNum 0;public string word;public int col 0;public int row 0;public override string ToString() {return ( typeNum , word );}public string ToPositionInfo() {return 行: ( row 1 ) \t列: col \t码: typeNum \t字: word;}}class WordPicker {string[] input;//int input_index 0;int row 0;int col 0;char character;/// summary/// 操作符表/// /summary string[] operatorSort null;public static int identifierTypeNumber; //变量名类型public static int numberTypeNumber; //数值类型public static int charTypeNumber; //字符类型public static int stringTypeNumber; //字符串类型public static int endTypeNumber -1; //结束符类型public static int errorTypeNumber -2; //出错类型public static int noDefine -3; //未定义类型public static char nullChar \0;public WordPicker(string file) {input File.ReadAllLines(file);identifierTypeNumber KeyWords.keyWordTable.Length 1;numberTypeNumber KeyWords.keyWordTable.Length 2;charTypeNumber KeyWords.keyWordTable.Length 3;stringTypeNumber KeyWords.keyWordTable.Length 4;operatorSort new string[Symbols.operatorTable.Length];Array.Copy(Symbols.operatorTable, operatorSort, Symbols.operatorTable.Length);Array.Sort(operatorSort);Array.Reverse(operatorSort);}/// summary/// 读词/// /summary/// returns/returnspublic Word Scanner() {Word myWord;read();readValidChar();//标识符if(char.IsLetter(character)) {myWord readWord();}//数值else if(char.IsDigit(character)) {myWord readDigit();}//字符常量else if(character \) {myWord readConstChar();}//字符串else if(character \) {myWord readConstString();}/*//结束符else if(character endChar) {myWord.word endChar;myWord.typeNum endTypeNumber;}*///空值else if(character nullChar) {myWord new Word();myWord.row row;myWord.col col;myWord.word Ending;myWord.typeNum endTypeNumber;}//其他字符else {myWord readOtherChar();}return myWord;}/// summary/// 标识符/// /summary/// param namemyWord/paramprivate Word readWord() {Word myWord new Word();myWord.row row;myWord.col col;while(char.IsLetter(character) || char.IsDigit(character)) {myWord.word character;read();}retract();myWord.typeNum KeyWords.getTypeNumber(myWord.word);return myWord;}/// summary/// 其他字符/// /summary/// param namemyWord/paramprivate Word readOtherChar() {Word myWord new Word();myWord.row row;myWord.col col;string s character;for(int i 0; i 2; i) {read();if(character nullChar) {break;}s character;}foreach(string op in operatorSort) {if(s.StartsWith(op)) {retract(s.Length - op.Length);s op;break;}}myWord.word s;myWord.typeNum Symbols.getTypeNumber(myWord.word);return myWord;}/// summary/// 识别数字常量/// /summary/// param namemyWord/paramprivate Word readDigit() {Word myWord new Word();myWord.row row;myWord.col col;while(char.IsDigit(character)) {myWord.word character;read();}if(character .) {myWord.word character;read();while(char.IsDigit(character)) {myWord.word character;read();}}retract();myWord.typeNum numberTypeNumber;return myWord;}/// summary/// 识别字符常量/// /summary/// param namemyWord/paramprivate Word readConstChar() {Word myWord new Word();myWord.row row;myWord.col col;// myWord.word character;read();//读取直到\结束while(character ! \) {myWord.word character;read();//读到空字符或结束字符if(character nullChar /*|| character endChar*/|| char.IsControl(character)) {/* if(character endChar) {myWord.word endChar;} */myWord.typeNum errorTypeNumber;return myWord;}}// myWord.word character;Match r Regex.Match(myWord.word, ^(\\\\([0-7]{1,3}|x[0-9a-fA-F]|[abfnrtv\\\\\\?])|[^\\\\])$);//转义字符模式匹配if(!r.Success) {myWord.typeNum errorTypeNumber;return myWord;}myWord.typeNum charTypeNumber;return myWord;}/// summary/// 识别常量字符串/// /summary/// param namemyWord/paramprivate Word readConstString() {Word myWord new Word();myWord.row row;myWord.col col;// myWord.word character;read();while(character ! \) {myWord.word character;read();//读到空字符或结束字符if(character nullChar || char.IsControl(character)) {// myWord.word 0;myWord.typeNum errorTypeNumber;return myWord;}}// myWord.word character;//转义字符模式匹配if(!isLegalString(myWord.word)) {myWord.typeNum errorTypeNumber;return myWord;}myWord.typeNum stringTypeNumber;return myWord;}/// summary/// 合法字符串书写/// /summary/// param nameword/param/// returns/returnsprivate bool isLegalString(string word) {int i 0;while(i word.Length) {if(word[i] \\) {if(i word.Length)return false;foreach(char c in translateChar) {if(c word[i]) {goto aLabel;}}return false;}aLabel:i;}return true;}const string translateChar abfnrtv\\\\?;const string realChar \a\b\f\n\r\t\v\\\\?;/// summary/// 转换为真实字符串/// /summary/// param nameword/param/// returns/returnsprivate string toRealString(string word) {string res ;int index;for(int i 0; i word.Length; i) {if(word[i] \\) {if(i word.Length)throw new Exception(字符串以\\结尾异常);index translateChar.IndexOf(word[i]);if(index -1)throw new Exception(\\ word[i] 解析异常);res realChar[index];}else {res word[i];}}return res;}/// summary/// 读一个字符/// /summaryvoid read() {if(input.Length row || input.Length row 1 input[input.Length - 1].Length col) {character \0;}else {if(col input[row].Length) {col 0;row;}character input[row][col];col;}}/// summary/// 去除无效字符/// /summaryvoid readValidChar() {while(char.IsWhiteSpace(character)) {if(character \0) {return;}read();}//判断注释if(character / input[row].Length col) {ignoreNote();}}/// summary/// 忽视注解/// /summaryprivate void ignoreNote() {read();//注释‘//’if(character /) {row;col 0;read();readValidChar();}//注释‘/*。。。*/’else if(character *) {read();if(character \0) {return;}char c;while(true) {c character;read();if(* c / character) {read();readValidChar();return;}if(character \0) {return;}}}else {retract();}}/// summary/// 回退一个字符/// /summaryvoid retract() {col col - 2;checkCol();read();}/// summary/// 回退v个字符/// /summary/// param namev/paramprivate void retract(int v) {if(v 0)return;col col - v - 1;checkCol();read();}/// summary/// 检查col是否合法/// /summaryvoid checkCol() {if(col 0) {row--;col input[row].Length col;checkCol();}}} } using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;namespace SemanticsAnalysis {class KeyWords {/// summary/// 关键字表/// /summarypublic static string[] keyWordTable {auto,break,case, char,const,continue,default,do,double,else,enum,extern,float,for,goto,if, int,long, register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while};public static Word AUTO, BREAK, CASE, CHAR, CONST,CONTINUE, DEFAULT, DO, DOUBLE,ELSE, ENUM, EXTERN, FLOAT, FOR,GOTO, IF, INT, LONG, REGISTER,RETURN, SHORT, SIGNED, SIZEOF, STATIC,STRUCT, SWITCH, TYPEDEF, UNION, UNSIGNED,VOID, VOLATILE, WHILE;static KeyWords() {Type t typeof(KeyWords);FieldInfo[] fields t.GetFields();Word word;foreach(FieldInfo f in fields)if(f.FieldType.Equals(typeof(Word))) {word new Word();word.word f.Name.ToLower();word.typeNum getTypeNumber(word.word);f.SetValue(t, word);}}/// summary/// 获取关键字编码/// /summary/// returns/returnspublic static int getTypeNumber(string s) {for(int i 0; i keyWordTable.Length; i) {if(keyWordTable[i] s) {return i1;}}return WordPicker.identifierTypeNumber;}public static bool isPrefType(Word w) {return SIGNED.typeNum w.typeNum|| UNSIGNED.typeNum w.typeNum;}public static bool isType(Word w) {return INT.typeNum w.typeNum|| CHAR.typeNum w.typeNum|| DOUBLE.typeNum w.typeNum|| FLOAT.typeNum w.typeNum|| SHORT.typeNum w.typeNum; }public static bool isReturnType(Word w) {return isType(w) || VOID.typeNum w.typeNum;}internal static bool isCondition(Word word) {return word.typeNum IF.typeNum;}internal static bool isFORLoop(Word word) {return word.typeNum FOR.typeNum|| word.typeNum WHILE.typeNum;}internal static bool isWhileLoop(Word word) {return word.typeNum WHILE.typeNum;}internal static bool isDoLoop(Word word) {return word.typeNum DO.typeNum;}internal static bool isKeyWord(Word word) {return word.typeNum 0 word.typeNum keyWordTable.Length;}}class Symbols {public static string[] operatorTable {{,},[,],(,),-,.,,--,!,,||,~,,|,^,,-,*,/,%,,,,,,,,!,?,:,,,;,,,-,*,/,%,,^,|,,};public static Word left_curly_bracket, right_curly_bracket,left_square_bracket, right_square_bracket,left_bracket, right_bracket,arrow, point, two_add, two_sub,logic_not, logic_and, logic_or,bitwise_not, bitwise_and, bitwise_or, bitwise_xor,add, sub, mul, except, remain,left_move, right_move,less, greater, greater_equal, less_equal,equal, not_equal, question_mark, colon, comma, semicolon,assign, add_assign, sub_assign, mul_assign, except_assign, remain_assign,and_assign, xor_assign, or_assign, left_move_assign, right_move_assign;internal static bool isSemicolo(Word word) {return word .typeNum semicolon.typeNum;}static Symbols() {Type t typeof(Symbols);FieldInfo[] fields t.GetFields();Word word;int index 0;foreach(FieldInfo f in fields)if(f.FieldType.Equals(typeof(Word))) {word new Word();word.word operatorTable[index];word.typeNum getTypeNumber(word.word);f.SetValue(t, word);}}public static int getTypeNumber(string s) {int start 100;for(int i 0; i operatorTable.Length; i) {if(operatorTable[i] s) {return start i;}}return WordPicker.noDefine;}} }using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace SemanticsAnalysis {/// summary/// 读词缓存流/// /summaryclass WordStream {WordPicker wordPicker;ListWord words new ListWord();int index -1;public WordStream(string file) {wordPicker new WordPicker(file);}/// summary/// 读取下一个词/// /summary/// returns/returnspublic Word ReadNextWord() {index;if(words.Count index) {Word w wordPicker.Scanner();if(words.Count 0 || words[words.Count - 1].typeNum ! WordPicker.endTypeNumber)words.Add(w);index words.Count - 1;}return words[index];}/// summary/// 现在的词/// /summary/// returns/returnspublic Word NowWord() {if(words.Count index index 0) {return words[index];}return null;}/// summary/// 上一个词/// /summary/// returns/returnspublic Word LastWord() {if(index 0) {return words[index - 1];}else {return null;}}/// summary/// 回退一个词/// /summarypublic void retractWord() {if(index 0) {index--;}}} }输入 void main(int a,int b){ //int a4-2;//int aa,ba*82,c a;bin12-12* xa;int sout10-2.23;mess ok*(6-as); } 输出
http://www.zqtcl.cn/news/568689/

相关文章:

  • 网站建设的解决方案南京网站搜索排名
  • 网站怎么做背景衡阳网页定制
  • h5做网站用什么软件中英版网站系统
  • 汕头中英文网站推广wordpress取回密码收不到邮件
  • 外贸在线网站建站wordpress开放注册
  • 桂林餐饮兼职网站建设如何在百度上建网站
  • 怎样做免费网站的推广便宜点的网站空间
  • 中国建设部网站失信名单自己做公司网站难吗
  • 济南做网站需要多少钱园区网站到底怎么建设
  • 武清做网站的公司wordpress商城
  • 网站建设的实训技术总结sql 新建网站
  • 开发网站多少钱网站文件目录结构
  • 网站规划和建设的步骤做网站用的各种图标大全
  • 网站公司查询js代码网站大全
  • 湘潭网站建设价格最新新闻热点事件100字
  • 音乐网站程序源码wordpress模板中文版
  • 网站建设计划表wordpress主题 大
  • 在手机制作网站书店网站建设技术风险
  • 爱站网域名查询wordpress自定义标题关键词描述
  • 西安学校网站建设报价建盏
  • 网页 网站 区别东莞手机app开发
  • 空压机网站开发公司广州海珠区有什么好玩的景点
  • 什么网站可以做期货企业解决方案服务协议
  • 西安汽车网站制作手机软件制作网站平台
  • 微信的微网站介绍自己的家乡遵义网站建设
  • 爱站seo东莞网站建设要注意什么
  • 惠州网站建设 英语6wordpress 表格提交
  • 做网站15年多少钱一度电
  • 北京网站域名快速备案外贸网站优化价格
  • 做网站 工资高吗免费建站的站点网站