Hey All,

I'm an avid c++ programmer, fairly new to C#. I understand most the basics and I can get simple tasks complete in C#.

I'm looking for any links to tutorials on writting a scripting language in C# if anyone has/knows any.

In relation to this question, I seem to be having a couple of problems finding a good tutorial in reading text from a file.
I know how to read an entire file and display it, but I'm having problems looking for certain words, reading one word at a time etc.

If I can figure that part out, im sure creating the script language will be that much easier.


Alright so Im looking at every example of parsing text files that I can find, and really none of them are of any help. They are all showing what I already know, and none of them explain the things I don't know, they only show them.

So, I'll give it a shot asking here. I'm basically just looking for a simple way to parse an entire text file, and when it comes across a line that begins with a ';' (without the single quotes), that the following text in that line is a comment.

I have the following:

StreamReader sr = new StreamReader(@"File.txt", true); 
String str = sr.ReadToEnd(); 
Regex reg = new Regex(";");

So as you can see, this obviously does nothing. I only saw some examples of the Regex class but nothing that showed me how to use it, so I'm probably using it wrong in the above example. There must be a simpler way to just look at each line and see if it begins with a ';' .


StreamReader sr = new StreamReader(@"File.txt", true); 
String str = sr.ReadToEnd(); 
Regex reg = new Regex(";");

Could also do something like this:

StreamReader sr = new StreamReader(@"File.txt", true);
char[] dlim = { ' ', '=', '\t' };
string line = sr.ReadLine();

string[] lines = line.Split(dlim);
            if (lines[0].ToUpper().Contains(" matched case here ") )
                // do something with line 0

what that does is reads the file line by line, and breaking it apart in to a string array for each line. The dlim tells it how to break the string apart. In the above example it will ignore all white spaces, tabs in '=' signs.


File.txt contains 3 lines

; Welcome to my Program
;it does super cool stuff

it will give you 3 line arrays:

first: [0] = ";" [1] = "Welcome" [2] = "to" [3] = "my" [4] = "Program"
second [1] = ";it" [1] = "does" etc etc
third [1] = "a" [2] = "b"

the contains function checks the entire string to see if there is a match for that pattern anywhere within the string. So you could say

if (line[0].Contains(";"))

and it would return true on the first and second lines.

There is a much easier way. I write programming languages in C# and have much more complex ways of making a tokenizer, but this is the simplist that I can think of and looks like it answers your question.

StreamReader sr = new StreamReader(@"File.txt", true);
string code = sr.ReadToEnd();
code = code.Replace(((char)13).Tostring(), "");
//don't worry what the replace does, just remember that you have to do it
//everytime otherwise the code will stuff up.

foreach (string a in code.Split('\n'))
    if (a.StartsWith("print "))
    else if (a == "read")

that is a very basic programming language but it is a good place to start. Here is what is happening:

  1. string code is equal to all the code in the 'File.txt' file
  2. the foreach statement says that a is now equal to code being split by every new line.
  3. the rest is just executing commands

if you need any more help, contact me on my Youtube accout 'Hamilation'