µ±Ç°Î»ÖãºÊ×Ò³ > ´Ê·¨·ÖÎöÆ÷Éè¼ÆÊµÑ鱨¸æ
Áù¡¢ÊµÑé´úÂ루C#£©
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;
using System.Threading.Tasks; using System.Windows.Forms;
namespace LL_1_·ÖÎö·¨ {
public partial class Form1 : Form {
public Production []production; public char[] terminator;//ÖÕ½á·û public char[] nonterminal;//·ÇÖÕ½á·û public int flag = 0;
public String Terminator = \ String STACK = \·ûºÅÕ» String stack = \ÊäÈë´® public struct Production { public Char noter;
public String production; }//²úÉúʽ½á¹¹Ìå public struct FIRST { public Char noter; public String first; }//FIRST¼¯½á¹¹Ìå
public struct FOLLOW { public Char noter; public String follow; }//FOLLOW¼¯½á¹¹Ìå public struct PLACE{ public bool flag; public int x; public int y; }
public Form1() {
InitializeComponent(); }
private Char[] getNonterminal(Char[] s) {
String nonterminal = \
for (int i = 0; i < s.Length; i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
if (!nonterminal.Contains(s[i]))
nonterminal = nonterminal + s[i]; } }
return nonterminal.ToCharArray(); }
private Char[] getTerminator(Char[] s) {
String terminator = \
for (int i = 0; i < s.Length; i++) {
if ((s[i] >= 'a' && s[i] <= 'z') || s[i] == '(' || s[i] == ')' || s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/'||s[i]=='@') {
if (!terminator.Contains(s[i]))
terminator = terminator + s[i]; } }
Terminator = terminator.Replace(\ return terminator.ToCharArray(); }
private Production[] getProductions(Char[] s) {
int index = 0;
Production[] productions=new Production[20]; for (int i = 0; i < s.Length - 1; i++) {
int flag = 0;
if (nonterminal.Contains(s[i]) && s[i + 1] == '$')//- {
productions[index].noter = s[i]; i = i + 3;
while (s[i] != ' '&&s[i]!='\\n') {
if (flag == 0) {
productions[index].production =productions[index].production +s[i];
i++; } else {
productions[index].noter = productions[index - 1].noter;
productions[index].production = productions[index].production + s[i];
i++; }
if (s[i] == '|') {
flag = 1; index++; i++; }
¹²·ÖÏí92ƪÏà¹ØÎĵµ