{a^n b^n c^m d^m|n>=1,m>=1}U{a^n b^m c^m d^n|n>=1,m>=1}构造上下文无关文法
时间: 2023-04-07 21:03:31 浏览: 91
好的,我可以回答这个问题。以下是该语言的上下文无关文法:
S -> AB | CD
A -> aAb | ab
B -> cBd | cd
C -> aCd | ac
D -> bDd | bd
其中,S是起始符号,A和B生成第一个集合,C和D生成第二个集合。
相关问题
hivesql中 正则表达式'^\\n|\\n$' 是什么含义
引用\[2\]:regexp_replace(string A, string B, string C) 返回值: string 说明:将字符串A中的符合Java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似Oracle中的regexp_replace函数。
引用\[3\]:做为转意,即通常在"/"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后//b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"/"后,/a/*/将只匹配"a*"。 ^匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"$匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"*匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa+匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa?匹配前面元字符0次或1次,/ba*/将匹配b,ba(x)匹配x保存x在名为$1...$9的变量中x|y匹配x或y{n}精确匹配n次{n,}匹配n次以上{n,m}匹配n-m次\[xyz\]字符集(character set),匹配这个集合中的任一一个字符(或元字符)\[^xyz\]不匹配这个集合中的任何一个字符\[/b\]匹配一个退格符/b匹配一个单词的边界/B匹配一个单词的非边界/cX这儿,X是一个控制符,//cM/匹配Ctrl-M/d匹配一个字数字符,//d/ = /\[0-9\]//D匹配一个非字数字符,//D/ = /\[^0-9\]//n匹配一个换行符/r匹配一个回车符/s匹配一个空白字符,包括/n,/r,/f,/t,/v等/S匹配一个非空白字符,等于/\[^/n/f/r/t/v\]//t匹配一个制表符/v匹配一个重直制表符/w匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如\[/w\]匹配"$5.98"中的5,等于\[a-zA-Z0-9\]/W匹配一个不可以组成单词的字符,如\[/W\]匹配"$5.98"中的$,等于\[^a-zA-Z0-9\]。
根据以上引用内容,hivesql中的正则表达式'^\\n|\\n$'的含义是匹配以换行符开头或以换行符结尾的字符串。其中,'^\\n'表示匹配以换行符开头的字符串,'\\n$'表示匹配以换行符结尾的字符串。
#### 引用[.reference_title]
- *1* [hive 常用正则表达式](https://blog.csdn.net/zhao_guo_feng/article/details/125677840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [hive sql 正则表达式](https://blog.csdn.net/u011919863/article/details/119900339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [hive SQL 中的正则表达式](https://blog.csdn.net/wplblog/article/details/113744635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
bạn tạo mã ví dụ đi
Dưới đây là một ví dụ đơn giản về cách điều khiển motor bước mượt mà nhất trên vi điều khiển STM32F407 sử dụng thư viện HAL của STMicroelectronics:
```c
#include "stm32f4xx_hal.h"
#define STEPPER_PIN1 GPIO_PIN_0
#define STEPPER_PIN2 GPIO_PIN_1
#define STEPPER_PIN3 GPIO_PIN_2
#define STEPPER_PIN4 GPIO_PIN_3
#define STEPPER_PORT GPIOA
void setStep(uint8_t step)
{
switch(step)
{
case 0:
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN3, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN4, GPIO_PIN_RESET);
break;
case 1:
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN1, GPIO_PIN_SET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN3, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN4, GPIO_PIN_RESET);
break;
case 2:
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN2, GPIO_PIN_SET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN3, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN4, GPIO_PIN_RESET);
break;
case 3:
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN3, GPIO_PIN_SET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN4, GPIO_PIN_RESET);
break;
case 4:
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN3, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STEPPER_PORT, STEPPER_PIN4, GPIO_PIN_SET);
break;
}
}
void delay_ms(uint32_t ms)
{
HAL_Delay(ms);
}
int main(void)
{
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef gpio_init;
gpio_init.Pin = STEPPER_PIN1 | STEPPER_PIN2 | STEPPER_PIN3 | STEPPER_PIN4;
gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
gpio_init.Pull = GPIO_NOPULL;
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(STEPPER_PORT, &gpio_init);
uint8_t step = 0;
while(1)
{
setStep(step);
delay_ms(5);
step++;
if(step > 4)
{
step = 0;
}
}
}
```
Trong ví dụ này, chúng ta sử dụng các chân GPIO trên vi điều khiển STM32F407 để điều khiển motor bước. Chúng ta cấu hình các chân GPIO là đầu ra và sử dụng hàm `HAL_GPIO_WritePin()` để điều khiển giá trị logic trên chân GPIO. Chúng ta cũng sử dụng hàm `HAL_Delay()` để đợi một khoảng thời gian nhất định giữa các bước.
Trong vòng lặp chính, chúng ta gọi hàm `setStep()` để thiết lập giá trị logic trên các chân GPIO để điều khiển motor bước. Sau đó, chúng ta đợi một khoảng thời gian rồi tăng giá trị bước lên. Nếu giá trị bước lớn hơn 4, chúng ta đặt lại giá trị bước về 0.
Lưu ý rằng ví dụ này chỉ là một hướng dẫn đơn giản. Để điều khiển motor bước mượt mà nhất trên vi điều khiển STM32F407, bạn cần có kiến thức chuyên sâu về điện tử và lập trình nhúng.
相关推荐
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![crx](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)