LR分析

分析过程

  • 三元式表示
    三元式子:(状态栈,符号栈,输入符号串)
阅读全文 »

文法的直观概念和语言概述

当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。

以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,比如汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语,我们采用第2章所介绍的EBNF来表示这种句子的构成规则:

阅读全文 »

GCC全称GNU C Compiler,是以GPL协议发布的自由软件,其创始人理查德·马修·斯托曼是自由软件运动的精神领袖。

GNU 编译器套件包括 C、C++、Objective-C、Java、Ada 和 Go 语言前端,也包括了这些语言的库(如 libstdc++,libgcj等)

GCC 不仅支持 C 的许多“方言”,也可以区别不同的 C 语言标准;可以使用命令行选项来控制编译器在翻译源代码时应该遵循哪个 C 标准。例如,当使用命令行参数-std=c99 启动 GCC 时,编译器支持 C99 标准。

阅读全文 »

注释

;;;; 四个分号用于文件头注释
;;; 三个分号用于一大段特定代码的作用的描述
;; 某几行代码的功能性描述,注释与被注释的代码具有相同的缩进
; 用于单行注释

S-表达式

阅读全文 »

定义新函数

新函数一般用defun宏来定义。其基本结构为:
(defun name
“一些说明文字”
body-form*)

任何符号都可以作为函数名,但通常函数名仅包含字典字符和连字符,但在特定的命名约定里,其它字符也允许使用。例如+函数可以将一个或多个数字相加。

阅读全文 »

本地仓库

  1. 进入项目目录

  2. 版本库初始化

    1
    2
    $ git init
    Initialized empty Git repository in /home/mygit/test/learn-git/.git/
阅读全文 »

CentOS 7的启动过程

  1. BIOS加电自检
  2. 进入Boot Loader
  3. 加载Linux系统内核
  4. 启动初始化程序(前期版本System V init,CentOS7中使用systems,采用并发启动机制,提升开启速度),该进程为系统的第一个进程。
  5. systemd初始化系统,创建login进程。
  6. 用户登录,login进程创建shell进程。以后进程都是由shell衍生出来。
阅读全文 »

fgets函数用于从指定流读取指定字节数的字符,Ascii码字符1个字符占用1个字节,1个汉字占用多少字节因平台而异。

验证一个汉字占用几个字节:

1
2
char chinese[10] = "中文";
printf("%ld\n", strlen(chinese));
阅读全文 »

Vim学习笔记(一)

使用原厂配置

Vim -u NONE -N

-u NONE 让vim启动时不加载vimrc,插件也会被禁用

-N 不使用vi兼容模式

阅读全文 »

相同点

取余和取模当商为正数时是一致的,区别在于商为负数时
取余或取模的计算公式:
例如求 c = a%b

1
2
3
先求整数商x
第一步:x = [a÷b]
第二步:c = a - x*b

取余和取模的区别在于第一步,第二步一样。

不同点

x = [a÷b]
取余时:x向0取整
取模时:x向-∞取整

1
2
3
4
例如:
-7/4=-1.75
取余时:x=-1 余数为:-3
取模时:x=-2 模数为:1

关于取余运算符(%)
在c/c++, java环境下为取余
在python环境下为取模

0%