加勒比久久综合,国产精品伦一区二区,66精品视频在线观看,一区二区电影

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代做CSE340、代寫Parsing編程語言
代做CSE340、代寫Parsing編程語言

時間:2024-04-19  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



Project 2: Parsing
The goal of this project is to give you experience in writing a top-down recursive descent parser and to get
introduced to the basics of symbol tables for nested scopes.
We begin by introducing the grammar of our language. Then we will discuss the semantics of our
language that involves lexical scoping rules and name resolution. Finally, we will go over a few examples
and formalize the expected output.
NOTE: This project is significantly more involved than the first project. You should start on it immediately.
1. Lexical Specification
Here is the list of tokens that your lexical analyzer needs to support:
Comments and Space
In addition to these tokens, our input programs might have comments thatshould be ignored by the
lexical analyzer.Acommentstartswith // andcontinues until a newline characteris encountered. The
regular expressions for comments is: // (any)* \n in which any is defined to be any character except
\n . Also, like in the first project, your lexical analyzer should skip space between tokens.
PUBLIC = “public”
PRIVATE = “private”
EQUAL = “=”
COLON = “:”
COMMA = “,”
SEMICOLON = “;”
LBRACE = “{”
RBRACE = “}”
ID = letter (letter + digit)*
2. Grammar
Here is the grammar for our input language:
Here is an example input program with comments:
Note that our grammar does not recognize comments, so our parser would not know anything about
comments, but our lexical analyzer would deal with comments. This is similar to handling of spaces by
the lexer, the lexer skips the spaces. In a similar fashion, your lexer should skip
program ® global_vars scope
global_vars ® e
global_vars ® var_list SEMICOLON
var_list ® ID
var_list ® ID COMMA var_list
scope ® ID LBRACE public_vars private_vars stmt_list RBRACE
public_vars ® e
public_vars ® PUBLIC COLON var_list SEMICOLON
private_vars ® e
private_vars ® PRIVATE COLON var_list SEMICOLON
stmt_list ® stmt
stmt_list ® stmt stmt_list
stmt ® ID EQUAL ID SEMICOLON
stmt ® scope
a, b, c; // These are global variables
test {
public:
a, b, hello; // These are public variables of scope test
private:
x, y; // These are private variables of scope test
a = b; // the body of test starts with this line
hello = c;
y = r;
nested { // this is a nested scope
public:
b; // which does not have private variables
a = b;
x = hello;
c = y;
// we can also have lines that only contain comments like this
}
}
comments.
We highlight some of the syntactical elements of the language:
Global variables are optional
The scopes have optional public and private variables
Every scope has a body which is a list of statements
A statement can be either a simple assignment or another scope (a nested scope)
3. Scoping and Resolving References
Here are the scoping rules for our language:
The public variables of a scope are accessible to its nested scopes
The private variables of a scope are not accessible to its nested scopes
Lexical scoping rules are used to resolve name references
Global variables are accessible to all scopes
Every reference to a variable is resolved to a specific declaration by specifying the variable's
defining scope. We will use the following notation to specify declarations:
• If variable a is declared in the global variables list, we use ::a to refer to it
• If variable a is declared in scope b, we use b.a to refer to it
 And if reference to name a cannot be resolved, we denote that by ?.a
Here is the example program from the previous section, with all name references resolved (look at the
comments):

4. Examples
The simplest possible program would be:
Let's add a global variable:
a, b, c;
test {
public:
a, b, hello;
private:
x, y;
a = b; // test.a = test.b
hello = c; // test.hello = ::c
y = r; // test.y = ?.r
nested {
public:
b;
a = b; // test.a = nested.b
x = hello; // ?.x = test.hello
c = y; // ::c = ?.y
}
}
main {
a = a; // ?.a = ?.a
}
a;
main {
a = a; // ::a = ::a
}
Now, let's add a public variable a:
Or a private a:
Now, let's see a simple example with nested scopes:
If we add a private variable in main:
a;
main {
public:
a;
a = a; // main.a = main.a
}
a;
main {
private:
a;
a = a; // main.a = main.a
}
a, b;
main {
nested {
a = b; // ::a = ::b
}
}
a, b;
main {
private:
a;
nested {
a = b; // ::a = ::b
}
}
And a public b:
You can find more examples by looking at the test cases and their expected outputs.
5. Expected Output
There are two cases:
In case the input does not follow the grammar, the expected output is:
NOTE: no extra information is needed here! Also, notice that we need the exact
message and it's case-sensitive.
In case the input follows the grammar:
For every assignment statement in the input program in order of their appearance in the
program, output the following information:
• The resolved left-hand-side of the assignment
• The resolved right-hand-side of the assignment
in the following format:
NOTE: You can assume that scopes have unique names and variable names in a single
scope (public and private) are not repeated.
a, b;
main {
public:
b;
private:
a;
nested {
a = b; // ::a = main.b
}
}
Syntax Error
resolved_lhs = resolved_rhs
For example, given the following input program:
The expected output is:
6. Implementation
Start by modifying the lexical analyzer from previous project to make it recognize the tokens
required for parsing this grammar. It should also be able to handle comments (skip them like
spaces).
NOTE: make sure you remove the tokens that are not used in this grammar from your
lexer, otherwise you might not be able to pass all test cases. Your TokenType type declaration
should look like this:
a, b, c;
test {
public:
a, b, hello;
private:
x, y;
a = b;
hello = c;
y = r;
nested {
public:
b;
a = b;
x = hello;
c = y;
}
}
test.a = test.b
test.hello = ::c
test.y = ?.r
test.a = nested.b
?.x = test.hello
::c = ?.y
typedef enum { END_OF_FILE = 0,
PUBLIC, PRIVATE,
EQUAL, COLON, COMMA, SEMICOLON,
LBRACE, RBRACE, ID, ERROR
} TokenType
Next, write a parser for the given grammar. You would need one function per each non-terminal
of the grammar to handle parsing of that non-terminal. I suggest you use the following signature
for these functions:
Where X would be replaced by the target non-terminal. The lexical analyzer object needs to be
accessible to these functions so that they can use the lexer to get and unget tokens. These functions
can be member functions of a class, and the lexer object can be a member variable of that class.
You also need a syntax_error function that prints the proper message and terminates
the program:
Test your parser thoroughly. Make sure it can detect any syntactical errors.
Next, write a symbol table that stores information about scopes and variables. You would also
need to store assignments in a list to be accessed after parsing is finished. You need to think
about how to organize all this information in a way that is useful for producing the required
output.
Write a function that resolves the left-hand- side and right-hand-side of all assignments and
produces the required output. Call this function in your main() function after successfully
parsing the input.
NOTE: you might need more time to finish the last step compared to previous steps.
7. Requirements
Here are the requirements of this project:
You should submit all your project files (source code [.cc] and headers[.h]) on
Gradescope. Do not zip them.
You should use C/C++, no other programming languages are allowed.
• Besides the provided test cases, you need to design test cases on your own to rigorously test your
implementation.
You should test your code on Ubuntu Linux 19.04 or greater with gcc 7.5.0 or higher.
void parse_X()
void syntax_error()
{
cout << “Syntax Error\n”;
exit(1);
}
You cannot use library methods for parsing or regular expression (regex) matching in
projects. You will be implementing them yourself. If you have doubts about using a library
method, please check it with the instructor or TA beforehand.
You can write helper methods or have extra files, but they should have been written by you.
8. Evaluation
The submissions are evaluated based on the automated test cases on the Gradescope. Gradescope test cases
are hidden to students. Your grade will be proportional to the number of test cases passing. You have to
thoroughly test your program to ensure it pass all the possible test cases. It is not guaranteed that your code
will pass the Gradescope test cases if it passes the published test cases. As a result, in addition to the
provided test cases, you must design your own test cases to rigorously evaluate your implementation. If
your code does not compile on the submission website, you will not receive any points. On Gradescope,
when you get the results back, ignore the “Test err” case, it is not counted toward the grade.
The parsing test cases contain cases that are syntactically correct and cases that have syntax errors. If a
syntax test case has no syntax error, your program passes the test case if the output is not Syntax Error .
If a syntax test case has syntax error, your program passes the test case if the output is Syntax Error .
Note that if your program prints the syntax error message independently of the input, for example:
It will pass some of the test cases, but you will not receive any points.
You can access the Gradescope through the left side bar in canvas. You have already been enrolled in the
grade scope class, and using the left side bar in canvas you will automatically get into the Gradescope course.
int main()
{
cout << “Syntax Error\n”;
return 0;
}

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

















 

掃一掃在手機打開當前頁
  • 上一篇:菲律賓入境電子簽證流程有哪些 電子簽辦理指南
  • 下一篇:代做COMP532、代寫a video game from OpenAI Gym
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    2025年10月份更新拼多多改銷助手小象助手多多出評軟件
    2025年10月份更新拼多多改銷助手小象助手多
    有限元分析 CAE仿真分析服務-企業/產品研發/客戶要求/設計優化
    有限元分析 CAE仿真分析服務-企業/產品研發
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
  • 短信驗證碼 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    超级白嫩亚洲国产第一| 色婷婷久久久| 国产福利91精品一区二区| 99人久久精品视频最新地址| 日韩精品免费一区二区夜夜嗨| 影音成人av| 视频一区在线播放| 91精品国产91久久综合| 偷拍自拍一区| 亚洲国产午夜| 国产在线|日韩| 狂野欧美一区| 九一精品国产| 青青草91久久久久久久久| 国内精品视频| 青青草国产成人99久久| 在线观看精品| 9999国产精品| 香蕉国产精品偷在线观看不卡| 欧美日韩一本| 视频二区欧美| 久久av电影| 91精品国产一区二区在线观看| 青青久久精品| 亚洲综合电影| 美国毛片一区二区| 亚洲欧美清纯在线制服| 欧美日韩高清| 香蕉人人精品| 里番精品3d一二三区| 少妇精品在线| 日韩免费高清视频网站| 偷拍一区二区| 偷拍亚洲精品| 精品中文字幕一区二区三区四区| 国产精品va| 欧美日韩亚洲国产精品| 日韩综合一区二区| 久久资源在线| 日韩高清不卡一区二区| 国产乱码精品| 国产日韩欧美三级| 美女爽到高潮91| 久久精品三级| 日本视频在线一区| 影音先锋在线一区| 欧美日韩一视频区二区| 久久久久97| 国产美女精品视频免费播放软件 | 日日骚欧美日韩| 欧美成人一二区| 久久精品国产亚洲一区二区三区| 国产资源一区| 日本vs亚洲vs韩国一区三区 | 在线国产一区| 黄色国产精品| 久久香蕉精品| 欧美残忍xxxx极端| 亚洲综合电影| 福利精品在线| 日韩高清不卡一区二区三区| 国产精品videosex极品| www.久久久久爱免| 亚洲欧洲美洲国产香蕉| 1204国产成人精品视频| 精品国产中文字幕第一页 | 日本成人中文字幕| 欧美韩国一区| 日韩va亚洲va欧美va久久| 中文字幕一区日韩精品| 久久人人精品| 国产亚洲一区在线| 国产v日韩v欧美v| 欧美成人黄色| 国产精品日韩精品在线播放| 日韩精品一区二区三区中文在线| 欧美亚洲tv| 女人香蕉久久**毛片精品| 视频一区在线视频| 香蕉成人在线| 亚洲欧美久久精品| 欧美色图麻豆| 黄色精品免费| 手机看片久久| 中文字幕免费一区二区| 视频精品一区| 午夜影院欧美| 亚洲国产福利| 影音先锋中文字幕一区| 永久免费精品视频| 五月婷婷六月综合| 欧美一级鲁丝片| 欧美日本一区| 国产精品久av福利在线观看| 亚洲精品午夜av福利久久蜜桃| 91精品综合久久久久久久久久久 | 亚洲色图网站| 9999久久久久| aa国产精品| 韩国精品视频在线观看| 少妇精品久久久一区二区| 清纯唯美亚洲经典中文字幕 | 青青视频一区二区| 蜜桃精品视频在线观看| 亚洲精品aaa| 日韩av在线发布| 黑人一区二区| 韩国精品视频在线观看| 日韩成人一级大片| 99国产精品久久久久久久| 欧亚一区二区| 美女精品一区最新中文字幕一区二区三区 | 久久理论电影| 最近高清中文在线字幕在线观看1| 影音先锋亚洲电影| 精品国精品国产自在久国产应用| 久久99伊人| 国产精品多人| 久久在线免费| av亚洲一区二区三区| 亚洲尤物av| 亚洲美女视频在线免费观看| 久久精品999| 精品国产中文字幕第一页| 国产白浆在线免费观看| 国产一区二区在线| 伊人久久大香线蕉av超碰演员| 国产毛片精品久久| 红杏视频成人| 久久天堂av| 极品束缚调教一区二区网站| 97久久夜色精品国产| 国产欧美一区二区三区精品观看| 希岛爱理一区二区三区| 国产精品一二| 天天久久夜夜| 久久精品国产精品青草| 99精品视频在线观看播放| 日本欧美一区| 成人午夜av| 国产精品传媒麻豆hd| 免费日韩一区二区三区| 日韩制服一区| 91精品国产自产在线观看永久∴| 日韩中文欧美| 红杏视频成人| www.久久.com| 久久精品播放| 日本怡春院一区二区| 仙踪林久久久久久久999| 麻豆精品在线视频| 欧美日韩国产探花| 97久久精品一区二区三区的观看方式| 欧美网站在线| 国产精品欧美一区二区三区不卡| 亚洲欧美高清| 九色精品蝌蚪| 日韩中字在线| 99欧美视频| 欧美精品不卡| 日韩成人激情| 欧美男人操女人视频| 久久永久免费| 狂野欧美性猛交xxxx巴西| 日本伊人久久| 国产精品久久久久久久久久齐齐| 激情自拍一区| 国产日产精品一区二区三区四区的观看方式 | 一本一道久久a久久| 69堂免费精品视频在线播放| 久久精品免费一区二区三区 | 国产精品普通话对白| 亚洲另类av| av在线不卡精品| 亚洲国产成人精品女人| 少妇精品久久久一区二区| 婷婷六月国产精品久久不卡| 亚洲成人二区| 国产成人手机高清在线观看网站| 久久青草伊人| 蜜桃国内精品久久久久软件9| 国产视频一区二| 亚洲四虎影院| 99这里有精品| 中文字幕一区日韩精品| 另类小说视频一区二区| 国产精品麻豆久久| 欧美日韩一区二区三区视频播放| 97久久精品一区二区三区的观看方式 | 国产一区二区你懂的| 亚洲综合色婷婷在线观看| 日韩国产精品久久久| 国产盗摄——sm在线视频| 1024日韩| 美女精品久久| 伊人亚洲精品| 国产激情久久| 久久久久久网| 午夜国产精品视频| 国产suv精品一区|