Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 01eedb3

Browse files
committed
(example) Implements Javascript Lexer/Parser
1 parent f0721ff commit 01eedb3

File tree

7 files changed

+2363
-1
lines changed

7 files changed

+2363
-1
lines changed

‎CC/CC.sln‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ VisualStudioVersion = 16.0.29709.97
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CC", "CC\CC.csproj", "{E8B25803-F6A5-4A4C-B8AA-5B68BCBDDFF0}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonParser", "JsonParser\JsonParser.csproj", "{F60C4F34-25B5-4749-A1CB-5AD9DB805694}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JsonParser", "JsonParser\JsonParser.csproj", "{F60C4F34-25B5-4749-A1CB-5AD9DB805694}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JavascriptParser", "JavascriptParser\JavascriptParser.csproj", "{D3689616-C2D3-48FE-AD41-40D044D7CF39}"
911
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,6 +23,10 @@ Global
2123
{F60C4F34-25B5-4749-A1CB-5AD9DB805694}.Debug|Any CPU.Build.0 = Debug|Any CPU
2224
{F60C4F34-25B5-4749-A1CB-5AD9DB805694}.Release|Any CPU.ActiveCfg = Release|Any CPU
2325
{F60C4F34-25B5-4749-A1CB-5AD9DB805694}.Release|Any CPU.Build.0 = Release|Any CPU
26+
{D3689616-C2D3-48FE-AD41-40D044D7CF39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{D3689616-C2D3-48FE-AD41-40D044D7CF39}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{D3689616-C2D3-48FE-AD41-40D044D7CF39}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{D3689616-C2D3-48FE-AD41-40D044D7CF39}.Release|Any CPU.Build.0 = Release|Any CPU
2430
EndGlobalSection
2531
GlobalSection(SolutionProperties) = preSolution
2632
HideSolutionNode = FALSE

‎CC/JavascriptParser/JSParser.cs‎

Lines changed: 1589 additions & 0 deletions
Large diffs are not rendered by default.

‎CC/JavascriptParser/JSParserGenerator.cs‎

Lines changed: 606 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
/*
2+
3+
Copyright (C) 2020. rollrat All Rights Reserved.
4+
5+
Author: Jeong HyunJun
6+
7+
*/
8+
9+
using CC;
10+
using System;
11+
using System.Collections.Generic;
12+
using System.Text;
13+
14+
namespace JavascriptParser
15+
{
16+
public class JSScannerGenerator
17+
{
18+
static Scanner scanner;
19+
public static Scanner Scanner { get { if (scanner == null) create_scanner(); return scanner; } }
20+
21+
/// <summary>
22+
/// Create JavaScript Scanner
23+
/// </summary>
24+
private static void create_scanner()
25+
{
26+
var gen = new ScannerGenerator();
27+
28+
gen.PushRule("", @"[\r\n ]");
29+
//gen.PushRule("", @"");
30+
gen.PushRule("Class", "class");
31+
gen.PushRule("Break", "break");
32+
gen.PushRule("Do", "do");
33+
gen.PushRule("Instanceof", "instanceof");
34+
gen.PushRule("Typeof", "typeof");
35+
gen.PushRule("Case", "case");
36+
gen.PushRule("Else", "else");
37+
gen.PushRule("New", "new");
38+
gen.PushRule("Var", "var");
39+
gen.PushRule("Catch", "catch");
40+
gen.PushRule("Finally", "finally");
41+
gen.PushRule("Return", "return");
42+
gen.PushRule("Void", "void");
43+
gen.PushRule("Continue", "continue");
44+
gen.PushRule("For", "for");
45+
gen.PushRule("Switch", "switch");
46+
gen.PushRule("While", "while");
47+
gen.PushRule("Debugger", "debugger");
48+
gen.PushRule("Function", "function");
49+
gen.PushRule("This", "this");
50+
gen.PushRule("With", "with");
51+
gen.PushRule("Default", "default");
52+
gen.PushRule("If", "if");
53+
gen.PushRule("Throw", "throw");
54+
gen.PushRule("Delete", "delete");
55+
gen.PushRule("In", "in");
56+
gen.PushRule("Try", "try");
57+
gen.PushRule("Enum", "enum");
58+
gen.PushRule("Extends", "extends");
59+
gen.PushRule("Super", "super");
60+
gen.PushRule("Const", "const");
61+
gen.PushRule("Export", "export");
62+
gen.PushRule("Import", "import");
63+
gen.PushRule("Implements", "implements");
64+
gen.PushRule("Let", "let");
65+
gen.PushRule("Private", "private");
66+
gen.PushRule("Public", "public");
67+
gen.PushRule("Interface", "interface");
68+
gen.PushRule("Package", "package");
69+
gen.PushRule("Protected", "protected");
70+
gen.PushRule("Static", "static");
71+
gen.PushRule("Yield", "yield");
72+
//gen.PushRule("SemiColon", @"SemiColon");
73+
74+
gen.PushRule("{", @"\{");
75+
gen.PushRule("}", @"\}");
76+
gen.PushRule(",", @",円");
77+
gen.PushRule("(", @"\(");
78+
gen.PushRule(")", @"\)");
79+
gen.PushRule(";", @"\;");
80+
gen.PushRule("*", @"\*");
81+
gen.PushRule("[", @"\[");
82+
gen.PushRule("]", @"\]");
83+
gen.PushRule(".", @"\.");
84+
gen.PushRule("++", @"\+\+");
85+
gen.PushRule("--", @"\-\-");
86+
gen.PushRule("+", @"\+");
87+
gen.PushRule("-", @"\-");
88+
gen.PushRule("~", @"\~");
89+
gen.PushRule("!", @"\!");
90+
gen.PushRule("/", @"\/");
91+
gen.PushRule("%", @"\%");
92+
gen.PushRule("<<", @"\<\<");
93+
gen.PushRule(">>", @"\>\>");
94+
gen.PushRule(">>>", @"\>\>\>");
95+
gen.PushRule("<", @"\<");
96+
gen.PushRule(">", @"\>");
97+
gen.PushRule("<=", @"\<\=");
98+
gen.PushRule(">=", @"\>\=");
99+
gen.PushRule("==", @"\=\=");
100+
gen.PushRule("===", @"\=\=\=");
101+
gen.PushRule("!==", @"\!\=\=");
102+
gen.PushRule("&", @"\&");
103+
gen.PushRule("^", @"\^");
104+
gen.PushRule("|", @"\|");
105+
gen.PushRule("&&", @"\&\&");
106+
gen.PushRule("||", @"\|\|");
107+
gen.PushRule("?", @"\?");
108+
gen.PushRule("=>", @"\=\>");
109+
gen.PushRule("*=", @"\*\=");
110+
gen.PushRule("/=", @"\/\=");
111+
gen.PushRule("%=", @"\%\=");
112+
gen.PushRule("+=", @"\+\=");
113+
gen.PushRule("-=", @"\-\=");
114+
gen.PushRule("<<=", @"\<\<\=");
115+
gen.PushRule(">>=", @"\>\>\=");
116+
gen.PushRule("&=", @"\&\=");
117+
gen.PushRule("^=", @"\^\=");
118+
gen.PushRule("|=", @"\|\=");
119+
120+
gen.PushRule("StringLiteral", @"""([^""\\]|\\.)*""");
121+
gen.PushRule("DecimalLiteral", @"[0-9]+(\.[0-9]+)?([Ee][\+\-]?[0-9]+)?");
122+
gen.PushRule("BinaryIntegerLiteral", @"[0-9]+b");
123+
gen.PushRule("HexIntegerLiteral", @"0x[0-9]+");
124+
gen.PushRule("OctalIntegerLiteral", @"0[oO][0-9]+");
125+
gen.PushRule("BooleanLiteral", @"true|false");
126+
gen.PushRule("Identifier", @"[_$a-zA-Z][_$a-zA-Z0-9]*");
127+
128+
gen.Generate();
129+
130+
Console.WriteLine(gen.PrintDiagram());
131+
132+
scanner = gen.CreateScannerInstance();
133+
}
134+
}
135+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp3.1</TargetFramework>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<ProjectReference Include="..\CC\CC.csproj" />
10+
</ItemGroup>
11+
12+
</Project>

‎CC/JavascriptParser/Program.cs‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
3+
namespace JavascriptParser
4+
{
5+
class Program
6+
{
7+
static void Main(string[] args)
8+
{
9+
JSParserGenerator.Parser.Accept();
10+
}
11+
}
12+
}

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ C++ Version: https://github.com/rollrat/jsonhead
2323

2424
C# Version: https://github.com/rollrat/compiler-compiler/tree/master/CC/JsonParser
2525

26+
Javascript Lexer/Parser Generator: https://github.com/rollrat/compiler-compiler/tree/master/CC/JavascriptParser
27+
2628
## InhaCC - Compiler Compiler Collection
2729

2830
![image](1.png)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /