導航:首頁 > 源碼編譯 > 編譯判斷

編譯判斷

發布時間:2022-08-09 16:47:19

編譯原理如何判斷id+id*id沒有語法錯誤

構造LL(1)語法分析程序,任意輸入一個文法符號串,並判斷它是否為文法的一個句子.程序要求為該文法構造預測分析表,並按照預測分析演算法對輸入串進行語法分析,判別程序是否符合已知的語法規則,如果不符合(編譯出錯),則輸出錯誤信息.
以你說的SQL語句為例,詞法分析是將語句中的單詞流識別出來,比如create table Student 詞法分析是分析出 這句的單詞流是 「create」 「table」 「identifier」(前提是你給它們編號 比如用宏或者枚舉),然後語法分析 是通過單詞流 判斷 非邏輯錯誤 比如 有不能識別的符號 create table後面不是標示符等等 語義分析是分析語句的邏輯關系 比如欄位長度越界什麼的如 vchar(2) 你賦值為「啊啊啊啊啊啊」這種錯誤的識別是語義分析階段完成的 希望能幫到你

❷ 編譯原理判斷題

1. B 正確
2. A 錯誤,不一定存在
3. B 正確
4. B 正確
5. A 錯誤,是後綴式
6. A 錯誤,只是算符文法,不一定是算符優先文法
7. B 正確
8. B 正確
9. A 錯誤,語義動作是附加在產生式上的,不是附加在非終結符上
10. A 錯誤,有些文法不能改寫為LL(1)文法
11. B 正確
12. B 正確
13. B 正確
14. B 正確
15. A 錯誤,SLR(1),LR(1)等都是沖突解決的辦法
16. B 正確
17. B 正確
18. A 錯誤,不是編譯程序工作效率高,而是生成的目標程序運行效率高
19. B 正確

❸ vc判斷是32位編譯還是64位編譯判斷是debug編譯還是release編譯

1.判斷是debug編譯還是release編譯。
如果_DEBUG定義了表示是debug編譯,否則是release編譯。

2.判斷是32位編譯還是64位編譯。
在 Win32 配置下,_WIN32 有定義,_WIN64 沒有定義。在 x64 配置下,兩者都有定義。即在 VC 下,_WIN32 一定有定義。
因此,WIN32/_WIN32 可以用來判斷是否 Windows 系統(對於跨平台程序),而 _WIN64 用來判斷編譯環境是 x86 還是 x64。附一個表:

常量\定義 預定義選項 Windows.h VC編譯器
WIN32 Win32 √(minwindef.h) ×
_WIN32 × × √
_WIN64 × × x64

最後附上根據相應編譯情況,進行有條件的鏈接相應靜態庫的示例代碼,其實就是一些宏定義語句的使用:

[cpp] view plain在CODE上查看代碼片派生到我的代碼片
#include "json/json.h"
#ifdef _DEBUG
#ifndef _WIN64
#pragma comment(lib,"json/json_mtd.lib")
#else
#pragma comment(lib,"json/json_mtd_x64.lib")
#endif
#else
#ifndef _WIN64
#pragma comment(lib,"json/json_mt.lib")
#else
#pragma comment(lib,"json/json_mt_x64.lib")
#endif
#endif
using namespace Json;

❹ 如何判斷一個程序是C編譯的還是C++編譯的

一般情況來說,C語言代碼是可以用C++編譯器編譯的,但是C編譯器,就一般不能編譯C++代碼。
自己區分的話:
1、包含頭文件格式:
#include
和有using namespace的,都應該屬於C++的內容。
而#include也應該是C++,因為它屬於C++的庫,由於C++代碼可以應用C語言的函數庫,所以比較難區分。
比如#include的,不一定就是C語言代碼

❺ 如何判斷一段程序是由C 編譯程序還是由C++編譯程序編譯的

以下是在論壇中看到的兩種解釋: (1)如果是要你的代碼在編譯時發現編譯器類型,就判斷_cplusplus或_STDC_宏,通常許多編譯器還有其他編譯標志宏, #ifdef __cplusplus cout<<"c++";#else cout<<"c";#endif如果要判斷已經編譯的代碼的編譯類型,就用nm查一下輸出函數符號是否和函數名相同。(相同為c,不同為c++。詳解見下面)(2)簡單是說,由於c語言是沒有重載函數的概念的,所以c編譯器編譯的程序里,所有函數只有函數名對應的入口。而由於c++語言有重載函數 的概念,如果只有函數名對應的入口,則會出現混淆,所以c++編譯器編譯的程序,應該是函數名+參數類型列表對應到入口。 注意,因為mian函數是整個程序的入口,所以mian是不能有重載的,所以,如果一個程序只有main函數,是無法確認是c還是c++編譯器編譯的可以通過nm來查看函數名入口如一個函數int foo(int i, float j) c編譯的程序通過nm查看 foo 0x567xxxxxx (地址) c++編譯程序,通過nm查看 foo(int, float) 0x567xxxxxx 另外,如果要在c++編譯器里使用通過c編譯的目標文件,必須通知c++編譯器,我使用的函數是c風格的,不需要列出參數列表的,這樣c++編譯才能正確的連接

❻ 用C語言編譯:輸入一個數,編譯判斷它是否為對稱數(用for循環語句來做)

#include <stdio.h>

int main(void)
{
int i = 0, j;
int num, num1;
int buf[128];
int flag = 1;

printf("input a integer:");
scanf("%d", &num);
num1 = num;

while (num)
{
buf[i++] = num % 10;
num /= 10;
}

for (j = 0; j < i / 2; j++)
{
if (buf[j] != buf[i - 1 -j])
{
flag = 0;
break;
}
}

if (flag) printf("%d 是對稱數\n", num1);
else printf("%d 不是對稱數\n", num1);

return 0;
}

❼ 關於如何判斷gcc之類的編譯器的編譯結果

我們再使用gcc編譯的時候可以讓他的輸出信息保存到文件當中

gccmain.c-omain&>status.txt

上面的命令就是將gcc編譯的信息保存到status.txt文件中,然後我們再程序中讀取文件,看文件是否有內容,沒有內容就說明沒有報錯和警告,編譯成功。有內容就對每一行內容進行判斷,看是warring還是error,只有warring也代表編譯成功,有error代表編譯失敗,然後把這些報錯信息都列印出來就好了。

下面看一下例子:

❽ 編譯原理實現判斷是不是一個文法的句子

構造LL(1)語法分析程序,任意輸入一個文法符號串,並判斷它是否為文法的一個句子。程序要求為該文法構造預測分析表,並按照預測分析演算法對輸入串進行語法分析,判別程序是否符合已知的語法規則,如果不符合(編譯出錯),則輸出錯誤信息。

❾ 如何判斷一段程序是由c 編譯程序還是由c++編譯 程序編譯的

ANSIC標准中有一個__cplusplus標識符,當你編譯C++程序時,這個標識符就會被定義;當你編譯C程序時,這個標識符不會被定義。這樣,你就可以檢查程序是不是用C++編譯程序編譯的,請看下例: #ifdef __cplusplus /* Is __cplusplus deftned? */ #define USING_C FALSE /* Yes,we are not usingC*/ #elSe #define USING_C TRUE /* NO,we are usingC*/ #endif 當對上例進行編譯預處理時,預處理程序首先檢查標識符__cplusplus是否已被定義——如果C被定義,它就將USING_C賦值為FALSE;反之,它就將USING_C賦值為TRUE。此後,你就可以在程序中檢查USING_C的值,並由此判斷程序是不是用C++編譯程序編譯的。

❿ 編譯程序判斷一個數是否為素數

下面輸入一個整數判斷其是否為素數的程序,希望樓主理解其演算法,
#include <iostream.h>
#include <math.h>

bool is_prime(int n)
{ int i,j;
for (i=2, j=int(sqrt(n)); i<=j; i++)
if (n%i == 0) return false;
return true;
}

void main()
{ int n;
cout << "請輸入一個正整數:";
cin >> n; //從鍵盤輸入一個正整數
if (n < 2)
{cout<<"您輸入的數小於2。"; return ; }
if(n==2) cout<<2<<"是素數"<<endl; //輸出最小素數
else if(is_prime(n))
cout<<n<<"是素數"<<endl;
}

閱讀全文

與編譯判斷相關的資料

熱點內容
如何理解php面向對象 瀏覽:96
macword轉pdf 瀏覽:848
python列表求交集 瀏覽:872
解壓包如何轉音頻 瀏覽:447
機明自動編程軟體源碼 瀏覽:325
php埠號設置 瀏覽:541
phperegreplace 瀏覽:320
androidgridview翻頁 瀏覽:537
ssh協議編程 瀏覽:634
如何開我的世界電腦伺服器地址 瀏覽:861
玄關pdf 瀏覽:609
程序員學習論壇 瀏覽:940
程序員的毒雞湯怎麼做 瀏覽:548
安卓怎麼降級軟體到手機 瀏覽:281
雲與伺服器入門書籍推薦產品 瀏覽:636
delphi編程助手 瀏覽:762
電腦遇到伺服器問題怎麼辦 瀏覽:515
加工中心編程結束方法 瀏覽:296
了解什麼是web伺服器 瀏覽:140
面向對象的編程的基本特徵 瀏覽:718